101 Темы (themes)
Темы определяют внешний вид вашего сайта или веб-приложения, созданного на October. Темы в October все полностью в файлах и могут управляться с помощью любой системы контроля версий, например - Git. Эта страница дает вам высокоуровневое описание тем в October. Вы можете найти больше информации о страницах, чанках, макетах и файлах содержимого в соответствующих статьях.
Активная тема CMS устанавливается с помощью параметра
activeTheme
в файлеapp/config/cms.php
.
Введение
Темы - это папки, которые находятся в папке /themes по умолчанию. Темы могут содержать следующие объекты.
- Страницы - представляют собой страницы сайта.
- Чанки - содержит повторно используемые куски HTML-разметки.
- Макеты - определяет каркас страницы.
- Содержимое - текст, HTML или Markdown блоки, которые можно редактировать отдельно от страницы или макета.
- Асетсы - файлы-ресурсы такие как изображения, 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/
Подпапки
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 код, and Twig разметка. Разделы отделяются с помощью символов ==
. Пример:
url = "/blog"
layout = "default"
==
function onStart()
{
$this['posts'] = ...;
}
==
<h3>Blog archive</h3>
{% for post in posts %}
<h4>{{ post.title }}</h4>
{{ post.content }}
{% endfor %}
Раздел конфигурации
Раздел конфигруации устанавливает параметры шаблона. Поддерживаемые параметры конфигурации специфичны для различных шаблонов CMS и описаны в соответствующих статьях документации. Раздел конфигурации испоьзует простой INI формат, где значения строковых параметров заключены в кавычки. Пример раздела конфигурации для шаблона страницы:
url = "/blog"
layout = "default"
[component]
parameter = "value"
Раздел PHP кода
Код в разделе PHP выполняется каждый раз перед тем, как шаблон будет отображен. Раздел PHP не обязателен для всех шаблонов CMS и его содержимое зависит от типа шаблона, где он определен. Раздел 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 код не разрешен в разделе PHP. Это потому что раздел PHP конвертируется в класс, когда обрабатывается страница.
Пример ссылки на пространство имен:
url = "/blog"
layout = "default"
==
<?
use Acme\Blog\Classes\Post;
function onStart()
{
$this['posts'] = Post::get();
}
?>
==
Раздел Twig разметки
Раздел Twig определяет разметку, которая будет отображена согласно шаблону. В разделе Twig вы можете использовать функции, фильтры и теги Twig, предоставляемые October и все оригинальные функции, фильтры и теги Twig. Содержимое в разделе Twig завивит от типа шаблона (страница, макет или чанк). Вы можете найти больше информации о конкретных объектах Twig далее в документации.