Шаблон определяет, как страница определённого вида будет выглядеть на вашем сайте. В таблице ниже приведены соответствующие шаблоны для любой страницы. Как минимум, тема должна содержать шаблон index
.
Шаблон | Страница | Fallback |
---|---|---|
index |
Домашняя страница | |
post |
Posts | index |
page |
Страницы | index |
archive |
Архив | index |
category |
Категории архивов | archive |
tag |
Архив тегов | archive |
Layouts
Если страницы имеют схожую структуру, например, когда два шаблона имеют как верхний, так и нижний колонтитулы, тогда можно рассмотреть возможность использования макета layout
для вынесения этих структурных сходств. Каждый файл разметки должен содержать переменную body
, для отображения содержимого шаблона. Например:
index |
|
yields:
|
По умолчанию макет layout
используется всеми другими шаблонами. Вы можете указать дополнительные макеты в шапке файла или установить его значение в false
, чтобы отключить. Также можно построить сложную вложенную структуру включив в верхней части макета другие макеты.
Части
Разбивка на части полезна для обмена компонентами между шаблонами. Типичные примеры включают в себя заголовки, нижние колонтитулы, боковые панели. Можно подставить ваш фрагмент в отдельные файлы, чтобы сделать поддержку сайта намного удобнее. Например:
<h1 id="logo"><%= config.title %></h1> |
<%- partial('partial/header') %> |
yields:
<h1 id="logo">My Site</h1> |
Локальные переменные
Вы можете назначать локальные переменные в шаблонах и после использовать в других шаблонах.
<h1 id="logo"><%= title></h1> |
<%- partial('partial/header', {title: 'Hello World'}) %> |
yields:
<h1 id="logo">Hello World</h1> |
Оптимизация
Если созданная тема является чрезвычайно сложной или в ней количество файлов для создания становится слишком большим, производительность генерация файлов Hexo может начать значительно уменьшаться. Помимо упрощения вашей темы, можно попробовать кэширование фрагментов, оно было введено в Hexo 2.7.
Эта было позаимствовано из Ruby on Rails. Он вызывает содержимое для сохранения в виде фрагментов и кэширует его, когда дополнительные запросы выполнены. Это может уменьшить количество запросов к базе данных, а также может ускорить создание файлов.
Кэширование фрагментов лучше всего использовать для заголовков, колонтитулов, боковых панелей или другого статического контента, который вряд ли будет менятся от шаблона к шаблону. Например:
<%- fragment_cache('header', function(){ |
Хотя это можно сделать проще, используя части:
<%- partial('header', {}, {cache: true}); |
fragment_cache()
will cache the rendered result and output the cached result to other pages. This should only be used on partials that are expected not to change across different pages. Otherwise, it should not be enabled. For example, it should be disabled whenrelative_link
is enabled in the config. This is because relative links may appear differently across pages.