代码之家  ›  专栏  ›  技术社区  ›  Nirmala Sudhir

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

  •  -1
  • Nirmala Sudhir  · 技术社区  · 11 年前

    有人能告诉我如何用我自己的模板替换导航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"
        />  
      

    提前谢谢

    1 回复  |  直到 11 年前
        1
  •  2
  •   Mathias    11 年前

    具有 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"""