Personal tools
You are here: Home Documents チュートリアル CMFContentPanelsのViewletを作る 新しいViewletを追加する(2)

新しいViewletを追加する(2)

Document Actions
新規のスマートフォルダ用Viewletを作成します。テンプレートのスケルトンに実際の表示用のコードを追加してViewletとして完成するところまで行います。

shimizukawa

CMFContentPanelsは、Plone(CMF)の一つのページに複数のページを段組表示するためのプロダクトです。このプロダクトで段組を構成する各領域をViewletと言い、文書やフォルダを表示するための標準的なViewletが付属しています。このViewletをカスタマイズ・追加することでオリジナルの表示を行います。
Page 4 of 4.

表示用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マクロにコピーして若干手を加えて作成しました。

<div metal:define-macro="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で行えるようにしているのがポイントです。これで画面表示は出来ました。早速確認します。

Panel configuration でPreview表示確認

Panel configuration でPreview表示確認

Previewにニュースコンテンツが一覧表示されました。なお、ここで表示されているニュースコンテンツは事前に作成して公開状態にしてあります。

ここまででスマートフォルダ表示用Viewletが完成しました。今回は表示をちょっとだけ強化することが目的だったので、専用の設定画面は特に用意しないことにします。

--

このページで作成した viewlet_smartfolder_list を添付します。

by しみずかわ last modified 2006-11-05 14:59

Powered by Plone, the Open Source Content Management System