使用 zopeskel 開啟新專案(以dexterity為例)

zopeskel是plone 4.X之後,所用來開發客製化模組最主要的工具,幾乎涵蓋網站系統開發所需的基礎框架

使用zopeskel,可以讓開發者專心在邏輯層面的思考,不用浪費時間在環境設定等瑣碎事項上

使用 zopeskel 開啟新模組之前,先來了解一下plone模組的命名空間

所謂命名空間(namespace),是為了避免名稱衝突所設計

例如我想製作一個名片模組,如果沒有依循命名空間規則,那麼我可能會把模組名稱命名為「namecard」,

這種菜市場名,想必會在很多地方與其他專案名稱撞名吧

若依循命名空間,則可以命名為「mysite.namecard」, 這樣一來與其他專案撞名的機率就小很多了。

Plone規定,模組的命名空間有二種型式,基本命名空間及擴展命名空間

基本命名空間由1個點(dot)來分隔,例如: mysite.namecard

擴展命名空間由2個點(dot)來分隔,例如: mysite.users.namecard

基本上,我們往後的例子,將只會使用到基本命名空間

現在,讓我們來開啟一個新的模組

進入網站的 src 目錄下,輸入指令

../bin/zopeskel dexterity

然後會進入互動模式

系統會一一詢問,我們也一一回答即可

Enter project name: (輸入專案名稱,例如 mysite.namecard)

Expert Mode? (What question mode would you like? (easy/expert/all)?) ['easy']: (選擇模式,基本上使用預設值easy即可)

Version (Version number for project) ['1.0']: (輸入版本號,預設1.0)

Description (One-line description of the project) ['Example Dexterity Product']: (輸入專案描述,注意這裏只能輸入英文)

Grok-Based? (True/False: Use grok conventions to simplify coding?) [True]: (是否使用Grok?,這裏要特別說明一下,gork 也是 plone 的一個重要的開發工具,往後經常會使用到,因此我們使用預設值True)

Use relations? (True/False: include support for relations?) [False]: (是否使用關連性支援?,關連性支援也很重要,但使用頻率不如grok頻繁,所謂關連性支援,以電影院系統為例,A廳上映冰雪奇緣就是一項關連,反之,冰雪奇緣在A/C/E/F四個廳播映,則是反向關連,如果開發的專案有這樣的需求,則需要關連性支援,這裏的預設值是False)

回答完以上幾個問題之後,zopeskel會自動在 src 目錄下產生一個專案目錄 mysite.namecard ,所有相關的模組架構及環境變數,都已經設定完成,

之後模組的開發工作,就會在這個目錄裏進行,可以說是相當的犀利的工具。

另外,zopeskel 只會依需求產生出模組目錄,但並不會立即被納入plone站點讓管理者使用,因此還有一項設定必需手動修改

就是buildout.cfg,使用編輯器進入buildout.cfg,修改二個地方

eggs =
    ...
    mysite.namecard

develop =
    ...
    src/mysite.namecard

修改完,回到網站根目錄,執行

bin/buildout -Nc develop.cfg

再重啟網站,我們新增的模組就被納入plone站點,可以讓網站管理員啟用了