Find visible plugins with multiple templates and static placeholders
有什么方法可以检查插件是否在页面中的任何位置可见(已发布)?
我有多个页面,每个页面都有不同的模板。
这些模板有不同的静态占位符,它们有不同的插件。
问题是模板上存在一些未激活的插件,因此我不想在查询中获取这些插件。
有没有办法只显示在已发布页面上可见的插件?
同样的问题:有没有办法只显示激活模板上出现的插件?
提前谢谢你。
编辑:我想这样做是因为我正在尝试填充搜索数据库,即索引。
在
1 2 | def is_published(self, language, force_reload=False): return self.get_title_obj(language, False, force_reload=force_reload).published |
您可以通过它的占位符找到任何给定
所以在你的插件过滤器上你可以这样做;
1 2 | draft_objects = MyPlugin.objects.filter(placeholder__page__publisher_is_draft=True) live_objects = MyPlugin.objects.filter(placeholder__page__publisher_is_draft=False) |
作为进一步的例子,我有一个通过 \\'gallery\\' 占位符添加的图片库插件。每个图库详细视图都提供指向与同一页面关联的其他图片库的链接;
1 2 3 4 5 6 7 8 | # 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 查询)