Современная, быстрая и удобная система управления сайтом

Схема создания шаблона

Любой новый шаблон лучше всего начинать с какого-то рабочего каркаса. В качестве основы вы можете взять 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 имеет практическую направленность и её цель не усложнять, а упростить работу вебмастера.