Я намагаюся додати єдине, просте поле до кожного елемента #__content, і я дуже ретельно дотримувався підручника щодо Додавання спеціальних полів до основних компонентів , замінюючи "вміст" на "контакт". Зараз у мене встановлений плагін, який успішно включає вкладку / поле у формі редагування елемента вмісту адміністратора, і працює чудово, за винятком цієї примхливої функції "збереження".
Єдине посилання на Збереження (знову ж таки, вміст замість контакту):
Додаткові поля завантажуються з файлових форм / contact.xml у каталог плагінів. Важливо, щоб ці поля були в елементі полів із властивістю імені, встановленим "парами". Якщо ви не встановите цю назву властивості, поля з’являться на сайті адміністратора, але значення не будуть збережені.
Той факт, що ця застережлива записка існує, говорить про те, що Joomla повинен знати, що поля є, і основний код обробляє його, але оскільки це не економить, мені цікаво, чи є ще одна подія, яку я повинен додати.
Ось просте поле, яке мені потрібно - невидиме для користувача, але, тим не менш, критичне і ніде не потребує CCK для його зберігання.
Що неправильного / відсутнього, що перешкоджає збереженню користувацького поля?
Оновлення: Сподіваючись надію, що користувацьке поле зберігається в базі даних, я додав стовпець до однойменної таблиці #__content і спробував - не пощастило.
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>
Наданий HTML (без мітки)
<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>