0

我正在一个页脚内容在所有页面之间共享的网站上工作。在 Django-CMS 中最好的方法是什么?

我尝试使用 show_placeholder 标签,但不知何故不起作用。关于我所做的更多细节:

首先,我在 base.html 中有一个 {% placeholder footer_info %}。然后我在 django admin 中添加一个名为“Home”的页面(模板 homepage.html),并将一些文本作为文本插件放在 footer_info 下。正如这个问题中公认的答案所建议的(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 的模板中,我将其用作页面服务的模板。但是,主页中的内容未显示在服务页面中。我还尝试在 Advanced 选项区域的主页中添加一个 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>

然后我在管理员中添加了一个名为“主页”的页面,其中包含一个文本插件和一个 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 %}
4

1 回答 1

3

阅读文档:

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

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

于 2012-11-14T11:30:04.640 回答