Tôi đang cố gắng thêm một trường đơn giản vào mỗi mục #__content và tôi đã rất cẩn thận làm theo hướng dẫn tại Thêm trường tùy chỉnh vào các thành phần cốt lõi , thay thế "nội dung" cho "liên hệ". Bây giờ tôi có một plugin có thể cài đặt bao gồm thành công tab / trường trên biểu mẫu chỉnh sửa Mục nội dung quản trị viên và hoạt động tuyệt vời, ngoại trừ tính năng "tiết kiệm" phiền phức đó.
Tham chiếu duy nhất để lưu là (một lần nữa, nội dung thay vì liên hệ):
Các trường bổ sung được tải từ tệp form / contact.xml trong thư mục plugin. Điều quan trọng là các trường này nằm trong thành phần trường có thuộc tính tên được đặt thành "params". Nếu bạn không đặt tên thuộc tính này, các trường sẽ xuất hiện trong trang quản trị nhưng các giá trị sẽ không được lưu.
Thực tế là lưu ý cảnh báo này tồn tại, gợi ý cho tôi rằng Joomla nên biết các trường ở đó và mã lõi xử lý nó, nhưng vì nó không lưu, tôi tự hỏi liệu có nên thêm một sự kiện nào nữa không.
Đây là lĩnh vực đơn giản tôi cần - vô hình với người dùng, nhưng dù sao cũng rất quan trọng và không nơi nào cần CCK để lưu trữ.
Điều gì sai / thiếu đang ngăn không cho trường tùy chỉnh được lưu?
Cập nhật: Hy vọng ngoài hy vọng rằng trường tùy chỉnh đã được lưu trữ trong cơ sở dữ liệu, tôi đã thêm một cột vào bảng #__content có cùng tên và đã thử - không gặp may.
gdp.php
class plgContentGdp extends JPlugin {
protected $autoloadLanguage = true;
function onContentPrepareForm($form, $data) {
$app = JFactory::getApplication();
$option = $app->input->get('option');
switch($option) {
case 'com_content':
if ($app->isAdmin()) {
JForm::addFormPath(__DIR__ . '/forms');
$form->loadFile('content', false);
}
return true;
}
return true;
}
}
/forms/content.xml
<?xml version="1.0" encoding="UTF-8"?>
<form>
<fields name="params" >
<fieldset name="params" >
<field
name="content_myfield"
type="text"
label="PLG_CONTENT_GDP_MYFIELD"
/>
</fieldset>
</fields>
</form>
Kết xuất HTML (không có nhãn)
<div class="tab-pane active" id="attrib-params">
<div class="control-group ">
<div class="controls">
<input
type="text"
value=""
id="jform_params_content_myfield"
name="jform[params][content_myfield]"
class=""
aria-invalid="false"
>
</div>
</div>
</div>