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 把模組啟用。

2010/10/20

Permission to Search Member

預設在 Plone 的 Users 資料夾裡,未登入的使用者無法看到會員資訊,而被通知 You are not allowed to list portal members. 訊息,這是因為 Anonymous User 沒有 List portal members 的權限,處理方式之一,是到 ZMI 的 Security tab 調整。
http://lh3.ggpht.com/_BESgcgeL9eA/TL65nS0_HXI/AAAAAAAACak/TyQ9KImyqt4/s800/ListPortalMember.png
如果 Plone Site Setup 裡有選項,讓管理員能夠設定的話,會更理想。關於權限的基本說明,可參考 Basic Roles and Permissions in Plone

2010/10/07

EEA Faceted Navigation

Faceted Navigation (FacetedNav) 是 Plone 顯示搜尋結果的新方式,以搜尋結果為中心,使用者可以在週圍選擇查詢條件,結合 jQuery 後,它能夠更快速地回應搜尋結果。

完成測試的環境是 Plone 3.3.5,有人貢獻 Plone 4 patch,現在也有 collective repository for Plone 4

可以結合 Syndication (XML) 和 Cache (memcache) 提供進階應用。開發人員來自 EEA (European Environment Agency) 是歐盟提供環保政策資訊的單位,已有生產許多 Plone 模組