2013-08-23 67 views
-1

任何人都可以告訴如何用我自己的模板替換導航portlet。我不喜歡這個如何用我的模板替換默認導航portlet

  1. 我在.py文件創建了一個門戶新的類,它的外觀像下面

    class navigation_address(Renderer):   
         index = ViewPageTemplateFile('templates/portlet_address.pt') 
    
  2. 我註冊overrides.zcml的Portlets,像

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

在此先感謝

+0

什麼是 「導航地址」?您是不是想要重寫一個portlet,使其成爲我希望的完全不同類型的portlet?就像你以前試用過Viewlets一樣? –

+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" />確保小門戶的東西被加載。

的browserlayer註冊於GenericSetup: 放置一個browserlayer.xml在您的個人資料:

<?xml version="1.0"?> 
<layers> 
    <layer name="my.package.layer" 
      interface="my.package.interfaces.IMyPackageLayer" /> 
</layers> 

和接口:

​​
+0

@@ mat:我按照你的說法做了改變,但它並不適用於我的情況。我無法替換導航portlet。 –

+0

@@ mat:我確定我在overrides.zcml中包含了這個包

+0

可以發佈任何回溯?確保你的zcml正在被加載。您不必在overrides.zcml中加載它。 – Mathias