Теги шаблонов

Теги шаблонов CMS

Чтобы использовать любой из следующих тегов шаблона, сначала нужно загрузить их в верхней части вашего шаблона:

{% load cms_tags %}

Placeholders

заполнитель

Тег шаблона placeholder определяет место для размещения на странице. Все заполнители в шаблоне будут автоматически определяться и могут быть заполнены плагинами при редактировании страницы, использующей данный шаблон. При рендеринге содержимое этих плагинов появится там, где был тег placeholder.

Пример:

{% placeholder "content" %}
a placeholder named 'content'

Если вы хотите, чтобы дополнительное содержимое было выведено в случае, если placeholder пуст, используйте аргумент or и дополнительный закрывающий тег {% endplaceholder %}. Все, что находится между {% placeholder "..." or %} и {% endplaceholder %}, выводится в том случае, если в placeholder нет плагинов или плагины не генерируют никакого вывода.

Пример:

{% placeholder "content" or %}There is no content.{% endplaceholder %}

Если вы хотите добавить дополнительные переменные в контекст placeholder, вам следует использовать тег Django with. Например, если вы хотите изменить размер изображений из ваших шаблонов в соответствии с контекстной переменной width, вы можете передать ее следующим образом:

{% with 320 as width %}{% placeholder "content" %}{% endwith %}

Если вы хотите, чтобы заполнитель наследовал содержимое заполнителя с таким же именем на родительских страницах, просто передайте аргумент inherit:

{% placeholder "content" inherit %}

Это позволит пройти по дереву страниц до корневой страницы и покажет первый найденный заполнитель с содержимым.

Также можно комбинировать это с аргументом or, чтобы показать окончательный откат, если на данной странице и ни на одной из родительских страниц нет плагинов, генерирующих содержимое:

{% placeholder "content" inherit or %}There is no spoon.{% endplaceholder %}

См. также настройку CMS_PLACEHOLDER_CONF, где вы можете добавить дополнительные контекстные переменные и изменить некоторые другие параметры.

Важно

{% placeholder %} будет работать только внутри шаблона <body>.

static_placeholder

Тег шаблона {% static_placeholder %} может быть использован в любом месте элемента шаблона после тега {% cms_toolbar %}. Экземпляр статического заполнителя не привязан к какой-либо конкретной странице или модели - другими словами, где бы он ни появился, статический заполнитель будет содержать точно такое же содержимое.

Тег {% static_placeholder %} обычно используется для отображения одного и того же содержимого в нескольких местах или внутри apphooks или других сторонних приложений.

В противном случае статический заполнитель ведет себя как «обычный» заполнитель, к которому можно добавлять плагины.

Для того чтобы статический плагин отображался на живых страницах, его необходимо опубликовать, и ему требуется имя.

Пример:

{% load cms_tags %}

{% static_placeholder "footer" %}
a static placeholder

Примечание

Чтобы уменьшить беспорядок в интерфейсе, плагины в статических заполнителях по умолчанию скрыты. Щелкните или коснитесь названия статического плагина, чтобы открыть/скрыть его.

Если вы хотите, чтобы дополнительное содержимое отображалось в случае, если статический плейсхолдер пуст, используйте аргумент or и дополнительный закрывающий тег {% endstatic_placeholder %}. Все, что находится между {% static_placeholder "..." or %} и {% endstatic_placeholder %}, выводится в том случае, если у заполнителя нет плагинов или плагины не генерируют никакого вывода.

Пример:

{% static_placeholder "footer" or %}There is no content.{% endstatic_placeholder %}

По умолчанию статическое местоположение применяется ко всем* сайтам в проекте.

Если вы хотите сделать ваш статический заполнитель сайт-специфичным, чтобы разные сайты могли размещать в нем свое содержимое, вы можете добавить флаг site в тег шаблона, чтобы добиться этого.

Пример:

{% static_placeholder "footer" site or %}There is no content.{% endstatic_placeholder %}

Обратите внимание, что Django «sites» framework является обязательным и SITE_ID должно быть установлено в settings.py, чтобы это (не говоря уже о других аспектах django CMS) работало правильно.

Важно

{% static_placeholder %} будет работать только внутри шаблона <body>.

