是否有任何方法检查插件是否可见(发布)在页面的任何位置? 我有多个页面,每个页面都有不同的模板。 这些模板具有不同的静态占位符,它们具有不同的插件。查找具有多个模板和静态占位符的可见插件
问题是一些插件存在于未激活的模板上,因此我不想在查询中获得这些插件。
是否有一种方法只显示在发布页面上可见的插件? 同样的问题:有没有一种方法只显示出现在激活的模板上的插件?
预先感谢您。
编辑:我想这样做,因为我试图填充搜索数据库即索引。
是否有任何方法检查插件是否可见(发布)在页面的任何位置? 我有多个页面,每个页面都有不同的模板。 这些模板具有不同的静态占位符,它们具有不同的插件。查找具有多个模板和静态占位符的可见插件
问题是一些插件存在于未激活的模板上,因此我不想在查询中获得这些插件。
是否有一种方法只显示在发布页面上可见的插件? 同样的问题:有没有一种方法只显示出现在激活的模板上的插件?
预先感谢您。
编辑:我想这样做,因为我试图填充搜索数据库即索引。
在Page
模型上有一种方法,称为is_published
;
def is_published(self, language, force_reload=False):
return self.get_title_obj(language, False, force_reload=force_reload).published
,你可以找到任何给定的CMSPlugin
对象是通过它的占位符附加到页面。
所以在你的插件的过滤器上你可以做到;
draft_objects = MyPlugin.objects.filter(placeholder__page__publisher_is_draft=True)
live_objects = MyPlugin.objects.filter(placeholder__page__publisher_is_draft=False)
作为进一步的实例,我有经由“画廊”占位符加到一个图库插件。每个图库细节视图都提供了与同一页面关联的其他图库的链接;
# Filter the list of other galleries so that we don't get galleries
# attached to other pages.
more_galleries = [
g for g in galleries if (
g.placeholder.slot == u'gallery' and
unicode(g.placeholder.page.id) == page_id
)
]
我不完全相信你通过“激活模板”的意思,但如果你的意思是在一个页面上使用的模板,你不得不过滤之前先筛选给定的模板名称的页面基于页面的插件。听起来很复杂(大SQL查询)&你需要解释什么/你为什么要这样做。
编辑
如果这是你想要搜索 - 退房Aldryn Search这是由Django的CMS开发者编写的搜索应用。
这是django-cms术语。我想为搜索引擎索引数据,但是在搜索结果中显示的数据不在(网站)网页上显示,这是一个问题。 – Igor