Как вывести дополнительные поля в Joomla 3 автоматически и в ручном режиме?

Приветствую Вас на сайте Joom4all, тема сегодняшней статьи будет связана с дополнительными полями Joomla 3.

Что такое дополнительные поля и как с ними работать думаю, знает каждый веб-разработчик знакомый с системой управления контентом Joomla 3. Однако хочу заметить, что не каждый знает, каким образом они выводятся на страницах сайта и как выводить дополнительные поля в ручном режиме.

Для вывода дополнительных полей на страницах сайта предусмотрено четыре стандартных способа, три из которых выводят поля в автоматическом режиме и только один подразумевает ручной вывод дополнительных полей (вкладка «Параметры» в редакторе поля):

Способы отображения дополнительных полей - автоматические и ручной

Способы отображения дополнительных полей

Давайте рассмотрим каждый метод подробнее, а Вы уже сами для себя определитесь какой подходит именно для Вашего сайта.

After Title

Данный метод подразумевает автоматическое отображение поля при помощи события onContentAfterTitle. Что это значит? А значит это то, что все дополнительные поля, у которых в качестве метода отображения установлено значение «After Title» будут выведены после заголовка материала, но перед информационным блоком (метками, датой создания, автором и т.п.).

Если посмотреть в код файла шаблона статьи, или например блога категории то можно заметить там строки, отвечающие за вывод информации при помощи события onContentAfterTitle:

Код шаблона материала который отвечает за вывод дополнительных полей после заголовка при помощи события onContentAfterTitle

Before Display

Данный метод отображения дополнительных полей подразумевает их вывод перед основным текстом материала (в том числе перед изображением полного текста), но после блока с информацией (если таковой присутствует) при помощи события onContentBeforeDisplay:

Код отвечающий за вывод дополнительных полей при помощи плагина onContentBeforeDisplay

After Display

Последний из автоматических режимов отображения дополнительных полей Joomla 3. Данный метод как Вы наверно уже догадались, подразумевает вывод полей после основного текста материала в самом конце документа, при помощи плагина onContentAfterDisplay:

Вывод дополнительных полей после основного текста в самом конце документа при помощи плагина onContentAfterDisplay

Вывод дополнительных полей в ручном режиме

Последний и, на мой взгляд, более правильный режим отображения дополнительных полей это ручной режимНе показывать автоматически» в параметрах отображения). Именно в ручном режиме мы не привязаны к конкретной области документа и можем сами решать, где и когда вывести, то или иное дополнительное поле. Но есть в этом методе и определенная сложность – внесение в файлы определенного кода.

Код не слишком сложный, можно даже сказать достаточно простой. Все что нам требуется это создать пустой массив и записать в него все имеющиеся значения полей для текущего материала. После этого можно выдергивать из уже заполненного массива значения того или иного поля и выводить их в любом месте страницы.

Кроме того используя ручной режим отображения дополнительных полей можно оформлять поля по своему усмотрению, в автоматическом режиме такой тонкой настройки каждого конкретного поля добиться увы не удастся.

Теперь давайте перейдем от слов к делу и выведем некоторые дополнительные поля вручную. Для этого как я уже и говорил, создаем пустой массив и заполняем его значениями:

<?php
// Вывод дополнительных полей
$additionalFields = array(); //Создаем пустой массив, имя переменной выставляем по своему усмотрению
foreach($this->item->jcfields as $field) {/*Пробегаемся циклом по всем полям текущего материала*/
$additionalFields[$field->name] = $field->value; /*И добавляем их значения в наш ранее созданный массив*/
} 
// Теперь можно использовать значения массива для вывода пользовательских полей в указанных местах?>

Как видите, нет ничего сложного, массив заполнен значениями дополнительных полей и теперь можно использовать эти значения для вывода полей в нужных местах страницы. Все что от нас потребуется это значение имени поля для его идентификации и функция echo(). В качестве примера давайте выведем поле с именем price в нужном нам месте:

<? if (isset($additionalFields['price']) and !empty($additionalFields['price'])) :?>
<div class="price">
<span>Распространение: </span><p><?php echo $additionalFields['price']; ?></p>
</div>
<?php endif; ?>

Что тут происходит? Сначала мы запускаем обычное условие, где проверяем, установлена ли наше поле (isset($additionalFields['price'])), а так же есть ли в нем данные (!empty($additionalFields['price'])). Если результат проверки истина (то есть поле существует и не пустое), тогда выводим его значение при помощи функции echo (echo $additionalFields['price'];).

Вот таким не хитрым образом мы вывели значение дополнительного поля в Joomla 3. Чтобы было понятно, откуда я взял имя поля со значением «price» посмотрите на скриншот ниже:

Имя поля которое мы будем использовать для его вывода в ручном режиме

Аналогичным образом выводим оставшиеся дополнительные поля. Причем хочу отметить, что повторно создавать массив и заполнять его значениями не нужно, ибо зачем, ведь он у нас уже заполнен. В качестве примера посмотрите на кусок кода, с помощью которого выводятся дополнительные поля:

Пример кода который выводит дополнительные поля в ручном режиме

На этом, пожалуй, все. Теперь Вы знаете, каким образом можно выводить дополнительные поля на страницах сайта. До скорых встреч.

Добавить комментарий