如何用我的模板替换默认导航portlet

时间:2013-08-23 09:12:16

标签: python plone

任何人都可以告诉我如何用我自己的模板替换导航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"
      />  
    
  3. 提前致谢

1 个答案:

答案 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"""