-1

ナビゲーション ポートレットを自分のテンプレートに置き換える方法を誰か教えてください。私はこれが好きでした

  1. .py ファイルにポートレット用の新しいクラスを 1 つ作成しました。

    class navigation_address(Renderer):         
          index = ViewPageTemplateFile('templates/portlet_address.pt') 
    
  2. ポートレットをoverrides.zcmlのように登録しました

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

前もって感謝します

4

1 に答える 1

2

元のポートレット、新しいテンプレート、およびレイヤーを指定するだけです (したがってplone:portletrenderer、カスタム パッケージがインストールされている場合、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" />ポートレットがロードされていることを確認します。

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 に答える