viewlets
名詞解釋:viewlet,就是頁面上的一個元素,例如edit-bar,這個就算是一個viewlet
plone的將頁面的設計單位拆分到極小化,可以以頁面上的元素為單元做設計,最後再以積木的方式將每個元素做堆疊,這也是plone架構上的獨到之處
一個 viewlet ,就是頁面上的一個小元件,位置可以定義在某個viewlet manager之下,同一個viewlet manager裏面如果有二個以上的viewlet,還可以動態調整位置。
建立一個viewlet,官方建議的方法,是使用grok ,這也是最簡單的方法。
viewlet包含以下二個元素:
- 一個browser/viewlets.py,
- 一個pt檔
建立viewlet的注意事項如下:
- 位置要正確,就是放在browser目錄下,Grok會自已掃描
- browser目錄要存在 __init__.py 及 configure.zcml,否則系統報錯
- __init__.py是空的,configure.zcml至少要有表頭,但不用將viewlets.py註冊進
viewlets.py的內容範例如下:
#-*- coding:utf-8 -*-
from zope.interface import Interface
from five import grok
from plone.app.layout.viewlets.interfaces import IPortalHeader #把需要的viewlet manager import進來
#設定viewlet介面、pt檔目錄
grok.context(Interface)
grok.templatedir('viewlet_templates')
class TestViewlet(grok.Viewlet):
grok.viewletmanager(IPortalHeader)
逐行說明如下:
grok.context(Interface) # 定義interface
grok.templatedir('viewlet_templates') #定義pt檔所在目錄,本例的話,目錄會在browser/viewlet_templates
class TestViewlet(grok.Viewlet): # class 名稱就是 viewlet 的名稱,可以自定
grok.viewletmanager(IPortalHeader) # 指定位置,本viewlet要出現在那個viewlet manager
再來就是pt檔了,pt檔比較單純,就是 html + tal 語法,要注意的是
- 以本例來說,pt檔位置要放在viewlet_templates目錄中,
- 檔名要與viewlet名稱對應,而且只能用小寫,本例中,pt檔的檔名是 testviewlet.pt
重新buildout,模組重新安裝後,就可以到前台去看效果了