Как сохранить пользовательские поля в компонентах ядра

Я пытаюсь добавить одно, простое поле к каждому элементу #__content, и я очень внимательно следил за учебником в добавлении пользовательских Поля для основных компонентов , подставляя «контент» для «контакта». Теперь у меня есть устанавливаемый плагин, который успешно включает в себя вкладку /поле в форме редактирования содержимого элемента администрирования и прекрасно работает, за исключением этой досадной «сохраненной» функции.

Единственная ссылка на Saving (опять же, содержимое вместо контакта):

  

Дополнительные поля загружаются из файловых форм /contact.xml в   каталог плагинов. Важно, чтобы эти поля находились в полях   элемент с свойством 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>
21 голос | спросил GDP 21 J0000006Europe/Moscow 2014, 21:21:35

1 ответ


19

AHA! момент - #__content больше не имеет столбца params, поэтому необходимо внести следующие корректировки для работы плагина с компонентами /таблицами с attribs вместо params (который выглядит только как #__content по версии 3.2):

  1. Измените имя fields на "attribs"
  2. Измените имя fieldset на что-то уникальное (я использовал имя плагина)
  3. Добавьте строку языка для вкладки на странице редактирования контента

/forms/content.xml

<form>
    <fields name="attribs" >
        <fieldset name="gdp" >
            <field
                name="myfield"
                type="text"
                label="PLG_CONTENT_GDP_MYFIELD"
                />
        </fieldset>
    </fields>
</form>

ан-GB.plg_content_pass.ini

COM_CONTENT_GDP_FIELDSET_LABEL="My Custom Fields"
ответил GDP 22 J0000006Europe/Moscow 2014, 17:33:58

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132