Django-CMS - 全球占位符?

Posted

技术标签:

【中文标题】Django-CMS - 全球占位符?【英文标题】:Django-CMS - Global placeholder? 【发布时间】:2012-11-02 08:38:53 【问题描述】:

有没有办法在我的基本模板中制作全局占位符?我需要它在每个页面(横幅列表)上都相同。 我该怎么做?

【问题讨论】:

【参考方案1】:

我通常在我的 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" %

You can read more about it in the docs


编辑

正如@José L. Patiño 在 cmets 中提到的,此解决方案仅适用于使用 django-cms static_placeholder 模板标签

【讨论】:

我让它非常相似,但我使用主页作为保存全局占位符的地方。谢谢。 请注意,要使show_placeholder 标记起作用,您的“额外占位符页面”必须在“高级设置”部分下将 id 设置为“extra_placeholders”。直接从蛞蝓中弄清楚是不够聪明的…… 这里的问题是属于extra_placeholders页面的占位符在前端界面的编辑模式下没有发布。必须去管理员那里打开页面并从那里发布页面。这对于最终的内容编辑器来说是非常令人困惑的。有什么想法吗? 我发了related question 3.0 之前的 Django CMS 版本的不错的解决方案。对于较新的 3 版本,它在静态占位符模板标签 django-cms.readthedocs.org/en/latest/advanced/… 中实现【参考方案2】:

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

听起来这就是你过去所需要的。

【讨论】:

这应该是现在接受的答案,因为不再需要当前接受的答案。【参考方案3】:

您可以使用以下方式为所有页面创建一个全局占位符。

    在基本页面上创建一个占位符。 % 占位符“页脚”% 通过django cms将占位符的内容作为首页 那么要为每个占位符页面显示相同的内容,添加 % show_placeholder "footer" "home"%,这意味着从主页较早地显示新创建的页脚占位符, 这将在使用该模板的所有页面的主页上显示现有页脚占位符的全部内容。 但是首页会有两个页脚显示,为了mengilangkannya,请修改使用CSS隐藏主占位符。

【讨论】:

以上是关于Django-CMS - 全球占位符?的主要内容,如果未能解决你的问题,请参考以下文章

Django-cms haystack 搜索 - 占位符内容

在不同的占位符/模板上以不同的方式呈现 Django-CMS 插件

显示相同占位符内容的 Django-CMS apphook 模板

Django-cms Placeholderfield 不工作,抛出 lambda 异常

django cms 占位符不在结构视图中

Django CMS 自动显示正确的占位符插件