Поделюсь первыми впечатлениями от знакомства с шаблонами, а также в помощь тем, кто сам столкнется с натяжкой. Движок крайне мощный, содержит и умеет столько всего, что без подсказки разобравшихся много не будете знать, что такое уже есть в рабочем состоянии.
Впечатления
Пять последних шаблонов (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 (если функции нужны)
- движок отдает получившуюся страницу в браузер клиента