Plone:在导航树上显示默认视图
我的问题很简单 在Plone 4(4.2)中,我需要设置什么来创建一个默认视图,例如一个简单的页面,以显示在导航树中Plone:在导航树上显示默认视图,plone,Plone,我的问题很简单 在Plone 4(4.2)中,我需要设置什么来创建一个默认视图,例如一个简单的页面,以显示在导航树中 导航树使用INavigationQueryBuilder组件查找显示的所有元素。默认实现过滤掉用作默认页面的任何内容 您必须提供自己的实现;但您可以重新使用原始实现。您所要做的就是稍微修改生成的查询;通常,如果不存在更具体的查询,是默认页面索引用于过滤默认页面。但如果修改后的查询添加了对该索引的搜索,则不会尝试添加更具体的过滤器。将其设置为搜索(True,False)意味着它将同
导航树使用
INavigationQueryBuilder
组件查找显示的所有元素。默认实现过滤掉用作默认页面的任何内容
您必须提供自己的实现;但您可以重新使用原始实现。您所要做的就是稍微修改生成的查询;通常,如果不存在更具体的查询,是默认页面
索引用于过滤默认页面。但如果修改后的查询添加了对该索引的搜索,则不会尝试添加更具体的过滤器。将其设置为搜索(True,False)
意味着它将同时返回默认和非默认页面,从而有效地中和过滤器
然后,实现变成:
from plone.app.portlets.portlets.navigation import QueryBuilder, INavigationPortlet
from zope.component import adapts
from zope.interface import implements, Interface
class INonDefaultPageFilteringNavigationPortlet(INavigationPortlet):
pass
class DontFilterDefaultQueryBuilder(QueryBuilder):
implements(INavigationQueryBuilder)
adapts(Interface, INavigationPortlet)
def __init__(self, context, portlet):
super(DontFilterDefaultQueryBuilder, self).__init__(context, portlet)
self.query['is_default_page'] = (True, False) # Don't filter out default pages
您必须将其注册为适配器,并将INonDefaultPageFilteringNavigationPortlet
添加到您的portlet以“激活”此生成器:
<configure
xmlns="http://namespaces.zope.org/zope"
xmlns:five="http://namespaces.zope.org/five">
<adapter factory=".yourmodule.DontFilterDefaultQueryBuilder" />
<five:implements
class="plone.app.portlets.portlets.navigation.Assignment"
interface=".yourmodule.INonDefaultPageFilteringNavigationPortlet" />
</configure>
需要注意的是,这是未测试的,但应该可以使用。您也可以在文件夹中创建链接,将目标设置为“./idOfPage1”,并将链接设置为文件夹的默认视图 没有编辑权限的用户将被重定向到Page1,然后页面本身将显示在navportlet中