Вопросы и ответы
Вебмастеру
Схема создания шаблона
Любой новый шаблон лучше всего начинать с какого-то рабочего каркаса. В качестве основы вы можете взять default-шаблон, после отработаете свой вариант.
Приступать к созданию шаблона можно после того, как освоена админ-панель. Это несложно для любого пользователя, но нужно понимать, что многие возможности MaxSite CMS доступны прямо из админ-панели без какого-либо программирования. Например типовые задачи: размещение счетчиков, подключение рекламы, настройка вывода и т.п.
Всегда работайте с копией default-шаблона (или своего каркаса). Если стоит задача его изменить, то сделайте копию и работайте уже с ней. Это гарантирует, что ваша работа не потеряется при обновлении MaxSite CMS.
Перед тем, как приступать к работе, желательно уже понимать какие части шаблона за что отвечают. Это позволит двигаться последовательно.
CSS-фреймворк
На начальном этапе, наверное стоит всё-таки определиться какой вы будете использовать css-фреймворк. Если вы новичок, то я советую не менять UniCSS, а потратить немного времени на его изучение и использовать именно его. Это позволит избежать тотальной переделки всех css-стилей.
В будущем, когда появится опыт, изменить css-фреймворк не составит труда. В любом случае следует понимать, что в шаблоне используется html-верстка, а значит есть сильная завязка на css-классы.
Следует также учесть, что работа с CSS потребует знания и Sass. Когда-то раньше мы использовали Less, но он сильно отстал в развитии, поэтому практически все вебмастера перешли на Sass. Если вы никогда не работали с Sass, то самое время это сделать.
Main-шаблон
Main-шаблон — это каркас сайта, поэтому он отрабатывается первым. По возможности шаблон должен иметь несколько main-шаблонов, чтобы у пользователя была возможность выбора. Как правило используются минимальные варианты:
- правый сайдбар (обычный)
- левый сайдбар
- без сайдбара
Верстка модульной сетки сильно завязана на css-классы.
Общий дизайн и типографика
После того, как модульная сетка выстроена, нужно отработать общий дизайн сайта: фон, цвет текста, его размер, гарнитура, ссылки и т.д. Это нужно сделать на начальном этапе, поскольку изменения носят глобальный характер.
Разбиение на компоненты
Определитесь с используемыми компонентами. Не нужно встраивать шапку и подвал в main-шаблон. Вместо этого сделайте их отдельными компонентами. На начальном этапе достаточно в компоненте разместить «голую» html-верстку, чтобы добиться необходимого дизайна. После этого можно уже решить, должен ли компонент иметь свои опции.
Также не следует разбивать большой компонент на мелкие, если они должны располагаться в строгом порядке. Не заставляйте пользователя угадывать этот порядок.
Если компонент получается очень большим, то можно разместить его в отдельных файлах прямо в каталоге компонента.
Вывод заголовков
Для этого используются info-top-файлы. Обязательно сделайте типовой вариант вывода (в опциях — «Обычный»), и только после этого создайте новые варианты заголовков. Поскольку возможных вариантов очень много, то двигайтесь от того, что будет точно востребовано. Делать info-top-файлы про запас особой необходимости нет.
Настройка виджетов
Дизайн виджетов настраивается с помощью css-классов. Поскольку вывод виджетов автоматизирован, то MaxSite CMS автоматически прописывает ряд css-классов для каждого виджета и сайдбара. Если стоит задача изменить вид какого-то определенного виджета, то посмотрите его html-разметку и используйте её для css-стилей.
Так же учитывайте, что многие виджеты имеют html-код, который определён в его плагине. Не нужно его менять, научитесь пользоваться только возможностями CSS.
Блоки одиночной записи
Настройте остальные блоки одиночной записи (page). Здесь следует отметить два блока: похожие записи и комментарии.
Поскольку часто стоит задача изменить их html-код, то вы можете перенести их unit-файлы из shared в каталог шаблона. Также можно использовать type_foreach-файлы, если это возможно.
Вывод full-страниц
Настройте типовой вывод страниц рубрик, меток, архивов и т.п. Как правило вся работа будет заключаться в создании info-top-файлов.
Служебные страницы
Не забывайте проверить вывод служебных страниц: логин, регистрация, восстановление пароля и т.д. Как правило они не требуют много работ и хватает правки css-стилей.
Главная страница
На начальном этапе не используйте юниты главной, а настройте типовой вариант вывода. Скорее всего он будет совпадать с ранее созданным для full-страниц. Но, возможно, для главной потребуется какой-то свой вариант.
Уже после этого можно приступить к работе с юнитами. Я рекомендую сразу использовать модули юнитов (@modules). Это позволит не запутаться в структуре юнитов. Работать с юнитами проще всего как с отдельными блоками, как это обычно принято в лэндингах. То есть модуль — это полноценный блок для главной, даже если в нём будет несколько юнитов.
Простые юниты, скорее всего не представят трудностей, но вот вывод записей — более сложная задача. Здесь потребуется более глубокое понимание работы last-pages.php
совместно с Page_out и Block_pages. Тут многое зависит от задачи, поэтому лучше начать с каких-то простых вещей, после уже углубляться. Это не просто мощные классы: они развиваются и постоянно появляются новые возможности (например можно формировать свои функции). Так что на их изучение есть смысл потратить какое-то время. После этого они очень здорово сокращают время разработки шаблона.
Если вы работали с другими CMS
Если у вас есть опыт работы с другими CMS, например WordPress, то вы должны понимать их отличие от MaxSite CMS.
В первую очередь следует отметить, что MaxSite CMS по своей структуре ближе к современным php-фреймворкам, где url-запрос продвигается до уровня application (приложения). Здесь это шаблон, а точнее его type-файл. Всё остальное (type_foreach, main, info-top, компоненты) — всего лишь помощники для type-файла.
В WordPress любой url-запрос порождает обращение к базе данных и массу дополнительных действий, направленных на то, чтобы получить данные для шаблона. И уже в самом конце этой цепочки, управление передается шаблону, который и оперирует заранее полученными данными. Если для страницы требуются другие данные, то в шаблоне нужно ещё раз запустить цепочку получения данных, то есть получается дополнительная работа.
Более подробно вопрос рассмотрен в статье Отличия MaxSite CMS от WordPress с точки зрения верстки шаблона
В MaxSite CMS данные получаются в самом шаблоне: в type-файле. Чтобы им управлять, помимо опций, можно использовать простые type_foreach-файлы. В крайнем случае можно просто скопировать type-файл из shared-каталога. То есть здесь сразу получаются ровно те данные, которые нужны для вывода, без излишней работы.
Другой момент — вывод записей. В WordPress — это скрытый цикл TheLoop, который обрастает смесью функций и html-разметки. Здесь нет деления на модульную сетку, компоненты и непосредственный вывод данных. Более того каждый тип данных требует отдельного файла в каталоге шаблона. Именно поэтому почти каждый такой шаблон представляет собой большое нагромождение файлов.
В MaxSite CMS сложный php-код вынесен в shared-каталог, но при этом представляет собой обычный php-foreach, что снимает любые ограничения внутри файла: здесь нет необходимости вывода через специальные функции (хотя они тоже есть — для форматированного вывода).
Еще принципиальное отличие заключается в том, что WordPress накладывает на шаблон очень жесткие ограничения на имена файлов, но при этом система предлагает очень скудный функционал для разработчика: почти всё приходится придумывать самостоятельно. В MaxSite CMS все эти вещи хорошо развиты и направлены на то, чтобы упростить создание шаблона насколько это возможно. Во многих случаях используется описательный подход, который скрывает сложный php-код: ini-опци/мета, php-шаблонизатор, Page_out-вывод и юниты главной.
Если вы переходите с другой CMS, то учитывайте такие моменты — MaxSite CMS имеет практическую направленность и её цель не усложнять, а упростить работу вебмастера.