我正在开设所有网页共享页脚内容的网站。在Django-CMS中最好的方法是什么?
我尝试使用show_placeholder标记,但它以某种方式不起作用。关于我做了什么的更多细节:
首先,我在base.html中有一个{%placeholder footer_info%}。然后我在django admin中添加一个名为“Home”(模板homepage.html)的页面,并将一些文本放在footer_info下作为Text插件。正如这个问题中接受的答案所建议的那样(http://stackoverflow.com/questions/3616745/how-to-render-django-cms-plugin-in-every-page),
我添加
{% placeholder footer_info or %}
{% show_placeholder footer_info "Home" %}
{% endplaceholder %}
在一个名为services.html的模板中,我将其用作页面服务的模板。 但是,主页中的内容未显示在服务页面中。我还尝试在高级选项区域的主页中添加一个id home_cms_page,以便我可以在services.html中引用它,如下所示:
{% placeholder footer_info or %}
{% show_placeholder footer_info "home_cms_page" %}
{% endplaceholder %}
但内容仍未显示。
有谁能告诉我我做错了什么?这是从一个页面获取所有其他页面的一些内容的最佳方式(我必须在每个其他页面中添加show_placeholder)吗?
谢谢
修改
这不是一个多语种网站。我评论了'cms.middleware.multilingual.MultilingualURLMiddleware',
,因为我在网站上使用的唯一语言是英语。
我在base.html中有这个:
{% load cms_tags sekizai_tags %}
<!-- all the rest of the HTML markups -->
<div class="span4">
{% placeholder footer_info %}
</div>
然后我在管理员中添加了一个名为“Home”的页面,其中包含一个Text插件和一个id为“home_cms_page”的页面。
以下是我的services.html:
{% extends "base.html" %}
{% load cms_tags %}
{% block base_content %}
{% placeholder services_info %}
{% endblock base_content %}
{% block page_content %}
<a href="{% page_url "home_cms_page" %}">Home page</a>
{% endblock page_content %}
{% placeholder "footer_info" or %}
{% show_placeholder "footer_info" "home_cms_page" %}
{% endplaceholder %}
答案 0 :(得分:3)
阅读文档:
如果你知道你所指的确切页面,那么最好这样做 使用reverse_id(用于唯一命名页面的字符串)而不是 模板中的硬编码数字ID。例如,你可能有一个 您要链接到的帮助页面或显示所有页面的部分内容。 为此,您首先要在管理界面中打开帮助页面 并在表单的“高级”选项卡下输入ID(例如帮助)。 然后你可以将reverse_id与相应的模板标签一起使用: {%show_placeholder“right-column”“help”%}
我在索引页面的高级选项中添加了“index”,并在基本模板中添加了{% show_placeholder "banner" "index" %}
。一切正常。