2011/04/13

Custom Folder Listing Tips

常見的 Plone 目錄頁面,可以顯示標題、作者、日期、摘要描述,不過,從 /mysite/@@security-controlpanel 進入 Security settings 設定畫面,有個「Allow anyone to view 'about' information」選項,可以決定一般訪客是否看得到作者和日期資訊。
https://lh5.googleusercontent.com/_BESgcgeL9eA/TaVr1V8KcYI/AAAAAAAACu0/jzWFbEbhp0w/s800/01.png
完整資訊都呈現的效果如下:
https://lh3.googleusercontent.com/_BESgcgeL9eA/TaVp2S7siMI/AAAAAAAACus/NdxIttNHh-o/s800/01.png
希望登入後,還是不顯示作者、日期嗎? 這裡有幾個暴力修改法。
我先用 firebug 查看 HTML 的部份內容,找到「<span class="documentByLine">」的關鍵字,再到 Plone/buildout-cache/eggs 目錄,用 grep -r documentByLine | grep '.pt' 指令,找到 Products/CMFPlone/skins/plone_content/folder_listing.pt 檔案。

<tal:byline condition="show_about">
show_about 是控制的變數,我們只要調整 condition 條件值,就可以改變它顯示的行為。

<tal:byline condition="python: show_about and (context.getId() == 'events')">
在手邊的例子裡,打算讓它在 events 裡才顯示。
使用 context.id 很可能也行,另外 context.getId() in ('events', 'news') 則可以指定數個目錄值。

如果自製的 content type 裡,有個 my_field 欄位,在 的迴圈段落,加上 item_myfield item/getMy_field;,就可以用 <span tal:content="item_myfield"> 來顯示。

不過,我遇到的例子 my_field 是個 list,顯示結果是 ['\xe6\xb1\x89\xe6\x97\x8f'],如果只是想要顯示 list 裡的第一個值,最簡化的處理方式是使用 context.my_field[0]。

No comments: