任何人都可以告诉我如何用我自己的模板替换导航portlet。我确实喜欢这个
我在.py文件中为portlet创建了一个新类,它看起来如下
class navigation_address(Renderer):
index = ViewPageTemplateFile('templates/portlet_address.pt')
我在overrides.zcml中注册了portlet,如
<plone:portletRenderer
portlet="plone.app.portlets.portlets.navigation.INavigationPortlet"
class=".browser.createPictMenu.navigation_address"
/>
提前致谢
答案 0 :(得分:2)
使用plone:portletrenderer
,你只需要像你一样指定原始portlet,新模板和图层(如果安装了自定义软件包,它只在你的plone网站上有效)。
<include package="plone.app.portlets" />
<plone:portletRenderer
portlet="plone.app.portlets.portlets.navigation.INavigationPortlet"
class=".my.module.MyRenderer"
layer=".interfaces.IMyPackageLayer"
/>
from plone.app.portlets.portlets.navigation import Renderer as NavigationRenderer
class MyRenderer(NavigationRenderer):
_template = ViewPageTemplateFile('template/my_navi_template.pt')
<include package="plone.app.portlets" />
确保加载了portlet内容。
浏览器已在GenericSetup中注册: 在您的个人资料中放置一个browserlayer.xml:
<?xml version="1.0"?>
<layers>
<layer name="my.package.layer"
interface="my.package.interfaces.IMyPackageLayer" />
</layers>
界面:
from zope.interface import Interface
class IMyPackageLayer(Interface):
"""Request marker interface"""