Темы ( Themes )
# Введение
Темы определяют внешний вид Вашего сайта или веб-приложения, используя файлы. Поэтому вы можете использовать любую систему контроля версий для работы с ними. На этой странице Вы найдете подробное описание работы с темами в October. Больше информации о страницах, чанках, макетах и файлах содержимого можно найти в соответствующих статьях.
Темы - это папки, которые находятся по умолчанию в папке /themes и могут содержать следующие объекты:
Объект | Описание |
---|---|
Страницы | страницы сайта. |
Фрагменты | содержит повторно используемые куски HTML-разметки. |
Макеты | определяет каркас страницы. |
Содержимое | текст, HTML или Markdown (opens new window) блоки, которые можно редактировать независимо от страницы или макета. |
Asset files | файлы вроде изображений, CSS и JavaScript файлов. |
# Структура папок
Ниже Вы можете увидеть пример структуры папок темы. Каждая тема в October представлена отдельной папкой. Пример содержимого папки с темой "website".
themes/
website/ <=== Тема начинается здесь
pages/ <=== Папка со страницами
home.htm
layouts/ <=== Папка с макетами
default.htm
partials/ <=== Папка с фрагментами
sidebar.htm
content/ <=== Папка с контентом
intro.htm
assets/ <=== Папка с файлами
css/
my-styles.css
js/
images/
Активная тема задается параметром activeTheme в файле config/cms.php или Theme Selector на странице настроек System > CMS > Front-end Theme, переопределяя значение в файле config/cms.php.
# Подпапки
October поддерживает одноуровневые подпапки для страниц, фрагментов, макетов и файлов содержимого (папка assets может содержать любую структуру). Это упрощает организацию крупных сайтов. Ниже Вы можете увидеть пример структуры папок, где папки страниц и чанков содержат подпапку blog, а папка content - подпапку home.
themes/
website/
pages/
home.htm
blog/ <=== Подпапка
archive.htm
category.htm
partials/
sidebar.htm
blog/ <=== Подпапка
category-list.htm
content/
footer-contacts.txt
home/ <=== Подпапка
intro.htm
...
Укажите имя подпапки перед именем шаблона, чтобы отобразить его содержимое. Пример отображения чанка из подпапки:
{% partial "blog/category-list" %}
Примечание: Пути к шаблонам всегда абсолютны. Если в чанке Вы отображаете другой чанк из той же подпапки, то Вам все равно нужно указать имя подпапки.
# Структура шаблона
Шаблоны страниц, фрагментов и макетов могут включать в себя 3 раздела: конфигурация, PHP код и Twig разметка, которые отделены друг от друга при помощи ==
.
Пример:
url = "/blog"
layout = "default"
==
function onStart()
{
$this['posts'] = ...;
}
==
<h3>Blog archive</h3>
{% for post in posts %}
<h4>{{ post.title }}</h4>
{{ post.content }}
{% endfor %}
# Раздел конфигурации
В разделе конфигруации задаются параметры шаблона. Поддерживаемые параметры специфичны для различных шаблонов и описаны в соответствующих статьях документации. Раздел конфигурации использует простой INI формат (opens new window), где значения строковых параметров заключены в кавычки. Пример раздела конфигурации для шаблона страницы:
url = "/blog"
layout = "default"
[component]
parameter = "value"
# Раздел PHP кода
Код в разделе PHP выполняется каждый раз перед тем, как шаблон будет отображен. Раздел PHP не обязателен и его содержимое зависит от типа шаблона, где он определен. Он может содержать необязательные открывающие и закрывающие PHP теги, чтобы поддерживать подстветку синтаксиса в редакторах. Открывающие и закрывающие теги всегда должны быть заданы с новой строки.
url = "/blog"
layout = "default"
==
<?
function onStart()
{
$this['posts'] = ...;
}
?>
==
<h3>Blog archive</h3>
{% for post in posts %}
<h4>{{ post.title }}</h4>
{{ post.content }}
{% endfor %}
В разделе PHP Вы можете задать только функции и ссылаться на пространство имен с помощью ключевого слова use
. Другой PHP код не разрешен потому, что во время парсинга страницы происходит конвертация раздела в класс. Пример:
url = "/blog"
layout = "default"
==
<?
use Acme\Blog\Classes\Post;
function onStart()
{
$this['posts'] = Post::get();
}
?>
==
# Раздел Twig разметки
Раздел Twig определяет разметку, которая будет отображена согласно шаблону. Здесь Вы можете использовать функции, фильтры и Twig теги, предоставляемые October, а также все оригинальные функции, фильтры и теги Twig (opens new window). Содержимое в разделе Twig зависит от типа шаблона (страница, макет или фрагмент). Вы можете найти больше информации о конкретных Twig объектах далее в документации.