PloneのロゴのZPTを見る

Ploneのロゴがcssでどのように実現されていたかは既に見ましたが、文書としてはどのように記述されているのでしょうか。

ファイルは /TestPlone/portal_skins/plone_templates/global_logo です。そう、このパスの中にもあるとおり、これはテンプレートファイルなのです…

ZPT(ゾープページテンプレート)。今まで避けてきた道ですが、昨今のZopeやそれ以外のWeb業界の傾向を鑑みれば、この先避けては通れない道だと思っています。まぁ、まったりと理解してゆければと思います。

ZPTではtalやmetalなどといった用語をよく見かけます。talというのはTag Attribute Language、metalというのはMacro Expansion TALらしいです。

タグ属性言語、マクロ展開タグ属性言語。日本語に直してもよくわかりませんヾ( ´( ェ )`)ノ

まぁとにもかくにも、実際のPloneのファイルを見てみることにします。

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"
 i18n:domain="plone">

<body>

<!-- THE PORTAL LOGO DEFINITION -->
<h1 id="portal-logo" metal:define-macro="portal_logo">
 <a href="/"
     tal:attributes="href portal_url"
     tal:define="portal_title portal_properties/title;"
     tal:content="string:$portal_title">
         Plone
 </a>
</h1>

</body>
</html>

見出し1タグにmetalが、リンクタグにtalが使われてますね。なるほど確かにタグのattributeとして記述されています。

metalの方は「マクロ」と名前が付くくらいですから、マクロなんでしょう。そしてここでは「metal:define-macro="portal_logo"」と書いてあるくらいですから、おそらくはマクロ定義をしているわけですな。見出し1タグで囲われた部分がportal_logoとして定義されていますから、これを使うときには見出し1タグで「マクロ展開しま~す」と宣言してやればよい、と。まぁ、そんなところでしょう。

ちょっと探してみたら見つかりました( /TestPlone/portal_skins/plone_templates/main_template)。これですな。

<a metal:use-macro="here/global_logo/macros/portal_logo">
 The portal logo, linked to the portal root
</a>

なんか見出し1タグじゃなくてリンクタグで書いてあるけど…。まぁ、タグは何でもよい、と。レンダリングされたものを見てみると見出し1になってるので、おそらく置き換わるのでしょう(-ω- )

  • meta:define-macro="hoge"でマクロ定義
  • metal:use-macro="hoge"でマクロ展開

ということだけ覚えておこう。

一方talの方はどんなものか。ロゴではリンクタグの中で3種類出現している。attributes、define、content。

まぁ名前からなんとなく予想できるけど、attributesは「href portal_url」なんていう指定があるからおそらくリンク先の指定をしているのでしょう。defineは変数を定義してるだけかな。それからcontentは「string:$portal_title」なんて書いてあるから、中身をサイトのタイトルとする指定。

うーむ。何となく意味はわかったけど、書式をしっかりおさえないとダメだなぁ。

カテゴリ
Plone Plone
Design
トラックバック用URL:
http://nagosui.org:8080/Nagosui/COREBlog2/72/tbping
コメントを追加

下のフォームに記入してコメントを追加できます。平文テキスト形式。

(必須)
(必須)
(必須)
(Required)
Enter the word

このBlogについて
Plone, Zope, Pythonなどのトピックについてのメモです。
カテゴリ
Plone (98)
Plone Products (23)
COREBlog2 (31)
COREBlog1 (29)
ReadingCOREBlog (7)
Zope (66)
Turbogears (18)
Django (12)
Python (25)
Linux (30)
Nagosui (12)
Design (33)
Misc (48)
moblog (5)
最近のエントリ
浜松ブラスバンド定期演奏会2008 nyusuke 2008年11月24日
Glossy Horizontal Menuを使う nyusuke 2008年11月17日
第3回Python東海終了 nyusuke 2008年11月17日
Universalじゃない件 nyusuke 2008年11月15日
最近のコメント
Re:WebデザイナーのためのDjangoはじめの一歩 nyusuke 2007年06月01日
Re:WebデザイナーのためのDjangoはじめの一歩 pateo 2007年05月31日
Re:東海Python Workshop 01終了 nyusuke 2007年05月31日
Re:東海Python Workshop 01終了 kfuruhata 2007年05月30日