Django-CMS show_placeholder没有按预期工作

时间:2012-08-17 20:40:16

标签: django django-cms

我正在开设所有网页共享页脚内容的网站。在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 %}

1 个答案:

答案 0 :(得分:3)

阅读文档:

  

如果你知道你所指的确切页面,那么最好这样做   使用reverse_id(用于唯一命名页面的字符串)而不是   模板中的硬编码数字ID。例如,你可能有一个   您要链接到的帮助页面或显示所有页面的部分内容。   为此,您首先要在管理界面中打开帮助页面   并在表单的“高级”选项卡下输入ID(例如帮助)。   然后你可以将reverse_id与相应的模板标签一起使用:   {%show_placeholder“right-column”“help”%}

我在索引页面的高级选项中添加了“index”,并在基本模板中添加了{% show_placeholder "banner" "index" %}。一切正常。