Шаблон определяет, как страница определённого вида будет выглядеть на вашем сайте. В таблице ниже приведены соответствующие шаблоны для любой страницы. Как минимум, тема должна содержать шаблон index
.
Шаблон | Страница | Резерв |
---|---|---|
index |
Домашняя страница | |
post |
Посты | index |
page |
Страницы | index |
archive |
Архив | index |
category |
Категории архивов | archive |
tag |
Архив тегов | archive |
Макеты
Если страницы имеют схожую структуру, например, когда два шаблона имеют как верхний, так и нижний колонтитулы, тогда можно рассмотреть возможность использования макета layout
для вынесения этих структурных сходств. Каждый файл разметки должен содержать переменную body
, для отображения содержимого шаблона. Например:
index |
|
сформируется в:
|
По умолчанию макет layout
используется всеми другими шаблонами. Вы можете указать дополнительные макеты в шапке файла или установить его значение в false
, чтобы отключить. Также можно построить сложную вложенную структуру включив в верхней части макета другие макеты.
Части
Разбивка на части полезна для обмена компонентами между шаблонами. Типичные примеры включают в себя заголовки, нижние колонтитулы, боковые панели. Можно подставить ваш фрагмент в отдельные файлы, чтобы сделать поддержку сайта намного удобнее. Например:
<h1 id="logo"><%= config.title %></h1> |
<%- partial('partial/header') %> |
сформируется в:
<h1 id="logo">My Site</h1> |
Локальные переменные
Вы можете назначать локальные переменные в шаблонах и после использовать в других шаблонах.
<h1 id="logo"><%= title></h1> |
<%- partial('partial/header', {title: 'Hello World'}) %> |
сформируется в:
<h1 id="logo">Hello World</h1> |
Оптимизация
Если созданная тема является чрезвычайно сложной или в ней количество файлов для создания становится слишком большим, производительность генерация файлов Hexo может начать значительно уменьшаться. Помимо упрощения вашей темы, можно попробовать кэширование фрагментов, оно было введено в Hexo 2.7.
Эта было позаимствовано из Ruby on Rails. Он вызывает содержимое для сохранения в виде фрагментов и кэширует его, когда дополнительные запросы выполнены. Это может уменьшить количество запросов к базе данных, а также может ускорить создание файлов.
Кэширование фрагментов лучше всего использовать для заголовков, колонтитулов, боковых панелей или другого статического контента, который вряд ли будет менятся от шаблона к шаблону. Например:
<%- fragment_cache('header', function(){ |
Хотя это можно сделать проще, используя части:
<%- partial('header', {}, {cache: true}); |
Не используйте кэширование фрагментов, когда relative_link
включён в настройках. Это может вызвать проблемы, потому что относительные ссылки, могут и, вероятнее всего, будут отличаться на разных страницах.