新しいViewletを追加する(2)
shimizukawa
表示用Viewletを書く
今回は、Ploneのスマートフォルダの中身一覧を表示するViewletをコピーして、SmartFolder用に機能拡張したい部分だけカスタマイズします。以下で紹介するコードは、基本的にはCMFContentPanels/skins/cp_viewlets/viewlets_folder_recentのbase_portletマクロがやっている処理を真似して作ったのですが、CMFContentPanelsのPageTemplateはかなり細かく部品化されているので、共通する部分はmetal:use-macroとmetal:fill-slotを駆使して再利用することが出来ました。以下のコードのほとんどは CMFContentPanels/skins/cp_viewlets/content_list_macros の <metal:block metal:define-macro="separate_line_description"> ブロック内をviewlet_smartfolder_listのsmartfolder_contentsマクロにコピーして若干手を加えて作成しました。
<metal:block use-macro="here/global_defines/macros/defines" />
<div class="portlet_off">
<span class="topLeft"></span>
<h5 tal:content="here/title_or_id" >title</h5>
<span class="topRight"></span>
<div class="portletBody">
<div metal:use-macro="here/atct_topic_view/macros/listing">Document Main</div>
</div>
<span class="botRight"></span>
<span class="botLeft"></span>
</div>
</div>
<div class="portletBody">ブロックでViewlet表示の本文を書くことになるのですが、今回は細かく作り込むのではなくスマートフォルダの表示用テンプレートを呼び出して、スマートフォルダと同じ表示をViewletで行えるようにしているのがポイントです。これで画面表示は出来ました。早速確認します。
Previewにニュースコンテンツが一覧表示されました。なお、ここで表示されているニュースコンテンツは事前に作成して公開状態にしてあります。
ここまででスマートフォルダ表示用Viewletが完成しました。今回は表示をちょっとだけ強化することが目的だったので、専用の設定画面は特に用意しないことにします。
--
このページで作成した viewlet_smartfolder_list を添付します。