render_placeholder

{% render_placeholder %} используется, если у вас есть PlaceholderField в вашей собственной модели и вы хотите отобразить его в шаблоне.

Тег render_placeholder принимает следующие параметры:

  • PlaceholderField экземпляр

  • width параметр для контекстно-зависимых плагинов (необязательно)

  • language ключевое слово плюс language-code строка для отображения содержимого на указанном языке (необязательно)

  • Ключевое слово as, за которым следует varname (необязательно): вывод тега шаблона может быть сохранен как контекстная переменная для последующего использования.

Следующий пример отображает поле my_placeholder из поля mymodel_instance и будет отображать только английские (en) плагины:

{% load cms_tags %}

{% render_placeholder mymodel_instance.my_placeholder language 'en' %}

Добавлено в версии 3.0.2: Этот тег шаблона поддерживает аргумент as. С его помощью вы можете присвоить результат работы тега шаблона новой переменной, которую можно использовать в других местах шаблона.

Пример:

{% render_placeholder mymodel_instance.my_placeholder as placeholder_content %}
<p>{{ placeholder_content }}</p>

При использовании этого способа заполнитель не будет отображаться для редактирования, когда CMS находится в режиме редактирования.

render_uncached_placeholder

То же самое, что и render_placeholder, но содержимое заполнителя не будет кэшироваться или браться из кэша.

Аргументы:

  • PlaceholderField экземпляр

  • width параметр для контекстно-зависимых плагинов (необязательно)

  • language ключевое слово плюс language-code строка для отображения содержимого на указанном языке (необязательно)

  • Ключевое слово as, за которым следует varname (необязательно): вывод тега шаблона может быть сохранен как контекстная переменная для последующего использования.

Пример:

{% render_uncached_placeholder mymodel_instance.my_placeholder language 'en' %}

show_placeholder

Отображает определенный плакат с данной страницы. Это полезно, если вы хотите иметь более или менее статичное содержимое, которое используется на многих страницах, например, нижний колонтитул.

Аргументы:

  • placeholder_name

  • page_lookup (см. page_lookup для получения дополнительной информации)

  • language (необязательно)

  • site (необязательно)

Примеры:

{% show_placeholder "footer" "footer_container_page" %}
{% show_placeholder "content" request.current_page.parent_id %}
{% show_placeholder "teaser" request.current_page.get_root %}

show_uncached_placeholder

То же самое, что и show_placeholder, но содержимое заполнителя не будет кэшироваться или браться из кэша.

Аргументы:

  • placeholder_name

  • page_lookup (см. page_lookup для получения дополнительной информации)

  • language (необязательно)

  • site (необязательно)

Пример:

{% show_uncached_placeholder "footer" "footer_container_page" %}

page_lookup

Аргумент page_lookup, передаваемый нескольким тегам шаблона для получения страницы, может быть любого из следующих типов:

  • str: интерпретируется как поле reverse_id нужной страницы, которое можно задать в разделе «Дополнительно» при редактировании страницы.

  • int: интерпретируется как первичный ключ (поле pk) нужной страницы

  • dict: словарь, содержащий аргументы ключевых слов для поиска нужной страницы (например: {'pk': 1})

  • Page: вы также можете передать объект страницы напрямую, в этом случае поиск в базе данных производиться не будет.

Если вы точно знаете страницу, на которую ссылаетесь, то лучше использовать reverse_id (строка, используемая для уникального названия страницы), а не жестко закодированный числовой идентификатор в вашем шаблоне. Например, у вас может быть страница справки, на которую вы хотите ссылаться или отображать ее часть на всех страницах. Для этого сначала нужно открыть страницу помощи в интерфейсе администратора и ввести идентификатор (например, help) на вкладке „Advanced“ формы. Затем вы можете использовать этот reverse_id с соответствующими тегами шаблона:

{% show_placeholder "right-column" "help" %}
<a href="{% page_url "help" %}">Help page</a>

Если вы ссылаетесь на страницу относительно текущей страницы, вам, вероятно, придется использовать числовой идентификатор страницы или объект page. Например, если вы хотите, чтобы содержимое родительской страницы отображалось на текущей странице, вы можете использовать:

