По умолчанию, шаблоны, идущие в комплекте с редакциями RadicalMart, отображают группы полей в виде вкладок на странице товара.
Универсального способа, позволяющего гибко управлять отображением, нет. Для гибкого вывода полей и работе с их внешним видом понадобится переопределить вывод макета страницы через шаблон Joomla и внести необходимые правки.
Ниже будут рассмотрены типовые задачи.
Путь к макету страницы товара в переопределении разметки:
Вы должны создать пользовательские группы и поля определенного типа, назначенные в эти группы, а также настроить отображение в настройках поля. Подробнее об этом можно прочитать в следующей статье:
При этом, содержимое вкладок отображается вот так: (в примере на скриншоте только одна новая вкладка, без поля «с этим товаром покупают»)
Рис. 1.1. Отображение пользовательской группы полей RadicalMart по-умолчанию
Как видим, в области контента слева выводится заголовок группы полей, справа - значения полей. В примере, одного поля. Зачастую возникает ситуация, когда нужно отключить заголовок группы поля (fieldset).
После этой строки идёт цикл, в котором выводится название группы полей и содержимое. Нам нужно решить две задачи:
Убрать из закладок группы полей related-group и komplektatsiya (это понадобится в примерах ниже)
Поле Оплата, гарантия и доставка. Добавить проверку на совпадение с алиасом oplata-group этой группы полей и пропускать вывод названия поля, чтобы растянуть отображение вкладки во всю ширину.
В примере ниже (шаблон на базе Uikit) рассматривается две группы полей (fieldset), имеющих следующие алиасы: related-group и oplata-group.
Мы сделали проверку: если алиас группы полей равняется oplata-group и related-group, то тогда пропускать код с выводом заголовка поля. В остальных случаях заголовок выводить.
В итоге результат будет таким:
Рис. 1.2. Отключаем название группы поля и выводим содержимое во всю ширину.
Рассмотрим вывод определенного поля в произвольном месте на примере артикула:
<?php if (!empty($this->product->code)): ?> // проверяем артикул на пустоту
<div class="your-class"> // задаём класс блоку с артикулом <span class="your-class-for-title"> // задаём класс надписи "Артикул" <?php echo Text::_('COM_RADICALMART_PRODUCT_CODE'); ?> // константа для надписи "Артикул" </span> <span class="your-class-for-code"> // задаём класс блоку значения артикула <?php echo $this->product->code; ?> // выводим значение артикула </span> </div> <?php endif; ?> //закрываем if
Ниже рассмотрим пример, когда нужно вывести определенное поле в формате: заголовок поля и содержимое поля.
Алиас группы полей: tours. Алиас поля: dop-uslugi Пример:
Рассмотрим сценарий, когда нужно брать некоторую часть полей и выводить в одном месте, другую часть - в другом. Например, у вас выводится 30 параметров и необходимо разбить их в 2 колонки: половину вывести слева, вторую часть справа.
Либо нужно брать первые 3 параметра из группы полей и выводить в произвольном месте, например, блок в верхней части экрана.
Для этого понадобится использование массива данных.
Рассмотрим ситуацию, когда нужно изменить внешний вид выводимым полям. Например, обернуть в тег и добавить класс uk-label.
Группа полей. До изменений
Группа полей. Изменение внешнего вида
Исходный вариант выводит значения списком через запятую. Наша задача — убрать запятую добавить полям дополнительную разметку. Это может быть <ul> список или лейбл.
Настройки поля выглядят следующим образом: (нажмите на скриншоты для увеличения)
Поле Комплектация. Значения
Поле Комплектация. Страница товара. Отображение через запятую
<?php foreach ($this->product->fieldsets as $fieldset): if ($fieldset->alias === 'komplektatsiya') : ?> <div class="uk-h3"><?php echo $fieldset->title; ?></div>