文書操作
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」なんて書いてあるから、中身をサイトのタイトルとする指定。
うーむ。何となく意味はわかったけど、書式をしっかりおさえないとダメだなぁ。
- 固定リンク
- ¦
- コメント (0)
- ¦
- トラックバック (0)
- トラックバック用URL:
- http://nagosui.org/Nagosui/COREBlog2/72/tbping

