Элемент из различных кастомных полей Joomla. (тест)
Попробую сделать элемент из различных кастомных полей Joomla 3.8, выводить буду группой полей.
Кастомных полей мало на выбор, но создать их можно много. А вот несколько значений в одном поле создать нельзя, ну может пока.
Попробуем создать элемент, из различных полей и объеденить их.
Создаю поля
Любые кастомные поля. Осмысленно заполняю алиасы. Можно было в дальнейшем использовать и ID, но с алиасами мне показалось удобнее.
В настройках указываю по умолчанию - не отображать, т.к. выводить буду с помощью кнопки группы полей прям в материале.
Переопределяю макет
Макет группы кастомных полей по адресу: components\com_fields\layouts\fields\render.php в свой шаблон.
Редактирую переопределённый макет группы полей
// после стандартных проверок (которые уже были) и перед выводом группы полей по умолчанию.
// Проходим по всем полям и если alias совпадает с нашим, сохраняем значения поля в переменную
foreach ($fields as $field) {
if ($field->name == 'alias' && $field->value !== '') {
$var = $field->rawvalue;
$stop_def_filds = true; // нужна для остановки дефолтной группы полей
}
if ($field->name == 'alias-2' && $field->value !== '') {
$var2 = $field->rawvalue;
$stop_def_filds = true; // нужна для остановки дефолтной группы полей
}
}
// если $var есть то
if (isset($var) && !empty($var)) {
// формируем элемент из всех переменных выше.
return; // Останавливаем
}
Т.к. многие поля у меня имеют значения "По умолчанию", то в деволтном выводе они тоже могли выводится. Использую переменную $stop_def_filds
и допишу к существующей проверке в foreach
:
<dl class="fields-container">
<?php foreach ($fields as $field) : ?>
<?php // If the value is empty do nothing ?>
<?php if (!isset($field->value) || $field->value == '' || isset($stop_def_filds)) : ?>
<?php continue; ?>
... далее как было
PS. На самом деле, не знаю буду ли когда-то так делать, но пусть будет как шпаргалка.