Breadcrumbs

Элемент из различных кастомных полей 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