Шаблон — файл, содержащий HTML-код, теги и переменные. Имеет вид обычного HTML-файла, пример — articles.html
Существует несколько типов шаблонов:
1. Базовые шаблоны
2. Внешние шаблоны
3. Шаблоны тегов
Шаблоны тегов подразделяются:
3.1. Шаблоны URL-зависимых тегов (шаблоны контента)
3.2. Шаблоны URL-независимых тегов
3.3. Вспомогательные шаблоны
1. Базовые шаблоны
Базовые шаблоны созданы для того, чтобы упростить работу при подключении дизайна к CMS. Базовый шаблон содержит HTML, который назначен по умолчанию всем внешним шаблонам, к которым он подключен. Например, в стандартном дизайне в базовый шаблон можно «зашить» шапку, футер, меню и что-то ещё, что используется на всех страницах. Особенностью базового шаблона является то, что он не жестко назначает код своим дочкам (шаблонам, которые его наследуют), а гибко, то есть если вы в каком-то шаблоне хотите отказаться от части кода базового это можно легко сделать, переопределив код базового шаблона на любой другой.
Как это делается? Базовый шаблон содержит «блоки информации», которые размечены функциональными тегами:
{% block name %}
Содержание блока
{% endblock %}
Разметка кода страницы в базовом шаблоне base.html
Мы назначили блоки. Теперь мы можем импортировать эти блоки в другие шаблоны и подменять на собстенные для каждого дочернего шаблона. Например, мы решили заменить только контентную область, а шапку, меню и футер оставить без изменения: мы импортируем все блоки базового шаблона, дефолтные игнорируем, а контент — переопределяем.
Код внешнего шаблона статей articles.html
2. Внешние шаблоны
Внешние шаблоны играют роль оболочки для контента. Внешний всегда должен содержать URL-зависимый тег модуля, контент которого он отображает. Например в предыдущем случае мы рассмотрели вариант с разделом статей. На визуальном примере отображается вывод группы статей, но это лишь пример — один и тот же внешний шаблон, например, articles.html
может быть назначен любой структурной единице модуля Статьи: и категории, и объекту.
В результате перед генерацией страницы происходит следующий алгоритм:
- Пользователь зашел на URL
- Система определила, что по этому URL расположен объект — Статья.
- Статье назначен Внешний шаблон articles.html и Шаблон контента tag_articles_view.html
- Выводится код из articles.html где внутри на места тега {% Articles %} подставляется код из tag_articles_view.html
3. Шаблоны тегов URL-зависимых (шаблоны контента)
Шаблоны контента содержит как раз тот код, который выводит URL зависимый тег {% Articles %} может вызвать три вида контента, указанные выше. Соответственно и Шаблонов контента всего три типа, по одному на каждый вид контента.
Рассмотрим, опять же, на примере статей.
1. Корневая категория Модуля
Показывает: список категорий модуля
Шаблон контента: tag_articles_baselist.html
2. Категория
Показывает: список объектов группы
Шаблон контента: tag_articles_list.html
3. Объект
Показывает: один объект и его переменные
Шаблон контента: tag_articles_view.html
4. Шаблоны тегов URL-независимых
Как известно из раздела Теги, — списки объектов категории или список категорий модуля можно показывать как по заданному для этой группы или модуля URL, так и в любом другом месте сайта, например в качестве превью. Напомним, когда вы вставляете в любое место сайта, например, независимый тег {% ArticlesBasesGlobal %}, то увидите вывод списка Категорий модуля Статьи. Но как оформляется этот вывод? Это и задает шаблон независимого тега.
В месте сайта, где вы поставили тег {% ArticlesBasesGlobal %} будет вызван html код шаблона:
5. Вспомогательные шаблоны
Некоторые элементы сайта являются функциями, вывод результатов которых тоже нужно как-то оформлять. Для оформления вывода таких функций и нужны вспомогательные шаблоны. Такими функциями могут быть:
- Навигационное элементы (например, «хлебные крошки»)
- Переключатель страниц при постраничном выводе списка («паджинатор»)
- Форма отправки сообщения с сайта
- Меню разделов сайта
- и пр.
В место где вы хотите вставить ту или иную функцию вставляется тег этой функции, который и вызывает её вспомогательный шаблон. Рассмотрим пример с «хлебными крошкам». Его тег — {% BreadCrumbs %}
При вставке этого тега на страницу вызывается шаблон tag_breadcrumbs.html который содержит код оформления разделов и их переменные.
По аналогичной схеме работают и другие вспомогательные шаблоны для подобных тегов.