Django-CMS - 全球占位符?

tun*_*rob 6 django placeholder django-cms

有没有办法在我的基本模板中创建全局占位符?我需要在每个页面上都相同(横幅列表).我怎样才能做到这一点?

Tim*_*ony 11

我通常在我的CMS中创建一个未发布的页面,但包含我想在其他地方使用的占位符(页脚/标题)等.

制作新模板extra_placeholders.html:

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

{% block content %}
    {% placeholder "Banner-List" %}
{% endblock %}
Run Code Online (Sandbox Code Playgroud)

将其添加到您的设置:

CMS_TEMPLATES = (
    ('my/path/extra_placeholders.html', 'Extra Placeholder Page'),
    ...
)
Run Code Online (Sandbox Code Playgroud)

现在转到管理员并使用您想要的任何插件创建占位符.然后转到您的所有其他页面继承的基本模板(可能是*base.html)并将其添加到您希望占位符显示的任何位置:

{% load cms_tags %}
...
{% show_placeholder "Banner-List" "extra_placeholders" %}
Run Code Online (Sandbox Code Playgroud)

您可以在文档中阅读更多相关信息


编辑

正如@JoséL.Patiño在评论中提到的,这个解决方案只对那些使用django-cms<3.0的人有用.对于较新的版本,您只需使用static_placeholder模板标记即可

  • 在3.0之前的Django CMS版本的很好的解决方案.对于较新的3个版本,它在static-placeholder模板标签中实现https://django-cms.readthedocs.org/en/latest/advanced/templatetags.html#static-placeholder (3认同)
  • 请注意,要使`show_placeholder`标记起作用,您的"额外占位符页面"**必须**在"高级设置"部分下将ID设置为"extra_placeholders".从slu the中直接发现它并不够聪明...... (2认同)

Joe*_*tar 7

现在有"static_placeholders",http: //docs.django-cms.org/en/latest/reference/templatetags.html#static-placeholder

听起来像是你需要回来的时候.