Поделюсь первыми впечатлениями от знакомства с шаблонами, а также в помощь тем, кто сам столкнется с натяжкой. Движок крайне мощный, содержит и умеет столько всего, что без подсказки разобравшихся много не будете знать, что такое уже есть в рабочем состоянии.
Впечатления
Пять последних шаблонов (Feminine Lingerie & Underwear, Fruit Gifts, Bridal Store, Organic Cosmetics, Electronics Online Store) от ТемплейтМонстров собраны хорошо. Все с помощью библиотек Impera CMS Template Constructor (обозначу TC) и TemplateMonster Impera Finery (обозначу TM), причем кроме первого шаблона из обозначенной пятерки остальные собраны с заметной опорой на библиотеку ТемплейтМонстров. Из-за чего обратное изучение (реверс инжиниринг) шаблона становится неудобным. Основные tpl-ки и вспомогательные htm-ки шаблона плотно используют библиотеку TM, та использует библиотеку TC, оттуда по обратной связи вызовы снова направляются на другой необходимый tpl-htm шаблона, тот зигзагом опять обращается к библиотеке TM. Работает схема отлично, страничка как бы само собирается по фрагментам, но понять потом при обратном изучении логику этих вызовов библиотек в перехлест одна на другую бывает непросто.
Шаблон Feminine Lingerie & Underwear в этом смысле собран понятнее, потому что реже опирается на TM, а больше на библиотеку TC. В этом шаблоне вызовов зигзагами можно сказать почти нет, ветка само сборки странички получается как бы линейной, и разбирая шаблон с общего макета страницы index.tpl, сразу видно, какие tpl-htm-ки подключаются, где они лежат и быстро можно посмотреть, что там делается.
В помощь
Для изученных шаблонов характерны особенности:
- файлы tpl - основные файлы шаблона (макеты каждой страницы)
- файлы htm - вспомогательные файлы, те же tpl только с другим расширением файла (макеты небольших фрагментов страниц)
Характерные вспомогательные папки в папке html:
- account - макеты фрагментов страницы личного кабинета
- cards - макеты карточек (товар, товар специальный, товар featured, публикация)
В списках статьи, новости, склады, медиа файлы - все они изображаются макетом карточки публикация.
- cart - макеты фрагментов страницы корзины (к мини блоку корзины на главной отношения не имеют)
- center - макеты разных фрагментов, которые от ситуации появляются в центральной части (всякие - сообщение ошибки, ошибка 404, успех, вступительный текст перед чем-либо, всякие блоки - хлебные крошки, сортировка товаров, листалка страниц, поделиться новостью)
- footer - макеты фрагментов подвала сайта
- forms - макеты основных форм (логин, регистрация, вспомнить пароль, обратная связь, позвоните мне)
- header - макеты фрагментов шапки сайта
-
layout - макеты компоновки страницы, модуль универсальных функций (смотри ниже) и переменных
-
предлагает глобальные функции (составлено на основе шаблона FeminineLU):
- compact_sum($sum, $rate) - вывести в компактном виде (то есть убрать копейки, если равны 0) сумму $sum по курсу $rate
- url($item) - вывести url записи $item (запись - это сведения о товаре, категории, бренде, статье и т.п.)
- image($item, $folder) - вывести url картинки для записи $item, размещенной в папке $folder относительно корня (например files/products/)
- product_image($item) - вывести url картинки для записи товара $item (то же что функция выше, только $folder нет нужды указывать, он считается равным files/products/)
- article_image($item) - вывести url картинки для записи статьи $item (то же что функция выше, только $folder считается равным files/images/articles/)
- news_image($item) - вывести url картинки для записи новости $item (то же что функция выше, только $folder считается равным files/images/news/)
- compact_sum($sum, $rate) - вывести в компактном виде (то есть убрать копейки, если равны 0) сумму $sum по курсу $rate
-
предлагает глобальные переменные (составлено на основе шаблона FeminineLU):
- $module_name - имя текущего модуля в нижнем регистре (например login)
- $is_on_404 - true когда произошла ошибка 404
- $is_404_in_content - true когда ошибка 404 смоделирована искусственно какой-то tpl-кой шаблона
- $is_on_unused - true когда открыли страницу, для которой отсутствует tpl-ка (например шаблон не рассчитан на такую функцию и ее tpl удалили)
- $is_on_category - true когда открыли страницу категории или бренда (список товаров)
- $is_on_product - true когда открыли страницу товара
- $quick_content - true когда страницу грузит аякс динамически (без перезагрузки основной страницы)
- $rate - рассчитанный курс для текущей валюты (равен rate_from / rate_to)
- $module_name - имя текущего модуля в нижнем регистре (например login)
-
предлагает глобальные функции (составлено на основе шаблона FeminineLU):
- left - макеты фрагментов левой колонки сайта
- order - макеты фрагментов страницы оформленного заказа
- product - макеты фрагментов страницы товара
- right - макеты фрагментов правой колонки сайта
Характерная схема само сборки страницы:
- движок от ситуации вызывает нужный tpl из папки html шаблона
- этот tpl вызывает модуль функций functions.htm из папки layout (если функции нужны)
- затем вызывает нужные ему вспомогательные htm-ки (из папок center, cards, а страницы корзины, кабинета, товара, заказа еще из своих папок cart, account, product, order, и страницы обратной связи, логина, регистрации и вспомнить пароль еще из папки forms)
- после tpl-ка отдает управление движку
- этот tpl вызывает модуль функций functions.htm из папки layout (если функции нужны)
- теперь движок вызывает общий макет страницы index.tpl, а также передает ему результат предшествующего шага
- этот макет вызывает модуль функций functions.htm из папки layout (если функции нужны)
- затем вызывает модуль заголовков head.htm из библиотеки TC
- затем вызывает модуль предразметочных необходимостей requirements.htm (всякие обязательные скрипты движка) из папки layout
- затем вызывает фрагменты компоновки из папки layout (если такие были вынесены в отдельные макеты)
- поочередно каждый макет компоновки вызывает свои макеты фрагментов
- шапка сайта фрагменты из папки header
- левая колонка фрагменты из папки left
- центральная колонка (вставляет в себя результат рисовки предшествующего шага движка)
- правая колонка фрагменты из папки right
- подвал сайта фрагменты из папки footer
- шапка сайта фрагменты из папки header
- поочередно каждый макет компоновки вызывает свои макеты фрагментов
- этот макет вызывает модуль функций functions.htm из папки layout (если функции нужны)
- движок отдает получившуюся страницу в браузер клиента