Я пытаюсь добавить одно простое поле к каждому элементу #__content, и я очень тщательно следовал учебному пособию « Добавление пользовательских полей в основные компоненты» , заменяя «контент» на «контакт». Теперь у меня есть устанавливаемый плагин, который успешно включает вкладку / поле в форме редактирования элемента контента администратора и прекрасно работает, за исключением этой надоедливой функции «сохранения».
Единственная ссылка на Сохранение (опять же, контент вместо контакта):
Дополнительные поля загружаются из файла forms / contact.xml в каталоге плагинов. Важно, чтобы эти поля были в элементе fields со свойством name, установленным в «params». Если вы не установите это имя свойства, поля появятся на сайте администратора, но значения не будут сохранены.
Тот факт, что эта предупреждающая заметка существует, подсказывает мне, что 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>
Ответы:
АГА! момент - в столбце #__content больше нет
params
столбца, поэтому необходимо выполнить следующие настройки, чтобы плагин работал с компонентами / таблицамиattribs
вместоparams
(который, как представляется, только #__content начиная с версии 3.2):fields
имя на "attribs"fieldset
имя на что-то уникальное (я использовал имя плагина)/forms/content.xml
ан-GB.plg_content_pass.ini
источник