CMFのカスタマイズ(その2)

コンセプト

 サイトを CMFで構築するにあたり、まずは、既存の skinを改造することになると思います。しかし、その機能が実際に自分に必要なのかどうかわからないまま、見た目だけ変えたのでは、どうもわかり難いと感じました。(必要な機能を加えるよりも、不要な機能を削除するほうが困難)
 そこで、まず、最低限の機能を持った skinをつくり、必要ならばその skinに機能を付け加えていけるもの、また CMFの理解の助けになるものを目指しました。

 CMFDefaultのサイト(CMF Site)を前提に作成しました。考え方は Ploneでも使えると思いますが、この skinがそのまま Ploneで使えるかどうかは試してません。

手順

1.スキンの作成

 portal_skins に front.zexpをインポートします。(すると、front というフォルダが作成されます。

2.portal_skins の設定

 portal_skins のPropertyiesタブで、Name=[Front] Layers=[front] というSkinを Addします。次に、Default skinで[Front]を選択します。

3.使い方

 http://www.example.com/cmf  に CMF Siteを作ったとすると、 http://www.example.com/cmf/login_form からログインすると、Basic skin に切り替わり、そこで、コンテンツの配置、Publishができます。今回作成した skinに戻るには、Basic skinの中で Preferecneの中の skin を「Front」に戻します。

4.おまけ

 protal_skins の「custom」フォルダに、'logged_out'という名前で、以下のようにカスタマイズした DTML Method を入れておくと、Basic skinから「Logout」すると、自動的に、Front skinに戻ります。

<dtml-if "portal_membership.isAnonymousUser()">
<dtml-call "REQUEST['RESPONSE'].setCookie('portal_skin', 'Front')">
</dtml-if>

<dtml-with expr="portal_url.getPortalObject()">
<dtml-call "REQUEST['RESPONSE'].redirect(_['absolute_url'])">
</dtml-with>

 


Zope メモ