Django-CMS — глобальный заполнитель?

Есть ли способ сделать глобальный заполнитель в моем базовом шаблоне? Мне нужно, чтобы он был одинаковым на каждой странице (список баннеров). Как я могу это сделать?


person tunarob    schedule 13.11.2012    source источник


Ответы (3)


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

Создайте новый шаблон extra_placeholders.html:

{% extends "base.html" %}
{% load cms_tags %}

{% block content %}
    {% placeholder "Banner-List" %}
{% endblock %}

добавьте его в свои настройки:

CMS_TEMPLATES = (
    ('my/path/extra_placeholders.html', 'Extra Placeholder Page'),
    ...
)

теперь перейдите к администратору и создайте заполнитель с любым плагином, который вы хотите. Затем перейдите к базовому шаблону (вероятно, *base.html), от которого наследуются все остальные ваши страницы, и добавьте его везде, где вы хотите, чтобы заполнитель отображался:

{% load cms_tags %}
...
{% show_placeholder "Banner-List" "extra_placeholders" %}

Подробнее об этом можно прочитать в документации


ИЗМЕНИТЬ

Как отметил в комментариях @José L. Patiño, это решение необходимо только тем, кто использует django-cms ‹ 3.0. Для более новой версии вы можете просто использовать static_placeholder тег шаблона

person Timmy O'Mahony    schedule 13.11.2012
comment
Я сделал его очень похожим, но использовал домашнюю страницу как место для хранения моих глобальных заполнителей. Спасибо. - person tunarob; 14.11.2012
comment
Обратите внимание, что для работы тега show_placeholder ваша дополнительная страница-заполнитель должна иметь идентификатор extra_placeholders в разделе «Дополнительные настройки». Недостаточно ума, чтобы понять это прямо из слизняка... - person Cerin; 24.05.2013
comment
Проблема здесь в том, что заполнители, принадлежащие странице extra_placeholders, не публикуются в режиме редактирования внешнего интерфейса. Нужно зайти в админку, открыть страницу и опубликовать страницу оттуда. Это очень сбивает с толку редакторов финального контента. Есть идеи? - person toto_tico; 22.03.2014
comment
Я разместил похожий вопрос - person toto_tico; 22.03.2014
comment
Хорошее решение для версий Django CMS до 3.0. Для более новых 3 версий это реализовано в теге шаблона статического заполнителя django-cms.readthedocs.org/en/latest/advanced/ - person José L. Patiño; 09.08.2014

Теперь есть «static_placeholders», http://docs.django-cms.org/en/latest/reference/templatetags.html#static-placeholder

Похоже, это то, что вам было нужно давным-давно.

person Joelbitar    schedule 17.08.2014
comment
Теперь это должен быть принятый ответ, поскольку принятый в настоящее время ответ больше не нужен. - person Llanilek; 29.09.2017

Вы можете использовать следующие способы создания глобального заполнителя для всех страниц.

  1. создайте заполнитель на базовой странице. {% Заполнитель "нижний колонтитул"%}
  2. сделать содержимое заполнителя через django cms домашней страницей
  3. затем, чтобы отобразить то же самое для каждой страницы-заполнителя, добавьте {% show_placeholder "footer" "home"%}, это означает отображение недавно созданного заполнителя нижнего колонтитула ранее с домашней страницы,
  4. Это отобразит все содержимое существующих заполнителей нижнего колонтитула на главной странице всех страниц, использующих шаблон.
  5. но для домашней страницы будет отображаться два нижних колонтитула, чтобы изменить, пожалуйста, внесите изменения, чтобы использовать CSS, чтобы скрыть основной заполнитель.
person Mario Ardi    schedule 19.11.2012