获取Django CMS的页面摘录

时间:2014-05-29 08:59:48

标签: django django-cms

我想在Django-CMS安装的每个子页面的页脚中显示一个about-page的摘录。

实现这一目标的最佳方法是什么?我无法在Google或此处找到现成的解决方案。

我知道Django博客很容易摘录,比如zinnia或cmsplugin-blog;但我不愿意将这个页面变成博客条目。

1 个答案:

答案 0 :(得分:0)

我写了这个模板标签,显示了所需页面中的某个CMSPlugin

from cms.models.pagemodel import Page

@register.simple_tag
def page_excerpt(page_id, slot=None, position=0):
    page = Page.objects.get(reverse_id=page_id, publisher_is_draft=False)
    if slot is None:
        placeholder = page.placeholders.all()[0] # by default, take the first one.
    else:
        placeholder = page.placeholders.filter(slot=slot)[0]
    cmsplugin = placeholder.cmsplugin_set.order_by('position')[position]
    return cmsplugin.render_plugin()

模板标记采用page-id,占位符的名称以及CMSPlugin作为参数的位置。所以我可以为模板中的摘录设置一个特殊的占位符和/或只使用现有占位符的第一个或第二个CMSPlugin

可能的改进:

  • 更好的错误处理
  • 更灵活地生成摘录