{% show_placeholder "content" request.current_page.parent_id %}

Или, предположим, у вас есть место под названием teaser на странице, которое, если редактор содержимого не заполнил его содержимым, специфичным для текущей страницы, должно наследовать содержимое своего предка корневого уровня:

{% placeholder "teaser" or %}
    {% show_placeholder "teaser" request.current_page.get_root %}
{% endplaceholder %}

page_url

Отображает URL-адрес страницы на текущем языке.

Аргументы:

  • page_lookup (см. page_lookup для получения дополнительной информации)

  • language (необязательно)

  • site (необязательно)

  • as var_name (версия 3.0 или более поздняя, необязательно; page_url теперь можно использовать для присвоения полученного URL контекстной переменной var_name)

Пример:

<a href="{% page_url "help" %}">Help page</a>
<a href="{% page_url request.current_page.parent %}">Parent page</a>

Если подходящая страница не найдена, а DEBUG равно True, будет выдано исключение. Однако, если DEBUG равно False, исключение не возникнет.

Добавлено в версии 3.0: page_url теперь поддерживает аргумент as. При таком использовании тег ничего не выдает, но устанавливает переменную в контексте с указанным именем в полученное значение.

При использовании аргумента as исключения PageNotFound всегда подавляются, независимо от установки DEBUG, и тег будет просто выдавать пустую строку в этих случаях.

Пример:

