3

我正在尝试在 django-cms 中使用 django-contact-form。django-contact-form 有一个或两个页面(显示一个表单和一个感谢信),由 django 模板表示

在这些模板的左栏中,我想展示一些有关联系我们的一般信息,这些信息应该可以从 CMS 进行编辑。

现在我想我可以在{% placeholder "contact_info" %}某个地方使用。但实际上并没有“联系页面”的概念,因为它已经由 contact_form 应用程序处理了,它只是提供模板(没有 cms 的东西)

我的理解是,我需要创建某种虚假的联系页面和关联的模板才能使其正常工作。

我想说的是:我想使用模板中的可编辑文本片段(或其他任何内容,但在本例中为文本)。我如何在 Django-CMS 中做到这一点?

顺便说一句,下面的链接似乎表明这是可能的,但不是怎么可能的。

https://github.com/divio/django-cms/issues/491

4

3 回答 3

3

我在这个 django-cms 问题中找到了一个很好的解决方案。创建一个模板标签 ala something/templatetags/show_snippet_tag.py

# From https://github.com/divio/django-cms/issues/491

from cms.plugins.snippet.models import Snippet
from cms.plugins.snippet.cms_plugins import SnippetPlugin
from django import template

register = template.Library()

@register.simple_tag
def show_snippet(name):
    try:
        return SnippetPlugin().render(
            {},
            type('obj', (object,), {'snippet' : Snippet.objects.get(name = name)}),
            None
        )['content']
    except Snippet.DoesNotExist:
        return "[No snippet named '%s']" % name

然后在你的模板中,

{% load show_snippet_tag %}
{% show_snippet "My Snippet Name" %}

卡布姆。

于 2013-07-31T21:15:47.323 回答
2

我知道在 Django-CMS 中有两种方法可以做到这一点......

一种是创建一个 Django-CMS 页面并将您的 django-contact-form 的 url 连接到它

另一种方法是创建一个共享的 cms 页面,该页面不包含带有占位符的导航,您可以在 django-contact-form 应用程序的模板中通过 ID 引用该占位符。

希望这能让你继续前进。

于 2011-06-27T17:57:21.927 回答
0

另一个想法是,如果您使用的是新的 DjangoCMS 3.x,您可以更轻松地使用“static_placeholder”而不是片段。然后,这具有额外的好处,使内容编辑器可以轻松访问和编辑它所在的每个页面上的内容,而不必去管理界面并单独寻找适当的片段名称。它还将允许编辑人员使用更友好的所见即所得界面(而不是片段的手动代码),甚至可以添加您已添加到项目空间的表单插件。

您可以在此处查看有关它们的快速文档:http: //django-cms.readthedocs.org/en/latest/advanced/templatetags.html#static-placeholder

于 2014-05-02T16:05:46.607 回答