我正在尝试使用django-cms中的django-contact-form。django-contact-form有一个或两个页面(显示一个表单和一封感谢信),这些页面由django模板表示
在这些模板的左栏,我想显示一些联系我们的一般信息,这应该是可编辑的CMS。
现在,我想我可以在某个地方使用{% placeholder "contact_info" %}。但实际上并没有“联系人页面”的概念,因为contact_form应用程序已经处理了这个问题,它只提供模板(没有cms的东西)。
我的理解是,我需要创建某种假的联系页面&一个相关的模板,才能让它正常工作。
我想说的是:我想从模板中使用一个可编辑的文本片段(或者其他任何东西,但在本例中是文本)。我如何在Django-CMS中做到这一点?
顺便说一句,下面的链接似乎表明这是可能的,但不是如何可能的。
发布于 2011-06-28 01:57:22
在Django-CMS中,我知道有两种方法可以做到这一点。
一个是创建Django-CMS页面和hook your django-contact-form's urls to it。
另一种方法是创建一个共享的cms页面,该页面不包含在导航中,并带有一个占位符,您可以在django-contact-form应用程序的模板中通过ID来引用它。
希望这能让你振作起来。
发布于 2013-08-01 05:15:47
我在this django-cms issue中找到了一个很好的解决方案。创建一个模板标记,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" %}Kaboom。
发布于 2014-05-03 00:05:47
另一种想法是,如果你使用的是新的DjangoCMS 3.x,那么你也许可以更容易地使用"static_placeholder“,而不是代码片段。这样做的额外好处是,内容编辑人员可以轻松地访问和编辑每个页面上的内容,而不必转到管理界面并单独查找适当的代码片段名称。它还允许编辑人员使用更友好的WYSIWYG界面(而不是代码片段的手动代码),甚至可以添加您已添加到项目空间的表单插件。
您可以在此处查看快速文档:http://django-cms.readthedocs.org/en/latest/advanced/templatetags.html#static-placeholder
https://stackoverflow.com/questions/6496658
复制相似问题