Данная статья является кратким и емким описанием того, где и как правильно редактировать шаблоны материалов JBZoo. При этом в будущем у вас не будет проблем с обновлением приложения. Т.е. все описанное ниже — это не хак, а обычное дело при кастомизации внешнего вида вашего сайта. Настоятельно рекомендуется прочитать статью об основах кастомизации JBZoo. Внимание! Далее в статье путь media/zoo/applications/jbuniversal/templates/catalog/
будет заменен на .../
.
Файлы разметки для материалов могут быть двух типов — общие или индивидуальные для типа материала. Шаблонизатор сначала проверяет существование папки для типа .../renderer/item/<ПСЕВДОНИМ ТИПА МАТЕРИАЛА>/
.
Если не находит, то берет шаблоны по умолчанию из директории .../renderer/item/
.
Обычно в качестве общих шаблонов лежат примеры, готовые для быстрого копирования. Рекомендуем вам использовать всегда индивидуальные шаблоны, это сделает ваш код независимым и гибким.
full.php — детальная страница материала.
teaser.php — если материал отображается как элемент категории.
related.php — связанные материалы (по умолчанию).
subcategory_item.php — если материал отображается как элемент подкатегории.
compare.php — сравнение товаров (должен быть пустой), важен факт существования.
submission.php — шаблон формы подачи материалов.
favorite.php — для списка избранного.
feed.php — текст описания для RSS.
Системные файлы:
metadata.xml — название шаблонов и их описание. Отображается в панели управления.
positions.config — файл хранит настройки всех позиций для всех шаблонов всех типов материалов в Zoo. Лучше файл не изменяйте, иначе только на свой страх и риск. Этим по умолчанию занимаются сами Zoo и JBZoo.
positions.xml — описание всех позиций для всех шаблонов (подробнее смотрите ниже).
index.html — стандартная заглушка Joomla на случай, если htaccess не работает.
Каждый шаблон материала Zoo должен в себе содержать только основную разметку, детали дизайна и возможно какой-то общий текст. В разметку включаются позиции, в которые потом вставляются необходимые элементы. Это как раз то, что вы настраиваете в панели управления.
Вывод позиции в шаблоне выглядит следующим образом (проверка на пустоту и вывод, если есть что показать).
<?php if ($this->checkPosition('position-name')) : ?> <ul><?php echo $this->renderPosition('position-name', array('style' => 'list')); ?></ul> <?php endif; ?>
array(’style’ => ’list’) — это необязательный аргумент, через который можно указать стиль вывода каждого элемента.
Доступны следующие стили позиции:
default — по умолчанию выводится как есть (не обязательно указывать).
block — обрамление тегами <div>.
comma — обрамление тегами <span> и разделение через «,».
hyphen — разделение через короткое тире (минус).
inline — обрамление тегами <span>.
list — обрамление тегами <li> для создания списка.
paragraph — обрамление тегами <p> для создания параграфов.
pipe — разделение через символ «|».
submission.block — обязательно указывать для позиций формы подачи материалов.
Примеры можно найти тут components/com_zoo/renderer/element/
Свои файлы можете положить в эту папку, тогда они не изменятся и не сотрутся при обновлении
.../renderer/element/
Если вы хотите добавить свою позицию, то это лучше делать в индивидуальном шаблоне материала. Откройте файл
.../renderer/item/<ПСЕВДОНИМ ТИПА МАТЕРИАЛА>/positions.xml
В нем вы увидите следующее:
<?xml version="1.0" encoding="utf-8"?> <renderer> <positions layout="full"> <!-- начало блока шаблона full, описание его позиций --> <position name="title">Title</position> <!-- Системное название позиции задается в атрибуте name, в теге указывается имя позиции для панели управления --> <position name="image">Image</position> <position name="company">Company</position> <position name="list">List</position> <position name="text">Text</position> </positions> <positions layout="related"> <!-- Тоже самое, но указывается что шаблон можно использовать для связных элементов --> <position name="title">Title</position> <position name="photo">Photo</position> <position name="rating">Rating</position> <position name="contacts">Contacts</position> </positions> </renderer>
Измените позиции на свое усмотрение. Вставьте код позиции в шаблон, например так:
<?php if ($this->checkPosition('position-name')) : ?> <?php echo $this->renderPosition('position-name'); ?> <?php endif; ?>
Зайдите в панель управления и перетащите на нужную позицию свои элементы. Каждый элемент может иметь свои настройки рендеринга.
.../renderer/item/<ПСЕВДОНИМ ТИПА МАТЕРИАЛА>/metadata.xml
<?xml version="1.0" encoding="utf-8"?> <metadata> <layout name="full"> <!-- тип шаблона, в атрибуте name--> <name>Full</name> <!-- Имя шаблона для панели управления --> <description>Full layout</description> <!-- Описание шаблона для панели управления --> </layout> <layout name="teaser" type="related"> <!-- тоже самое, в атрибуте type можно указать особенность использования шаблона (related, feed, submission, compare) --> <name>Teaser</name> <description>Teaser layout</description> </layout> </metadata>
Вы можете обратиться на наш специальный форум техподдержки JBZoo. Если у вас нет активного аккаунта со знаком «плюс» в тарифном плане, то вы можете задать свой вопрос в одном из этих разделов или на любой из наших контактов. Форум специально предназначен для JBZoo, приоритет и скорость ответа там выше.