Общая информация и первые шаги
Для обработки шаблонов в проекте LinkorCMS был создан специальный класс под названием Starkyt и специальный синтаксис.
Одна инсталляция LinkorCMS может содержать несколько шаблонов, устнавливать новые шаблоны очень легко, достаточно просто скопировать папку шаблона в папку «templates». Чтобы начать создавать новый шаблон рекомендуем делать это на основе темы IgrimTheme. Это шаблон по умолчанию который идет в дистрибутиве системы. Скопируйте папку IgrimTheme и переименуйте ее названием вашего шаблона. После этого в настройках сайта установите шаблон сайта на новую созданную тему.
Основа шаблона
Папка с шаблоном содержит множество файлов типа html. theme.html это главный шаблон с которого обычно и начинается модификация темы. Однако то что он главный в шаблоне не означает что он самый верхний в этапе компиляции. В системе существует еще один файл общего шаблона страницы, в котором прописывается генерируемая автоматически шапка страницы. Поэтому theme.html всегда начинается и заканчивается тегом body. Чтобы изменить дизайн сайта иногда достаточно просто отредактировать theme.html и style.css.
Синтаксис
Шаблоны имеют блочную структуру и компилируются иерархически начиная от главного файла theme.html и вниз, до шаблонов модулей и блоков.
Блоки
Основу синтаксиса шаблонов составляют компилируемые блоки. Блок обладает рядом свойств и полей. Блок содержит переменные, дочерние блоки, текст блока может загружаться из файла, текст блока может содержать другие блоки, блок может быть включен или выключен, блок может быть множественным и иметь алиас(асевдоним).
Все параметры и поведение блока устанавливаются программистами в коде программы, задача дизайнера грамотно их расставить в шаблоне.
Множественный блок компилируется много раз, каждая компиляция множественного блока может иметь свои переменные, свой файл или текст шаблона, и субблоки.
Вот пример описание блока в шаблоне:
{content_box}Текст блока{/content_box}
Ясно что в этом случае дизайнер не знает как будет вести себя блок, иногда текста блока может не быть и он может загружаться автоматически, подставляться из программы или в него может быть загружен другой шаблон. Просто смотрите, если содержания блока нет, то его там скорее всего и не должно быть.
Переменные блоков
Для вставки данных в шаблон используются переменные. Переменные всегда привязаны к каким то блокам. Чтобы использовать переменные блока необходимо его открыть. Нельзя получить переменные блока вне его контекста. Переменные множественного блока могут меняться много раз во время его компиляции.
Чтобы вставить значение переменной нужно в фигурных скобках указать имя блока или его псевдоним и после точки написать имя переменной. Например:
{content_box}
{content_box.title} = {content_box_alias.title}
{/content_box}
Переменные как и блоки могут быть разных типов, переменные разных типов устанавливаются программистами. Переменные могут содержать только данные которые вставляются без обработки шаблонизатором и могут содержать имя шаблона который будет загружен и обработан шаблонизатором. Для дизайнера это не столь важно т.к. в любом случае в переменной будут данные.
Блок с проверкой переменной
В шаблоне можно создать блоки html кода которые будут вставляться в зависимости от значения какой-то переменной. Блок с проверкой переменной выглядит как обычный блок, у него тоже есть открывающая и закрывающая части, только вместо имени блока указывается имя блока и через двоеточие имя проверяемой переменной.
Переменная будет преобразована к логическому типу так что если в ней 0, логическое значение false или пустая строка то вернется значение Лож и блок не выполниться, в любом другом случае блок выполниться.
Блоки с проверкой переменных удобно использовать когда необходимо скрыть какую то часть шаблона которая не используется в данный момент, или скрыть ссылки которые должен видеть только администратор.
Пример блока с проверкой переменной:
{page:site_email}
Вебмастер:{page.site_email}
{/page:site_email}
Файл init.php
Каждая тема может содержать файл инициализации init.php. Этот файл выполняется при создании шаблонизатора и может использоваться для его настройки, подключения файлов стилей и JavaScript, добавления мета тегов, изменения Doctype, а так же добавления новых вычисляемых переменных для использования в шаблоне.