2006/02/01
カテゴリ portlet でアイコンとエントリ数表示
作成者 takanori
—
投稿日
2006年02月01日 00時35分
最終変更日時
2006年02月20日 00時52分
さて、左下の「カテゴリ」ポートレットをカスタマイズして、COREBlog のようにそのカテゴリに入っているエントリの数を表示するようにしました。
ついでに、カテゴリの画像が存在する場合はそのアイコンも表示するようにしてみました。
カスタマイズしたポイントはこんな感じです。
portal_skins/COREBlog2/portlet_category を書き換えます。
変更前:
<tal:block tal:repeat="obj results">
<dd class="portletItemSingle"
tal:define="oddrow repeat/obj/odd;"
tal:attributes="class python:test(oddrow,
'portletItem even',
'portletItem odd');">
<a href="#"
tal:attributes="href string:${catfolder_url}/${obj/id};
title obj/Description"
tal:content="obj/Title">
Entry title
</a>
変更後:
<tal:block tal:repeat="obj results">
<dd class="portletItemSingle"
tal:define="oddrow repeat/obj/odd;
category obj/getObject"
tal:attributes="class python:test(oddrow,
'portletItem even',
'portletItem odd');">
<a href="#"
tal:attributes="href string:${catfolder_url}/${obj/id};
title obj/Description">
<img src="#"
tal:condition="category/category_image | nothing"
tal:attributes="src string:${category/absolute_url}/category_image_icon" />
<span tal:replace="obj/Title">
Category Name
</span>
</a>
(<span tal:replace="python:len(here.portal_catalog.searchResults(portal_type='COREBlogEntry', getEntry_categories=str(category.getInternal_id())))" />)
見ての通り、img タグのところで画像が存在すれば icon を表示するようになっています。
そして、最後の行で portal_catalog から現在のカテゴリの記事一覧を取得して、その数を数えて表示しています。
(検索する方法がわからなくて結構てこずりました)
# 英語っぽいエントリ ID 考えるの面倒なので、数字を手で入れようかな...(負け組み)
- カテゴリ
-
coreblog
-
- ¦
- 固定リンク
- ¦
- コメント (0)
- ¦
- トラックバック (0)
- トラックバック用URL:
- http://takanory.net/takalog/portlet-category/tbping
鈴木たかのりです。とりあえず日記っぽく雑多なことを書き込んでいこうと思っています。
zope/plone関係の技術的な内容については