Типовая структура шаблонов для Alto CMS

Эта статья написана в продолжение статьи Базовый скин (шаблон) для Alto CMS, рассчитана на тех, кто проектирует и верстает шаблоны для Alto CMS.

Работа над скином start-kit движется, и уже забрезжил на горизонте финальный огонек. Что сделано за это время:
1) Более-менее «устаканилась» структура папок и именование файлов (об этом и пойдет, в основном, речь в этой статье).
2) Удалось избавится от множества лишних файлов и js-скриптов.
3) Чуть больше стало настроек самого скина: верхний баннер стал виджетом, логотип и главное меню можно менять в настройках, не трогая шаблоны.

Кого интересует то, что в итоге получается, скин можно скачать здесь. Кому интересны детали, ход разработки и/или если есть желание обсудить, тех прошу под кат.
Общие принципы
Сейчас сформировалась вот такая структура папок, как на картинке. Возможно, что-то еще по мелочи меняться будет, но не думаю, что сильно. Мне очень хотелось соблюсти баланс между двумя задачами – с одной сделать структуру более понятной и простой, с другой – максимально гибкой и настраиваемой. Как это получилось – судить вам.

Сейчас большинство шаблонов в папке tpls раскидано по подпапкам. И имя файла шаблона соответствует названию подпапки. Например, файл menu.main.tpl лежит в подпапке menus, файл topic.show.tpl лежит в подпапке topics и т.д.

Исключение пока составляет подпапка tpls/actions – ее структура осталась прежней (во всяком случае, пока).

В общем, по имени файла шаблона (в большинстве случаев) можно понять, где этот файл лежит. Осталось, правда, некоторое количество файлов в папке tpl, которые пока никуда не определены. Пока думаю, как быть с ними. Склоняюсь к тому, чтобы их разместить в подпапке, скажем,common или system. Если у кого-то будут идеи на этот счет – с радостью выслушаю.
Модальные окна
Модальные окна, как и прочие крупные элементы, лежат в своей папке. И каждое модальное окно лежит в отдельном файле. Напомню, что для работы с модальными окнами используются «родные» механизмы бутстрапа. Модальные окна (как HTML-элементы) имеют свой id, и он жестко связывается с названием файла. Например, модальное окно, которое находится в файле modal.auth.tpl, имеет id такой: id="modal-auth", а окно в файле modal.blog_delete.tplid="modal-blog_delete".

Т.к. модальные окна имеют свои id, а подключаться они могут в любом шаблоне, то возможна ситуация, когда одно и то же окно подключается несколько раз. Дабы избежать этой коллизии, рекомендуется шаблоны окон подключать директивой не include, а include_once:
{include_once file="modals/modal_auth.tpl"}

Виджеты

Как-то так привыкли многие, что виджеты — это то, что в сайдбаре выводится. На самом деле виджет — это более широкое понятие. Виджетом, по сути, может стать любой элемент выводимой страницы. Сейчас, кроме блоков, выводимых в сайдбаре, виджеты формируют так называемый toolbar (это кнопочки у правого края экрана), а также выводятся в начале страницы в виде статичной картинки или слайд-шоу. Все виджеты находятся, как и положено в подпапке widgets и имеют префикс widget.
Контент – топики (статьи) и поля
У нас есть три режима работы с контентом: создание/редактирование, вывод списка, отображение единицы контента (топика или статьи). Для этих трех режимов предназначены шаблоны с суффиксами .edit.tpl, .list.tpl и .show.tpl, лежащие в папках topics и fields. И модифицируя эти шаблоны, можно настраивать вывод контента для разных режимов.

Но это еще не все! Как известно, в Alto CMS можно задавать собственные типы контента. И в новой структуре есть возможность автоматически сопоставлять шаблон редактирования/вывода с нужным типом контента. Поясню на примере.

Допустим, вы создаете тип контента «review». И в подпапку topics вы можете положить шаблоны topic.type_review.edit.tpl (для создания и редактирования), topic.type_review.list.tpl (для отображения списком) и topic.type_review.show.tpl (для полного отображения). И именно они будут использоваться для работы с топиками типа «review». И это без всякой правки движка, без дополнительных плагинов и прочих сложностей. Для тех типов контента, для которых нет «родных» шаблонов, будут использоваться файлы по умолчанию типа topic.type_default.show.tpl.

Вот, совсем кратенько, о новой структуре шаблонов. И подчеркну: новая структура вовсе не предполагает, что нельзя будет работать со старыми шаблонами, разработанными для LS/Alto прежних версий. Они будут работать, как прежде, обратную совместимость никто не отменяет! Единственный нюанс — для корректной работы LS-шаблонов может потребоваться активация плагин совместимости, который идет в комплекте с движком. Но при создании новых следует опираться уже на новые правила.

Вот, как-то так. И, как обычно, жду ваших отзывов, пожеланий, предложений.

Похожие статьи


8 комментариев

0
Вадим, спасибо. Было бы здорово, если бы вы написали отдельно общие рекомендации — как лучше кастомизировать дефолтный скин, чтобы не поломать ничего в движке с одной стороны, и может быть сэкономить время и силы. Про review — отличный пример.
+2
Разумеется, рекомендации такие будут. Тем более, что сейчас закладываются очень хорошие возможности для кастомизации — для разных типов статей, блогов, для категорий. Но сначала, все ж, релиз хочется выпустить стабильный. А уже потом…

Но если есть какие-то конкретные вопросы (или просто «хотелки») — спрашивайте, пишите. А новый скин в первом приближении пощупать руками можно здесь: altocms.ru/blog/skins/554.html
0
Ой, ссылку не ту дал, демо здесь: demo.altocms.ru/start-kit/index/new/
0
Тем более, что сейчас закладываются очень хорошие возможности для кастомизации — для разных типов статей, блогов, для категорий. Но сначала, все ж, релиз хочется выпустить стабильный. А уже потом…

Супер, очень ждем…
0
скажите планируется ли платная версия (или дополнения) без привязки к домену?
Суть: не очень то охота платить за расширения и т.д., а потом ещё и домен будет отслеживаться…
В полностью открытом коде будут релизы? без ioncube…
0
Движок открытый: github.com/altocms/altocms

Насчет привязки к домену не понял. Движок «из коробки» ставится куда угодно без всякой привязки. Но авторы плагинов сами решают — платно, бесплатно, открытый код или ioncube
0
Тут имеется ввиду привязка работы плагинов к одному домену, на котором стоит движок AltoCMS и предложение без этого обойтись.
0
Привязка плагинов к домену — это инициатива авторов платных плагинов, защита от несанкционированного распространения. И тут уж авторам никто диктовать не может, каждый сам определяет политику распространения
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.