MODX - Як додати додаткові поля до ресурсів, ІТ Шеф
Стаття, де розглянемо спосіб додавання додаткових полів до ресурсу без використання TV.
Для зберігання додаткових даних використовуватимемо не системну ( site_content ), а свою таблицю. Наприклад, що має назву site_content_extend . Для забезпечення роботи з нею за допомогою xPDO створимо компонент (робочу модель). Як назву компонента виберемо, наприклад,extendsource.
Для представлення додаткових полів в адмінці, а саме на сторінках створення та редагування ресурсів, напишемо плагін.Якщо вам ця дія не потрібна, то створення цього елемента можна опустити.
Додавання таблиці до бази даних
Додавання нових об'єктів у базу даних можна здійснити, наприклад, за допомогою інструментаphpmyadmin.
Як приклад створимо таблицю site_content_extend , яка має такі поля:
SQL дамп таблиці "modx_site_content_extend" можна завантажити за цим посиланням.
Створення директорії для компонента
Створимо в директорії /core/components каталог extendsource.
Після цього створимо ще кілька папок, щоб вийшов наступний шлях:
Створення XML схеми компонента
У каталозі schema компонентаextendsourceпомістимо файл extendresource.mysql.schema.xml з таким вмістом:
XML схема в MODX Revolution - це опис об'єктів бази даних компонента та їх зв'язків. Вона потрібна тільки для того, щобвиконати генерацію робочої моделі компонента.
Генерування моделі компонента
На цьому етапі створимо модель. Для виконання цієї дії скористаємось скриптом parse_schema.php.
Принцип роботи зі скриптом parse_schema.php
Після виконанняскрипта в каталозі "core/components/extendresource/model/" будуть створені php файли (модель компонента).
MODX Revolution – Крок 1. Введення назви компонента в утиліту parse_schema.php MODX Revolution – Крок 3. Відкриття файлу parse_schema.php з браузера
Принцип роботи з компонентом extendsource
Приклади, в яких показано, як можна здійснити отримання значень розширених полів ресурсу та збереження даних у них.
Збереження даних у розширені поля ресурсу
Фрагмент php-коду, який можна використовувати в сніпеті або плагіні для встановлення значень розширеним полям ресурсу (views, keywords, level):
Отримання значень розширених полів ресурсу
Висновок значень розширених полів ресурсу на сторінку можна здійснити у різний спосіб.
1 варіант -за допомогою плагіна (наприклад,ExtendResource).
Код плагінаExtendResource(php):
В якості події, при якій відбуватиметься виконання плагіна, встановимоOnLoadWebDocument. Ця подія виникає після завантаження документа, але перед тим, як теги MODX будуть оброблені.
Основна дія плагінаExtendResourceполягає в установці плейсхолдерів extend.views, extend.keywords та extend.level.
Виведення значень розширених полів поточного ресурсу (у чанці чи шаблоні):
Інший варіант отримати значення додаткових полів - цескористатися сниппетом (наприклад, getExtendResource ):
Використання сніпетуgetExtendResourceдля отримання значення розширених полів ресурсу (наприклад, keywords ):
Подання розширених полів ресурсу в адмінці
Для того щоб представити розширені поля ресурсу на сторінках створення та редагування ресурсу, необхідностворити плагін (наприклад,ExtendedResource). Плагін буде виконувати дії при настанні 2 подій:OnDocFormPrerenderтаOnDocFormSave. Тому на сторінці створення плагіна у вкладці «Системні події» необхідно встановити галочки навпроти них.
MODX Revolution – Встановлення подій, які слід відстежувати цей плагін
ПодіяOnDocFormPrerenderвиникає перед тим, як у менеджері буде завантажено форму редагування ресурсу. Дану подію будемо використовувати для додавання розширених полів views, keywords та level у форму створення та редагування ресурсу.
ПодіяOnDocFormSaveвідбувається після того, як ресурс буде збережений у менеджері через форму редагування. Дана подія будемо використовувати для збереження значень розширених полів views, keywords та level.
Даний плагін (ExtendedResource) потрібен тільки для того, щоб з даними полями можна було взаємодіяти при створенні та редагуванні ресурсів в адмінці. Якщо це вам не потрібно, цей плагін можна не додавати в систему MODX Revolution.
MODX Revolution – Відображення розширених полів на сторінках створення та редагування ресурсів