Шаблоны

Шаблон — файл, содержащий 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 может быть назначен любой структурной единице модуля Статьи: и категории, и объекту.

В результате перед генерацией страницы происходит следующий алгоритм:

  1. Пользователь зашел на URL
  2. Система определила, что по этому URL расположен объект — Статья.
  3. Статье назначен Внешний шаблон articles.html и Шаблон контента tag_articles_view.html
  4. Выводится код из 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 который содержит код оформления разделов и их переменные.

По аналогичной схеме работают и другие вспомогательные шаблоны для подобных тегов.

Остались вопросы?