Элемент из различных кастомных полей 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. На самом деле, не знаю буду ли когда-то так делать, но пусть будет как шпаргалка.

Ссылки и благодарности

joomlaportal.ru

zaurmag.ru