-1

谁能告诉我如何用我自己的模板替换导航 portlet。我确实喜欢这个

  1. 我在 .py 文件中为 portlet 创建了一个新类,如下所示

    class navigation_address(Renderer):         
          index = ViewPageTemplateFile('templates/portlet_address.pt') 
    
  2. 我在 overrides.zcml 中注册了 portlet,例如

    <plone:portletRenderer
      portlet="plone.app.portlets.portlets.navigation.INavigationPortlet"
      class=".browser.createPictMenu.navigation_address"
      />  
    

提前致谢

4

1 回答 1

2

您只需要像您一样指定源portlet、新模板和一个层(因此plone:portletrenderer,如果安装了您的自定义包,它仅在您的克隆站点上处于活动状态)。

<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 内容。

browserlayer 使用 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"""
于 2013-08-23T09:30:55.520 回答