Zira CMS переезжает на GitHub. Подробнее...

Создание темы

Создать собственную тему для Zira CMS совсем не сложно. Чтобы ускорить процесс разработки, вы можете взять за основу любую из существущих тем.

Темы Zira CMS хранятся в папке themes. Все темы используют библиотеку Bootsrap 3 для создания, так называемой, адаптивной вёрстки. Благодаря этому, страницы сайта прекрасно смотрятся как на десктопах, так и на мобильных устройствах. Подключается библиотека автоматически, при вызове метода layout_head() в файле схемы.

Тема должна иметь четыре схемы - схема с левой и правой колонкой (layout.php), схема с левой колонкой (layout-left.php), схема с правой колонкой (layout-right.php) и схема без колонок (layout-wide.php). Система выбирает соответствующий файл в зависимости от настроек.

Но перед тем, как начать, сначала нужно создать мета-файл темы (theme.meta), из которого система считывает информацию о теме. Данный файл представляет из себя файл конфигурации в формате ini и должен содержать следующие строки:

 

[meta]
name = "Моя тема"
preview = screenshot
author = Zira

Как видно из примера, файл должен начинаться с секции [meta]. Далее указывается название темы, файл скриншота и автор. Скриншот должен иметь расширение "jpg".

Эта информация используется системой при выводе списка установленных тем.

Как уже говорилось выше, тема включает в себя четыре основных макета, каждый из которых отвечает за отображение тех или иных ячеек. Так, например, схема с левой колонкой имеет ячейку "sidebar_left", но не имеет ячейки "sidebar_right". Соответственно, схема с правой колонкой имеет ячейку "sidebar_right", но не имеет ячейки "sidebar_left". Ячейки используются системой для вывода содержания виджетов. В какой ячейке будет отображаться виджет задается полем "Расположение" в окне настроек виджета.

Отображение ячейки обеспечивается вызовом соответствующего метода в файле схемы.

Список методов:

  • layout_head() - ячейка HEAD (подключает нужные файлы css и скрипты)
  • layout_body_top() - начало тега BODY
  • layout_header() - шапка
  • layout_sidebar_left() - левая колонка
  • layout_sidebar_right() - правая колонка
  • layout_content_top() - содержимое перед основным материалом
  • layout_content() - основной материал
  • layout_content_bottom() - содержимое после основного материала
  • layout_footer() - подвал
  • layout_body_bottom() - конец тега BODY

В файле макета вызов метода должен распологаться между тегами <?php и ?>. Например,

 

 <?php layout_content(); ?>

Данные методы осуществляют вывод содержимого, а не возврат. Поэтому использовать функцию echo не требуется.

Метод layout_content() предназначен для вывода основного материала страницы. Он формируется системой в зависимости от типа страницы. При этом, содержимое генерируется в отдельном шаблоне. Так, например, страницы записей используют шаблон page.php, в котором формируется отображение статьи. Получившийся результат, затем подставляется в текущую схему, при вызове метода layout_content().

Другие типы страниц могут использовать собственный шаблон при формировании основного материала.

 

Zira CMS, при необходимости, позволяет включить в тему дополнительные файлы схем. Для этого, создайте папку layouts и поместите туда файл схемы.

Если при генерации страницы какой-либо шаблон не будет найден в папке используемой темы, то система автоматически подключит шаблон из темы по-умолчанию (Zira). Таким образом, ваша тема может не содержать шаблоны панели управления (папка dash) и система при этом будет функционировать нормально.

Файлы стилей css хранятся в папке assets/css. Файл main.css отвечает за внешний вид сайта, файл editor.css - за отображение текста в редакторе, а файл desk.css - за отображение окон панели управления (если последний отсутствует, то будет использован соответствующий файл из темы по-умолчанию).

Помимо стилей темы, система подключает css-файлы модулей. В основном, в этих файлах содержатся правила, которые должны использоваться вне зависимости от темы. Однако, вы можете переписать и включить их в файл main.css вашей темы.

При необходимости, система также подключает стили слайдера и галереи. Их тоже можно переписать, но тут нужно учитывать один момент. Если включено кэширование, то системные css-файлы кэшируются в один файл. При этом, они будут выводиться до подключения файлов темы. Если-же кэширование отключено, то системные css-файлы подключаются по-востребованию и могут распологаться ниже файлов темы. Это значит, что в некоторых случаях, для перезаписи правил css, может потребоваться повышение приоритета с использованием ключевого слова !important. Рекомендуется тестировать тему, как при включённом кэшировании, так и без него.

 

Начиная с версии 0.5.2 файл main.css выводится последним даже при включённом кэшировании!

Если у вас возникнут какие-либо трудности при создании темы, вы всегда можете задать вопрос на форуме поддержки Zira CMS.

Комментарии(4)

  • Alex

    Очень понравилась CMS. Красивая и современная, хорошие толковые модули, еще и бесплатно. Но есть одно но, какое-то упрощение планируется ? Вот сверстал Html шаблон, достаточно сложный не на бутстрапе, не типичный, и я так понимаю натянуть не выйдет. Может планируете добавить упрощенную систему? к примеру использование разных функций как к примеру на Modx Revo, т.е. я просто закинул html шаблон и раскидал по теме разные чанки, ну или как пример getsimple, закинул шаблон - раскидал разные функции.

    08.04.2018   0   0  
  • Dro1d .Ru Dro1d .Ru   Alex

    Честно говоря, не вижу никаких проблем "натянуть" любой дизайн на движок. Базовые знания php нужны, но это не значит, что нужно писать какой-либо код, достаточно понимать что он делает, чтобы при внесении правок, не сделать ошибку. Bootstrap нужен, т.к он широко используется в системе, да и с ним помоему, работать даже легче, чем без него.
    С modX работал, но что-то мне она показалась неудобной. Хотя, это моё личное, субъективное мнение 😌✌ На одном форуме была дискуссия по поводу шаблонизаторов, но я придерживаюсь точки зрения, что ничего лучше самого php быть не может, ведь он изначально именно для этого и создавался, чтобы интерпретатор мог парсить вставки в html-коде. Я понимаю, что я рассуждаю с точки зрения программиста, но чтобы разобраться как работают чанки и сниппеты в modX нужно всеравно потратить время на изучение документации :)

    08.04.2018   1   0  
  • Виктор

    Не программисту натянуть готовый html шаблон на CMS будет практически невозможно. Кроме файлов layouts в корне темы есть ещё и папки к модулям с кучей файлов. В файлах полно непонятных конструкций вида:
    <?php if (!empty($records)) Zira\View::renderView(array(
    'class' => 'records',
    'records' => $records,
    'settings' => array()
    ), 'zira/list'); ?>
    CMS интересная, но после 2х недель мучений с адаптацией темы хочется плюнуть на это дело.
    Надо быть программистом, чтобы адаптировать верстку к CMS, логика и представление смешаны.
    Без подробного мануала с объяснением всех переменных движка и какие фрагменты кода откуда берутся, просто не обойтись.

    06.05.2017   3   0  
  • Dro1d .Ru Dro1d .Ru   Виктор

    Да, базовые знания PHP нужны, согласен. Но если вы научитесь разбираться в коде - это будет вам плюс!
    На самом деле код совсем не сложный ;)

    06.05.2017   5   5  
, чтобы оставить комментарий