Як зберегти власні поля в основних компонентах


22

Я намагаюся додати єдине, просте поле до кожного елемента #__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>

Я пам’ятаю, що бачив це в дії з назвою поля НЕ, встановленою на парами та додатковим полем; але це трохи некрасиво і потребує певного обслуговування після кожного оновлення. Наскільки мені подобається, щоб такі речі працювали, щоб ви отримали результат, чи замість цього ви розглядали можливість використання підходу плагіна користувача?
Ріккардо Зорн

Мої дані - це вміст, а не користувач ... лише підручник для контактів
ВВП

Вибачте, що я не зрозумів, просто підключіть подію onContentAfterSave та обробіть економну частину
Ріккардо Зорн

Дуже дякую за це. Я намагаюся розібратися в цьому найкращу частину дня. Я зовсім новачок у розробці плагінів Joomla, тому я покладаюся на приклади, щоб змусити мене йти. Чи можу я просто підтвердити інформацію про файли мовних рядків - вони йдуть із файлами плагінів або в існуючій мовній папці? чи це не має значення?

Я завжди розміщую файли туди, де розміщується розширення Joomla, тобто папку / languages ​​у цьому випадку.
ВВП

Відповіді:


19

АГА! момент - #__content більше не містить paramsстовпця, тому наступні коригування повинні бути виконані, щоб плагін працював з компонентами / таблицями, attribsа не params(який видається лише #__content станом на v3.2):

  1. Змініть fieldsназву на "атриби"
  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>

uk-GB.plg_content_pass.ini

COM_CONTENT_GDP_FIELDSET_LABEL="My Custom Fields"

чи можу я задати питання з цього приводу тут? чи я повинен створити нове запитання? це пов'язано з цим? В основному мені потрібно знати, як додати більше вкладок до перегляду редагування статті. Здається, що форми / extra.xml дозволяє створити лише одну вкладку. Я спробував кілька варіантів розбиття файлу xml на набори польових, але не пощастило. Лише одна вкладка.
Jonnypixel

Вам слід створити нове запитання щодо цього та додати посилання на це питання / відповідь, якщо вони пов’язані.
Богоуе
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.