{# Emit a 'canonical' tag when the page is displayed on an alternate url #}
{% page_url request.current_page as current_url %}{% if current_url and current_url != request.get_full_path %}<link rel="canonical" href="{% page_url request.current_page %}">{% endif %}

атрибут страницы

Этот тег шаблона используется для отображения атрибута текущей страницы на текущем языке.

Аргументы:

  • attribute_name

  • page_lookup (необязательно; см. page_lookup для получения дополнительной информации)

Возможными значениями для attribute_name являются: "title", "menu_title", "page_title", "slug", "meta_description", "changed_date", "changed_by" (обратите внимание, что вы также можете передать этот аргумент без кавычек, но это устарело, поскольку аргумент может быть переменной шаблона).

Пример:

{% page_attribute "page_title" %}

Если вы предоставите необязательный аргумент page_lookup, вы получите атрибут страницы из страницы, найденной по этому аргументу.

Пример:

{% page_attribute "page_title" "my_page_reverse_id" %}
{% page_attribute "page_title" request.current_page.parent_id %}
{% page_attribute "slug" request.current_page.get_root %}

Добавлено в версии 2.3.2: Этот тег шаблона поддерживает аргумент as. С его помощью вы можете присвоить результат работы тега шаблона новой переменной, которую можно использовать в других местах шаблона.

Пример:

{% page_attribute "page_title" as title %}
<title>{{ title }}</title>

Его можно использовать даже в сочетании с аргументом page_lookup.

Пример:

{% page_attribute "page_title" "my_page_reverse_id" as title %}
<a href="/mypage/">{{ title }}</a>

Добавлено в версии 2.4.

render_plugin

Этот тег шаблона используется для отображения дочерних плагинов текущего плагина и должен использоваться внутри шаблонов плагинов.

Аргументы:

  • plugin

Плагин должен быть экземпляром модели плагина.

Пример:

{% load cms_tags %}
<div class="multicolumn">
{% for plugin in instance.child_plugin_instances %}
    <div style="width: {{ plugin.width }}00px;">
        {% render_plugin plugin %}
    </div>
{% endfor %}
</div>

Обычно доступ к дочерним элементам плагинов можно получить через атрибут child_plugins плагинов. Для включения этой функции плагинам необходимо установить атрибут allow_children в True.

Добавлено в версии 3.0.

render_plugin_block

Этот тег шаблона действует подобно тегу шаблона render_model_block, но в качестве цели используется не модель, а плагин. Он используется для ссылки из блока разметки на форму изменения плагина в режиме редактирования/просмотра.

Это полезно для пользовательских интерфейсов, в которых некоторые плагины скрыты от отображения в режиме редактирования/просмотра, но автору CMS необходимо предоставить возможность их редактирования. Это также полезно для создания дубликатов или альтернативных способов запуска формы изменений для плагина.

Обычно это используется в шаблоне рендеринга родительского плагина. В приведенном ниже примере кода есть родительский плагин-контейнер, который отображает список дочерних плагинов в навигационном блоке, а затем собственно содержимое плагина в блоке DIV.contentgroup-items. В этом примере навигационный блок отображается всегда, но элементы показываются только после нажатия на соответствующий элемент навигации. Добавление этого render_plugin_block делает редактирование содержимого дочернего плагина значительно более интуитивным, если дважды щелкнуть на его навигационном элементе в режиме редактирования.

Аргументы:

  • plugin

Пример:

{% load cms_tags l10n %}

{% block section_content %}
<div class="contentgroup-container">
  <nav class="contentgroup">
    <div class="inner">
      <ul class="contentgroup-items">{% for child in children %}
      {% if child.enabled %}
        <li class="item{{ forloop.counter0|unlocalize }}">
          {% render_plugin_block child %}
          <a href="#item{{ child.id|unlocalize }}">{{ child.title|safe }}</a>
          {% endrender_plugin_block %}
        </li>{% endif %}
      {% endfor %}
      </ul>
    </div>
  </nav>

  <div class="contentgroup-items">{% for child in children %}
    <div class="contentgroup-item item{{ child.id|unlocalize }}{% if not forloop.counter0 %} active{% endif %}">
      {% render_plugin child  %}
    </div>{% endfor %}
  </div>
</div>
{% endblock %}

Добавлено в версии 3.0.

render_model

render_model - это способ добавить фронтенд-редактирование к любой модели Django. Он одновременно отображает содержимое заданного атрибута экземпляра модели и делает его кликабельным для редактирования связанной модели.

Если панель инструментов не включена, значение атрибута отображается в шаблоне без дополнительных действий.

Если панель инструментов включена, добавляется код для вызова редактирования на фронтенде.

Используя этот тег шаблона, вы можете показывать и редактировать заголовки страниц, а также поля в стандартных моделях django, смотрите Как включить фронтенд-редактирование для моделей Page и Django для примеров и дальнейшей документации.

Пример:

<h1>{% render_model my_model "title" "title,abstract" %}</h1>

Это приведет к:

<!-- The content of the H1 is the active area that triggers the frontend editor -->
<h1><cms-plugin class="cms-plugin cms-plugin-myapp-mymodel-title-1">{{ my_model.title }}</cms-plugin></h1>

Аргументы:

  • instance: экземпляр вашей модели в шаблоне

  • attribute: имя атрибута, который вы хотите показать в шаблоне; это может быть имя контекстной переменной; возможно целевое поле, свойство или callable для указанной модели; при использовании на объекте страницы этот аргумент принимает специальное значение titles, которое покажет поле title страницы, позволяя при этом редактировать поля title, заголовок меню и заголовок страницы в одной форме;

  • edit_fields (опционально): список полей, редактируемых во всплывающем редакторе через запятую; когда тег template используется для объекта страницы, этот аргумент принимает специальное значение changelist, которое позволяет редактировать changelist (список элементов) страницы;

  • language (необязательно): привязываемая языковая вкладка администратора. Используется только для моделей с поддержкой django-hvad.

  • filters (необязательно): строка, содержащая цепочку фильтров для применения к выходному содержимому; работает так же, как тег шаблона filter;

  • view_url (необязательно): имя URL, который будет развернут, используя экземпляр pk и language в качестве аргументов;

  • view_method (необязательно): имя метода, который будет возвращать URL к представлению; метод должен принимать request в качестве первого параметра.

  • varname (необязательно): вывод тега шаблона может быть сохранен как контекстная переменная для последующего использования.

Примечание

По умолчанию этот тег шаблона экранирует содержимое атрибута визуализируемой модели. Это помогает предотвратить ряд уязвимостей безопасности, возникающих в результате инъекции кода HTML, JavaScript и CSS.

Чтобы изменить такое поведение, администратор проекта должен тщательно проанализировать каждое использование этого тега шаблона и убедиться, что все содержимое, которое выводится на страницу с помощью этого тега шаблона, очищено от любой потенциально вредной HTML-разметки, стилей CSS или JavaScript.

Когда администратор убедится, что содержимое чистое, он может добавить параметр фильтра «safe» в тег шаблона, если содержимое должно быть отображено без экранирования.

Предупреждение

render_model совместим с django-hvad лишь частично: использование его с hvad-переведенными полями (скажем, {% render_model object „translated_field“ %} возвращает ошибку, если hvad-enabled объект не существует на текущем языке. В качестве обходного пути вместо этого можно использовать render_model_icon.

Добавлено в версии 3.0.

render_model_block

render_model_block является эквивалентом render_model на уровне блоков:

{% render_model_block my_model %}
    <h1>{{ instance.title }}</h1>
    <div class="body">
        {{ instance.date|date:"d F Y" }}
        {{ instance.text }}
    </div>
{% endrender_model_block %}

Это приведет к:

<!-- This whole block is the active area that triggers the frontend editor -->
<template class="cms-plugin cms-plugin-start cms-plugin-myapp-mymodel-1"></template>
    <h1>{{ my_model.title }}</h1>
    <div class="body">
        {{ my_model.date|date:"d F Y" }}
        {{ my_model.text }}
    </div>
<template class="cms-plugin cms-plugin-end cms-plugin-myapp-mymodel-1"></template>

В блоке my_model псевдоним instance и доступен каждый атрибут и метод; также в блоке доступны шаблонные теги и фильтры.

Предупреждение

Если {% render_model_block %} содержит теги шаблона или код шаблона, которые полагаются на контекстные данные или манипулируют ими, которые также использует {% render_model_block %}, вы можете столкнуться с неожиданными эффектами. Если вы не уверены, что такие конфликты не возникнут, рекомендуется делать код в {% render_model_block %} как можно более простым и коротким.

Аргументы:

  • instance: экземпляр вашей модели в шаблоне

  • edit_fields (опционально): список полей, редактируемых во всплывающем редакторе через запятую; когда тег template используется для объекта страницы, этот аргумент принимает специальное значение changelist, которое позволяет редактировать changelist (список элементов) страницы;

  • language (необязательно): привязываемая языковая вкладка администратора. Используется только для моделей с поддержкой django-hvad.

  • view_url (необязательно): имя URL, который будет развернут, используя экземпляр pk и language в качестве аргументов;

  • view_method (необязательно): имя метода, который будет возвращать URL к представлению; метод должен принимать request в качестве первого параметра.

  • varname (необязательно): вывод тега шаблона может быть сохранен как контекстная переменная для последующего использования.

Примечание

По умолчанию этот тег шаблона экранирует содержимое атрибута визуализируемой модели. Это помогает предотвратить ряд уязвимостей безопасности, возникающих в результате инъекции кода HTML, JavaScript и CSS.

Чтобы изменить такое поведение, администратор проекта должен тщательно проанализировать каждое использование этого тега шаблона и убедиться, что все содержимое, которое выводится на страницу с помощью этого тега шаблона, очищено от любой потенциально вредной HTML-разметки, стилей CSS или JavaScript.

Когда администратор убедится, что содержимое чистое, он может добавить параметр фильтра «safe» в тег шаблона, если содержимое должно быть отображено без экранирования.

Добавлено в версии 3.0.

render_model_icon

render_model_icon предназначен для использования, когда соответствующий атрибут объекта недоступен для взаимодействия с пользователем (например, на него уже есть ссылка, вспомните заголовок в списке элементов, а заголовки связаны с представлением детализации объекта); в режиме редактирования отображает иконку edit, которая вызовет форму изменения редактирования для предоставленных полей.

<h3><a href="{{ my_model.get_absolute_url }}">{{ my_model.title }}</a> {% render_model_icon my_model %}</h3>

Это будет выглядеть примерно так:

<h3>
    <a href="{{ my_model.get_absolute_url }}">{{ my_model.title }}</a>
    <template class="cms-plugin cms-plugin-start cms-plugin-myapp-mymodel-1 cms-render-model-icon"></template>
        <!-- The image below is the active area that triggers the frontend editor -->
        <img src="/static/cms/img/toolbar/render_model_placeholder.png">
    <template class="cms-plugin cms-plugin-end cms-plugin-myapp-mymodel-1 cms-render-model-icon"></template>
</h3>

Примечание

Иконку и положение можно настроить с помощью CSS, задав фон селектором .cms-render-model-icon img.

Аргументы:

  • instance: экземпляр вашей модели в шаблоне

  • edit_fields (опционально): список полей, редактируемых во всплывающем редакторе через запятую; когда тег template используется для объекта страницы, этот аргумент принимает специальное значение changelist, которое позволяет редактировать changelist (список элементов) страницы;

  • language (необязательно): привязываемая языковая вкладка администратора. Используется только для моделей с поддержкой django-hvad.

  • view_url (необязательно): имя URL, который будет развернут, используя экземпляр pk и language в качестве аргументов;

  • view_method (необязательно): имя метода, который будет возвращать URL к представлению; метод должен принимать request в качестве первого параметра.

  • varname (необязательно): вывод тега шаблона может быть сохранен как контекстная переменная для последующего использования.

Примечание

По умолчанию этот тег шаблона экранирует содержимое атрибута визуализируемой модели. Это помогает предотвратить ряд уязвимостей безопасности, возникающих в результате инъекции кода HTML, JavaScript и CSS.

Чтобы изменить такое поведение, администратор проекта должен тщательно проанализировать каждое использование этого тега шаблона и убедиться, что все содержимое, которое выводится на страницу с помощью этого тега шаблона, очищено от любой потенциально вредной HTML-разметки, стилей CSS или JavaScript.

Когда администратор убедится, что содержимое чистое, он может добавить параметр фильтра «safe» в тег шаблона, если содержимое должно быть отображено без экранирования.

Добавлено в версии 3.0.

render_model_add

render_model_add аналогичен render_model_icon, но позволяет создавать экземпляры данного класса экземпляров; в режиме редактирования отображает иконку add, которая вызывает форму добавления редактирования для данной модели.

<h3><a href="{{ my_model.get_absolute_url }}">{{ my_model.title }}</a> {% render_model_add my_model %}</h3>

Это будет выглядеть примерно так:

<h3>
    <a href="{{ my_model.get_absolute_url }}">{{ my_model.title }}</a>
    <template class="cms-plugin cms-plugin-start cms-plugin-myapp-mymodel-1 cms-render-model-add"></template>
        <!-- The image below is the active area that triggers the frontend editor -->
        <img src="/static/cms/img/toolbar/render_model_placeholder.png">
    <template class="cms-plugin cms-plugin-end cms-plugin-myapp-mymodel-1 cms-render-model-add"></template>
</h3>

Примечание

Иконку и положение можно настроить с помощью CSS, задав фон селектором .cms-render-model-add img.

Аргументы:

  • instance: экземпляр вашей модели или класс модели, который нужно добавить

  • edit_fields (необязательно): список полей, редактируемых во всплывающем редакторе, разделенный запятыми;

  • language (необязательно): привязываемая языковая вкладка администратора. Используется только для моделей с поддержкой django-hvad.

  • view_url (необязательно): имя url, который будет развернут, используя экземпляр pk и language в качестве аргументов;

  • view_method (необязательно): имя метода, который будет возвращать URL к представлению; метод должен принимать request в качестве первого параметра.

  • varname (необязательно): вывод тега шаблона может быть сохранен как контекстная переменная для последующего использования.

Примечание

По умолчанию этот тег шаблона экранирует содержимое атрибута визуализируемой модели. Это помогает предотвратить ряд уязвимостей безопасности, возникающих в результате инъекции кода HTML, JavaScript и CSS.

Чтобы изменить такое поведение, администратор проекта должен тщательно проанализировать каждое использование этого тега шаблона и убедиться, что все содержимое, которое выводится на страницу с помощью этого тега шаблона, очищено от любой потенциально вредной HTML-разметки, стилей CSS или JavaScript.

Когда администратор убедится, что содержимое чистое, он может добавить параметр фильтра «safe» в тег шаблона, если содержимое должно быть отображено без экранирования.

Предупреждение

Если вы передаете класс, а не экземпляр, и используете view_method, имейте в виду, что метод будет вызван над пустым экземпляром класса, поэтому все атрибуты пусты, и экземпляр не существует в базе данных.

Добавлено в версии 3.1.

render_model_add_block

render_model_add_block похож на render_model_add, но вместо того, чтобы излучать иконку, связанную с формой добавления модели в модальном диалоге, он оборачивает произвольную разметку той же «ссылкой». Это позволяет разработчику создавать внешние возможности редактирования, более подходящие для проекта.

Все аргументы идентичны render_model_add, но тег шаблона используется в двух частях, чтобы обернуть разметку, которая должна быть обернута.

{% render_model_add_block my_model_instance %}<div>New Object</div>{% endrender_model_add_block %}

Это будет выглядеть примерно так:

<template class="cms-plugin cms-plugin-start cms-plugin-myapp-mymodel-1 cms-render-model-add"></template>
    <div>New Object</div>
<template class="cms-plugin cms-plugin-end cms-plugin-myapp-mymodel-1 cms-render-model-add"></template>

Предупреждение

Вы должны передать экземпляр вашей модели в качестве параметра экземпляра. Передаваемый экземпляр может быть существующим экземпляром модели или вновь созданным в вашем представлении/плагине. Его даже не нужно сохранять, он интроспективно исследуется тегом шаблона для определения нужного класса модели.

Аргументы:

  • instance: экземпляр вашей модели в шаблоне

  • edit_fields (необязательно): список полей, редактируемых во всплывающем редакторе, разделенный запятыми;

  • language (необязательно): привязываемая языковая вкладка администратора. Используется только для моделей с поддержкой django-hvad.

  • view_url (необязательно): имя URL, который будет развернут, используя экземпляр pk и language в качестве аргументов;

  • view_method (необязательно): имя метода, который будет возвращать URL к представлению; метод должен принимать request в качестве первого параметра.

  • varname (необязательно): вывод тега шаблона может быть сохранен как контекстная переменная для последующего использования.

page_language_url

Возвращает URL текущей страницы на другом языке:

{% page_language_url "de" %}
{% page_language_url "fr" %}
{% page_language_url "en" %}

Если текущий URL не имеет CMS Page и обрабатывается навигационным расширителем, а URL изменяется в зависимости от языка, вам необходимо установить функцию language_changer с помощью функции set_language_changer в menus.utils.

Для получения дополнительной информации см. раздел Интернационализация.

переключатель языка

Тег шаблона language_chooser отображает выбор языка для текущей страницы. При необходимости вы можете изменить шаблон в menu/language_chooser.html или предоставить свой собственный шаблон.

Пример:

{% language_chooser %}

или с помощью пользовательского шаблона:

{% language_chooser "myapp/language_chooser.html" %}

Language_chooser имеет три различных режима, в которых он будет отображать языки на выбор: «raw» (по умолчанию), «native», «current» и «short». Он может быть передан в качестве последнего аргумента в строку language_chooser tag. В режиме «raw» язык будет отображаться так же, как его название в настройках. В режиме «native» языки отображаются на их фактическом языке (например, немецкий будет отображаться как «Deutsch», японский как «日本語» и т.д.). В «текущем» режиме языки переводятся на текущий язык, на котором пользователь видит сайт (например, если сайт отображается на немецком, японский будет отображаться как «Japanisch»). В режиме «Short» для отображения берется код языка (например, «en»).

Если текущий URL не имеет CMS Page и обрабатывается навигационным расширителем, а URL изменяется в зависимости от языка, вам необходимо установить функцию language_changer с помощью функции set_language_changer в menus.utils.

Для получения дополнительной информации см. раздел Интернационализация.

Теги шаблона панели инструментов

Тег шаблона cms_toolbar включен в библиотеку cms_tags и добавляет необходимые CSS и javascript к блокам sekizai в базовом шаблоне. Тег шаблона должен быть помещен перед любым {% placeholder %} вхождением в ваш HTML.

Важно

{% cms_toolbar %} будет корректно работать только внутри шаблона <body>.

Пример:

<body>
{% cms_toolbar %}
{% placeholder "home" %}
...

Примечание

Имейте в виду, что тег cms_toolbar нельзя окружать блочными тегами. Тег toolbar будет рендерить все, что находится под ним, чтобы собрать все плагины и заполнители, прежде чем он будет рендерить сам себя. Блочные теги мешают этому.

Вернуться на верх