Загрузка...

Начиная с Joomla 3.7, дополнительные поля для материалов стали частью ядра Joomla. Если вы используете последнюю версию Joomla, данная статья для вас не актуальна. Всё началось с того, что в комментариях к статье «Новые функции Joomla 2.5» один из пользователей написал, что есть способ добавить дополнительные поля к материалам Joomla не касаясь базы данных и ядра. Суть его заключается в следующем (все действия описываются для Joomla 1.7): 1) Открываем файл administrator\components\com_content\models\forms\article.xml 2) В самый конец группы полей attribs (примерно 335 строка) добавляем собственное поле: 3) В макете материала templates\ваш_шаблон\html\com_content\article\default.php добавляем вывод данных из нашего поля. В нужном месте пишем следующий код:

На этом всё. Добавляем новую статью. В параметрах отображения материала видим наше поле: Дополнительные поля для материалов без хаков ядра. Вводим в поле информацию. Сохраняем статью. Идем на сайт. Смотрим эту статью. Видим информацию введенную в новое поле: Дополнительные поля для материалов без хаков ядра. Ну разве не волшебство? :-) Тайна фокуса. Но давайте всё-таки разберемся, как такое возможно. Данная фишка, как оказалось, довольно известна. Но лично я о ней не знал и решил, что ее описание здесь будет не лишним. Как же получилось сохранить информацию, не создавая дополнительных полей в базе данных? Оказывается, всё просто. Если мы заглянем в базу, то увидим, что в таблице материалов Joomla есть столбец attribs, в котором сохраняются все параметры отображения статьи. Все те, которые мы видим справа, когда добавляем материал в админке. Дополнительные поля для материалов без хаков ядра. Все эти параметры считываются как раз из файла administrator\components\com_content\models\forms\article.xml. Таким образом, добавив в этот файл всего несколько строчек, мы получаем дополнительное поле любого типа, которое хранится в поле attribs таблицы _content базы данных Joomla. Ну а дальше проверяем наличие в нашем поле данных и если таковые имеются, выводим их в макете статьи. Дополнительная информация. Параметры добавляемого поля: Name – название поля. Придумываем сами. Type – тип поля. Т.к. я создаю текствовое, то использовал inputbox. Другие типы можно посмотреть выше в этом же файле. Label – текст, который написан перед полем. Придумываем сами. Description – описание, появляющееся во всплывающей подсказке. Придумываем сами. Class – CSS-класс для оформления поля. Указываем такой же, как и для других полей этого типа. Size – размер поля. Указываем такой же, как и для других полей этого типа.

{

}