Доброго времени суток всем! В данном посте хочу рассмотреть некоторую особенность, которая появилась в Joomla, начиная с версии 3.7 — это дополнительные поля в материалах. Считаю это полезным дополнением к стандартному компоненту материалов com_content. Ранее приходилось из-за нескольких полей устанавливать тяжеловесные конструкторы контента (CCK) и все для того, чтобы пользователю было легче работать в админке. В данной статье как раз рассмотрим как создать дополнительные поля в материалах и как вывести их во внешнем сайте.
Также, как и материалы поля объединяются в группы, это своего рода категории. Для того,чтобы создать группу полей идем в админке Материалы -> Группы полей. Создаем группу. Далее, создаем сами поля. Здесь уже по более опций, пройдемся по основным.
Вкладка «Основное»
Заголовок — сюда вводим заголовок поля, вписываем такой, чтобы вам было удобно ориентироваться по созданным полям в админке, а их может быть много.
Тип — выбираем тип поля: Текст (text), Текстовое поле (textarea), Url, Календарь и т.д. Не буду здесь разбирать в подробностях, т.к. ничего сложного в них нет и настраиваются все по одному принципу.
Имя — вводим алиас поля латиницей. Это своего рода индефикатор поля и он должен быть уникальным.
Название — сюда вводим то название поля, которое мы хотим видеть на сайте. Вообще по умолчанию, когда заполняете заголовок данное поле заполняется автоматически, но вы можете его переопределить.
Описание — вводим описание поля.
Обязательно — если данное поле будет обязательным при создании материала, то ставим переключатель «Да».
Значение по умолчанию — можете ввести то значение, которое должно быть подставлено по умолчанию в данное поле.
Фильтр — здесь выбираем параметр фильтрации вводимых данных, например, вы хотите, чтобы данное поле принимало только целые числа. Данную фильтрацию можно определить и глобально в настройках плагина данного типа поля.
Максимальная длина — можете ограничить длину вводимых символов.
Категория — в правой части экрана выбираем категорию, для которых должно быть доступно создаваемое поле.
Вкладка «Параметры»
Placeholder — это подсказка для поля. Например, можете ввести подсказку для вашего контент менеджера.
CSS-класс для показа — можете ввести свой класс поля для переопределения стиля в css.
Заголовок поля — управляет выводом заголовка поля на сайте.
Автоматическое отображение — вот эта полезная опция на мой взгляд. Есть предустановленные настройки (на момент написания статьи значения не переведены на русский язык):
- After Title — показать поле после заголовка;
- Before Display — показать перед текстом;
- After Display — показать после текста;
- Do not automatically display — не показывать автоматически поле. Данная опция предусматривает вывод поля в шаблоне сайта посредством кода. Об этом поговорим ниже.
Все, сохраняем поле и идем создавать материалы. В материалах той категории что вы присвоили полям появится новая вкладка с именем группы полей. У меня она называется «Поля«.
А вот как данное поле выглядит на сайте.
Название поля я сделал жирным через стили CSS. Сразу скажу, что через автоматический вывод у нас нет возможности кастомизировать шаблон вывода полей. Это возможно сделать без автоматического вывода.
Вывод дополнительных полей материалов в шаблоне Joomla — ручной режим
Итак, если вам не подходит предустановленные настройки вывода полей или вы хотите просто править html-шаблон полей, то есть возможность вывести поля в любом месте шаблона материала и обрамить их какими угодно тегами. Для вывода поля в ручном режиме необходимо сначала отключить автоматический показ поля в параметрах. Если этого не сделать, то поля у вас будут просто дублироваться.
Далее создаем переопределение шаблона вывода материала для типа «Article«. Если у вас еще нет переопределения шаблона материалов com_content, то идем в админке Расширения -> Шаблоны — > В правой колонке «Шаблон» выбираем ваш шаблон -> Создать переопределение -> com_content -> article.
После этих действий в папке вашего шаблона должна появиться следующая директория с файлом Ваш шаблон -> html -> com_content -> article — default.php. Вот с данным файлом и будем работать. Открываем файл шаблона материала и в нужном месте вставляем код для вывода поля. Я вставил до кода вывода текста:
<?php echo $this->item->text; ?>
Код вывода поля
<?php
// GET CUSTOM FIELDS
$myCustomFields = array();
foreach($this->item->jcfields as $field) {
$myCustomFields[$field->name] = $field->value;
}
// RECOVER CUSTOM FILED NAME
if (isset($myCustomFields['field-1']) and !empty($myCustomFields['field-1'])) : ?>
<div class="field">
<div class="field__name">Название поля:</div>
<div class="field__value"><?php echo $myCustomFields['field-1']; ?></div>
</div>
<?php endif; ?>
Вместо field-1
подставляете ваш псевдоним поля (первый скриншот настроек, поле «Имя»). Вот как это выглядит на примере — демо.
Если вы хотите вывести более одного поля, то нет необходимости заново копировать цикл «foreach». Данный цикл необходимо объявить выше вывода полей. А второе поле вывести, например, так:
<?php // RECOVER CUSTOM FILED NAME
if (isset($myCustomFields['field-2']) and !empty($myCustomFields['field-2'])) : ?>
<div class="field">
<div class="field__name">Название поля:</div>
<div class="field__value"><?php echo $myCustomFields['field-2']; ?></div>
</div>
<?php endif; ?>
Вместо field-2
— название вашего поля.
На этом завершу. Всем удачи, всем пока!