在 Plone 上直接於表頭區擺 flash 檔,是個不小的系統負擔,比較輕量的方法是利用 KSS 或 jQuery,或是借力於 Carousel。
http://fjelleiligheter.no/ 可看到範例。
至於 zope.conf 裡 TimeZone 的設定方法能否成功,我得看到「錯誤訊息」,才能判斷可能的下一步。
2009/03/30
2009/03/20
Make Plone3 Forms the easy way
plone.app.z3cform 能讓 Plone3 應用 z3c.form 來建立表單。在 Plone2 初期開始引用 Archetypes 工具建立表單,此方案過於複雜,不適合建立獨立而簡單的表單場合。另一個 zope.formlib 工具,也有人覺得 adaptability 與 widget 不足。
在架構上,最底層是 z3c.form,而 plone.z3cform 是 z3c.form 的介面,最後再由 plone.app.z3cform 提供 widget 與 utility 給表單開發者。使用 plone.app.z3cform 所建立的表單,原則上就等同於利用 z3c.form 在 Zope 3 環境裡所建立的表單,開發過程也可直接參考 z3c.form 的文件。
更多範例可參考 http://plone.org/documentation/how-to/easy-forms-with-plone3 和 http://kayeva.wordpress.com/2008/07/16/using-z3cform-for-our-forms-in-plone
也可以 svn co https://svn.plone.org/svn/collective/collective.dancing/trunk/collective/dancing 查看 Singing & Dancing 的程式碼範例。
在架構上,最底層是 z3c.form,而 plone.z3cform 是 z3c.form 的介面,最後再由 plone.app.z3cform 提供 widget 與 utility 給表單開發者。使用 plone.app.z3cform 所建立的表單,原則上就等同於利用 z3c.form 在 Zope 3 環境裡所建立的表單,開發過程也可直接參考 z3c.form 的文件。
更多範例可參考 http://plone.org/documentation/how-to/easy-forms-with-plone3 和 http://kayeva.wordpress.com/2008/07/16/using-z3cform-for-our-forms-in-plone
也可以 svn co https://svn.plone.org/svn/collective/collective.dancing/trunk/collective/dancing 查看 Singing & Dancing 的程式碼範例。
2009/03/07
Catalog to Speed Up Plone
在 Plone 資料夾裡呼叫所有的內容項目,會讓系統效能大受影響,非必得已,應降低這類的動作。早期 Plone 的導引清單因為設計還不成熟,成為效能殺手的主因之一,但隨著 Plone 2.1 和 ExtendedPathIndex 的問世,情況已大幅改善。
查詢目錄內容項目清單的方法有好幾種,但 objectValues() 和 contentValues() 則是最耗資源的兩種,應優先考慮改用 catalog 工具,範例如下:
查詢目錄內容項目清單的方法有好幾種,但 objectValues() 和 contentValues() 則是最耗資源的兩種,應優先考慮改用 catalog 工具,範例如下:
catalog = getToolByName(self, 'portal_catalog')更多資訊可參考 http://plone.org/documentation/tutorial/richdocument/folder-listings
results = catalog.searchResults(
path = {'query' : '/'.join(self.getPhysicalPath()),
'depth' : 1 },
sort_on = 'getObjPositionInParent',
)
2009/02/04
UnicodeEncodeError in Plone
記錄一個 Plone 除錯訊息,發生在會員帳號管理介面。
第一次遇到它,是在仿照 http://tomster.org/geek/plonezope/importPASfromCSV.py/view 批次建立會員帳號後發生,後來讀到 http://dev.plone.org/collective/changeset/67165 似乎開啟曙光,在 CMFPlone/patches 裡 unicodehacks.py 和 unicodeFallbackPatch.py 也有線索,希望能即早解決這問題。
ERROR Zope.SiteErrorLog http://mysite.com:8080/MySite/prefs_users_overview
Traceback (innermost last):
Module ZPublisher.Publish, line 119, in publish
...
Module zope.tales.tales, line 696, in evaluate
- URL: file:/home/marr/Plone317/zinstance/parts/ \
plone/CMFPlone/skins/plone_templates/batch_macros.pt
- Line 43, Column 8
- Expression:
- Names:
...
'request':,
'root':,
'template':,
'traverse_subpath': [],
'user':}
Module Products.PageTemplates.ZRPythonExpr, line 49, in __call__
- __traceback_info__: '%s?%s' % (url , mq( request.form, {batch.b_start_str:n.first} ))
Module PythonExpr, line 1, in
Module ZTUtils.Zope, line 181, in make_query
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-3: \
ordinal not in range(128)
第一次遇到它,是在仿照 http://tomster.org/geek/plonezope/importPASfromCSV.py/view 批次建立會員帳號後發生,後來讀到 http://dev.plone.org/collective/changeset/67165 似乎開啟曙光,在 CMFPlone/patches 裡 unicodehacks.py 和 unicodeFallbackPatch.py 也有線索,希望能即早解決這問題。
2009/01/13
Plone Content Item Rating
想在 Plone Site 裡為 content item 評分,有很多種方法。我試了 EasyRating 還算符合自己的需求,雖然它仍處於 beta 階段。
安裝文件裡建議使用 buildout 方式,但我是把主程式解開放到 $INSTANCE/lib/python 目錄,並把 iqpp.plone.rating-configure.zcml 放到 $INSTANCE/etc/package-includes 目錄,這是方便開發者測試的安裝方式。
安裝後到 Site Setup 裡啟用。img1
在 Add-on Product Configuration 裡設定想要的選項。img2
在想要的目錄裡透過 Portlet Manager 新增 Rating Portlet 後,瀏覽 content item 時就會看到評分方框。img3
Rating Portlet 搭配 AJAX 效果。img4
安裝文件裡建議使用 buildout 方式,但我是把主程式解開放到 $INSTANCE/lib/python 目錄,並把 iqpp.plone.rating-configure.zcml 放到 $INSTANCE/etc/package-includes 目錄,這是方便開發者測試的安裝方式。
安裝後到 Site Setup 裡啟用。img1
在 Add-on Product Configuration 裡設定想要的選項。img2
在想要的目錄裡透過 Portlet Manager 新增 Rating Portlet 後,瀏覽 content item 時就會看到評分方框。img3
Rating Portlet 搭配 AJAX 效果。img4
2009/01/06
Plone Installer Updates
全面採用 buildout 機制,是 Plone 發展過程的一大分水嶺,宣告所有應用程式都該使用 egg 包裝方式,開發完成的 egg 應該放到 PyPI 昭告天下。
Plone 3.2 的改進目標之一是將 installer 變得更友善,主要調整項目包括,各平台均採用 buildout 機制,新的 bin/plonectl 命令稿,附加註解的 buildout.cfg 範本檔案,paster 和 ZopeSkel 由 buildout 來管理,預設安裝目錄改到 /usr/local/Plone。
這些變化從 Plone 3.1.4 開始出現,更多資訊可參考 http://plone.org/documentation/manual/plone-community-developer-documentation/tutorials/buildout
Plone 3.2 的改進目標之一是將 installer 變得更友善,主要調整項目包括,各平台均採用 buildout 機制,新的 bin/plonectl 命令稿,附加註解的 buildout.cfg 範本檔案,paster 和 ZopeSkel 由 buildout 來管理,預設安裝目錄改到 /usr/local/Plone。
這些變化從 Plone 3.1.4 開始出現,更多資訊可參考 http://plone.org/documentation/manual/plone-community-developer-documentation/tutorials/buildout
2008/12/30
Plone PAS
PAS (Pluggable Authentication Service) 在 Plone 2.5 之後,成為會員管理的標準機制,在此之前使用的則是 User Folder,相同的是,這兩種機制都會在 ZMI 裡出現 acl_users 物件項目。由於 User Folder 架構擴充性不足,想要新增功能時,就得設計新的 User Folder,諸如 GRUF、LDAPUF、PUF 等,都是衍生產物,而且,更換 User Folder 並不是平順簡單的過程。
PAS 則是採取 plugin 方式來擴充功能,像是處理 role、authentication、identification、property 等資訊,具體的例子如 GMail Authentication 可以讓使用者以 GMail 帳號密碼來登入,或 NTLM Authentication 可以讓 Windows domain 裡的使用者自動登入,而整合 LDAP 或 Relational Database 也是常見的方式。
PAS 則是採取 plugin 方式來擴充功能,像是處理 role、authentication、identification、property 等資訊,具體的例子如 GMail Authentication 可以讓使用者以 GMail 帳號密碼來登入,或 NTLM Authentication 可以讓 Windows domain 裡的使用者自動登入,而整合 LDAP 或 Relational Database 也是常見的方式。
Subscribe to:
Posts (Atom)