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

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

Document Actions
新規のスマートフォルダ用Viewletを作成します。まずはテンプレートのスケルトンを用意し、Viewletとして登録するところまで行います。

shimizukawa

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

これから作成するViewletはスマートフォルダ用とします。CMFContentPanelsにもスマートフォルダ用のViewletはあるのですが、表示内容がタイトルだけで概要文が表示されません。そこで、スマートフォルダを表示する時と同じ表示内容になるViewletを作成します。

表示用のPageTemplateを用意

まずはViewletを表示するためのPageTemplateファイルを作成します。ZMIで /plone/portal_skins/custom へ移動してPageTemplateを新規に作成します。オブジェクトIDは何でも良いのですが、CMFContentPanelsの命名方法に従って viewlet_smartfolder_list としておきます。次にこのオブジェクトの中身を作成します。とりあえず以下のようにスケルトンを用意しましょう。

<html xmlns:tal="http://xml.zope.org/namespaces/tal"
      
xmlns:metal="http://xml.zope.org/namespaces/metal"
      
i18n:domain="plone">

<body>

<div metal:define-macro="smartfolder_contents_viewletconf">
</div>

<div metal:define-macro="smartfolder_contents">
</div>

</body>
</html>

viewlet_smartfolder_listには2つのマクロを定義しています。CMFContentPanelsのドキュメントを読むと書いてあるのですが、Viewletのマクロ名を hoge とした場合、そのViewletの設定用UIのマクロ名を hoge_viewletconf とする必要があります。ここではViewletのマクロ名と設定用マクロ名は上記のように smartfolder_contentssmartfolder_contents_viewletconf と命名しています。

Viewletを登録する

マクロ定義のみのPageTempalte(Viewlet)を用意しました。次はいきなりViewlet登録を行います。まずは空っぽのViewletが使えるモノかどうかを確認する意味で、実際にCMFContentPanelsで試してみようという作戦です。

設定のためにZMIで /plone/portal_contentpanels に移動すると、CMFContentPanelsで使えるViewletがずら~っと登録されています。このページの一番下に移動して、今作ったばかりの空Viewletを登録しましょう。入力するパラメータは以下の通りです。

Title:SmartFolder list
Id:smartfolder_list_viewlet
URL:string: here/viewlet_smartfolder_list/macros/smartfolder_contents
Permission:View
Category:PT:Topic
Visible:On

上記設定値のに、今作ったPageTemplateのIDとマクロ名が出てきています。タイトルやIDは適当に‥‥いちおうCMFContentPanelsの命名規則に従って付けておきましょう。入力しおわったらAddボタンを押して追加します。

portal_contentpanelsにViewletを追加

portal_contentpanelsにViewletを追加

これでCMFContentPanelsで上記のViewletを使えるようになったはずです(空っぽですが)。Categoryを PT:Topic としているので、 smartfolder list というViewlet名を選択できるのは、Related Contentでスマートフォルダ型オブジェクトを選択しているときだけです。ちなみに PT はPortalTypeの略ですので PT:Folder とか PT:COREBlog2 等と記述します。他に GL, GN を使用することが出来ます。GL,GNで使用できる文字列についてはportal_contentpanelsの初期設定項目を参考にしてください。

とりあえず、問題が起きたときに切り分けしやすいように、ここまでの内容で動くことを確認しておいた方が良いでしょう(CMFContentPanelsのPanel configuration でViewletとして利用可能か確認してみましょう)。

Panel configuration で利用可能か確認

Panel configuration で利用可能か確認

Related Content にスマートフォルダ(ここではNews)を選択すると、Content Related のところに SmartFolder list がちゃんと表示されました。しかしここまでの状態では、まだ表示用のテンプレートを書いていないため、SmartFolder listを選択してもPreviewには何も表示されません。次は表示用のテンプレートを記述し、Viewletとして完成させます。

by しみずかわ last modified 2006-10-28 00:11

Powered by Plone, the Open Source Content Management System