2010/10/24

Building Policy Package

客製化 Plone 網站的方式,有兩種途徑,一種是在網頁設定介面進行,稱為 TTW (Through The Web),另一種是在檔案系統裡撰寫程式碼,稱為 TTF (Through The Filesystem)。
撰寫程式碼的好處之一,是日後可以重覆沿用設定值,Plone 利用 GenericSetupZopeSkel 等機制,協助管理員建立客製化的 Policy Package 模組。以 UnifiedInstaller 安裝方式為例,開發中的模組程式碼要放在 src 目錄裡,建立工具是 paster 程式,步驟如下:
$ cd src
$ ../bin/paster create -t plone zopenfoundry.policy
Selected and implied templates:
ZopeSkel#basic_namespace A basic Python project with a namespace package
ZopeSkel#plone A project for Plone products

Variables:
egg: zopenfoundry.policy
package: zopenfoundrypolicy
project: zopenfoundry.policy
Expert Mode? (What question mode would you like?
(easy/expert/all)?) ['easy']:
Version (Version number for project) ['1.0']:
Description (One-line description of the project) ['']:
ZOpenFoundry Policy Package
Register Profile (Should this package register a GS Profile)
[False]: True
特別注意,Register Profile 要指定為 True。
再編輯 buildout.cfg 內容,在 develop = 指定 src/zopenfoundry.policy,並在 eggs = 和 zcml = 指定 zopenfoundry.policy,執行 bin/buildout 指令,通知系統已建立了新模組。要留意的是,試過把 package name 寫在 base.cfg 的結果,並不會讓系統找到新模組。
想要測試模組是否能被系統存取,可用 zopepy 工具來檢查:
$ bin/zopepy

>>> from zopenfoundry import policy
>>>
沒有發現 ImportError 的話,就是成功了。
接著,要在 profiles 目錄裡建立設定檔,如果 profiles 目錄還未被建立,可以手動完成:
$ cd src/zopenfoundry.policy/zopenfoundry/policy
$ mkdir profiles
$ mkdir profiles/default
在 profiles/default 目錄裡建立 properties.xml 檔案,內容如下:
<?xml version="1.0"?>
<site>
<property name="title">ZOpenFoundry Site Policy</property>
<property name="description">Welcome to ZOpenFoundry Site</property>
</site>
至此,就可以重啟系統,到 Plone Site Setup 把模組啟用。

No comments: