Создание дополнительного поля формы к статье Joomla 3

Опубликовано admin - вт, 07/23/2013 - 20:55

В предыдущей статье ("Создание дополнительного элемента формы к статье Joomla 2.x") я рассказывал о создании дополнительных полей в Joomla 2.5, в этой статье этот же вопрос будет расcмотрен в Joomla 3.x!

Функции создаваемого плагина аналогичны функциям плагина в предыдущей статье:

  • Добавление дополнительного поля к статье в бакэнде сайта;
  • Добавление дополнительного поля к статье в фронтэнде сайта;
  • Сохранение данных вновь создаваемого поля в базе данных;
  • Вывод полей с использованием собственной разметки на страницах сайта (до вывода текста статьи);

Пример

Для примера будут браться следующие данные "структура", "температура", "вкус":

При этом данные будут доступны как в бакэнде так и во фронтэнде сайта.

Админ раздел

joomla

Сайт

Сайт

Framework

Опять же как впредыдущей статье все изменения основаны на Joomla Фреймовике, а именно на его событиях (подробное описание каждого можно найти в предыдущей статье "Создание дополнительного элемента формы к статье Joomla 2.x").

  • onContentPrepareForm()
  • onContentPrepareData()
  • onContentAfterSave()
  • onContentAfterDelete()
  • onContentPrepare()

База данных

Наш плагин будет использовать таблицу #__user_profiles и столбец "user_id" как "article_id".

База данных

Структура нашего плагина остаётся такой же как для Joomla 2.5:

── plugins/content/rating
   ├── language
   │   └── en-GB
   │       ├── en-GB.plg_content_rating.ini      [language file]
   │       └── en-GB.plg_content_rating.sys.ini  [language file]
   ├── rating
   │   ├── rating.css  [CSS for the rendered rating table]
   │   └── rating.xml  [Form description]
   ├── rating.php   [Plugin hooks]
   └── rating.xml   [Manifest]

Установочный файл

Установчный файл можно оставить таким же как и для Joomla 2.5, замените версию на 3.x

Языковой файл

Языковой файл можно оставить таким же как и для Joomla 2.5

    CSS

    CSS файл можно оставить таким же как и для Joomla 2.5

    Дополнительные поля формы

    Элементы формы остаются такими же как и в Joomla 2.5

    Хуки плагина

    Главный файл плагина 'rating.php' содержит все хуки что и для Joomla 2.5, за исключение хука "onContentPrepareData", который я решил полностью удалить из его отказа работать в Joomla 3.0.x, хотя в 3.1.1 он работает так как описано в документации:

    Все хуки будет содержаться следующие объекты:

    • $context
    • $data – параметр, содержащий данные полей формы
    • $article (JTableContent) содержит статью

    __construct

    Конструктор загружает языковой файл:

    onContentPrepareForm

    onContentPrepareForm в Joomla 3.x отличается от того жу хука в Joomla 2.x:

    onContentPrepareData onContentPrepareData удалена и перенесена полностью в функцию "onContentPrepareForm". onContentAfterSave onContentAfterSave сохраняет данные дополнительных полей в базу данных.

    onContentAfterDelete onContentAfterDelete выполняется при удалении статьи, удаляет данные из дополнительных полей.

    onContentPrepare

    onContentPrepare при подготовке вывода статьи, переменна $params содержит параметры статьи, $this->params - параметры плагина. Эта функция выводит дополнительные пол я в начале статьи на сайте. Функция отличается от её аналога для плагина в Joomla 2.5.

    Вместо патча, используемого в Joomla 2.5, необходимо венсти несколько изменений в файл edit.php, добавить вкладку:

    и добавить дополнительне поля из файла "rating/rating.xml" вставив их после вкладки "Права доступа к материалу":

    для Joomla 3.1.x послдений код нужно заменить несколько другим вариантом:

    Незабывайте что файл, в котрый мы только что внесли изменения перезаписывается при обновлении Joomla! Для того, чтобы это не прроизошло, нужно скопировать файл "edit.php" в администраторский раздел по адресу "\administrator\templates\isis\html\com_content\article\", в моём случае для шаблона "isis", для того чтобы узнать шаблон зайдите в менеджер шаблонов:

    joomla

     

    Теги

    Оценка

    1 votes with an average rating of 5.

    На разработку сайта! Скидки до 20%!