Personal tools
You are here: Home Wiki TAL
FrontPage >> Log >> PageTemplate >>

TAL

Document Actions
last edited 7 years ago by jack

TALの基本構文は以下のとおり。しかし、書いてみるとTALESと相互参照になる箇所がありそうですね

<tag-name tal:command="resource" [tal:tal-method="resource"] >

一つのタグに一つ以上のtal の評価式が入る。0でもいいが、それは単なるxhtml。

タグに意味があるときはそのタグ(普通に、h2とか、tr, tdとか)を使う。意味が無いとき(<dtml-var> で値をひっぱってくるときみたいなとき)は、span を使うみたい(たぶんなんでもよいんだと思うが)。

  • command

    正しい名前はしらないが、talでなにさせたいか、ってことなのでとりあえず command って書いただけで正式な用語じゃないです。

    • replace

      置き換え。<dtml-var issue_date> みたいな感じで、値を直に入れるときは <span tal:replace issue_date>Date of Issue </span>とかなる。Date of Issue には意味はなく、人が読みやすいコメントだと思っている。仮にissue_date が 2003/10/10 だとすれば、"<span tal:replace issue_date>Date of Issue </span>" の変換結果は "2003/10/10"となる。

    • content

      中身の置き換え。<td><dtml-var issue_date></td> みたいな感じで、<td tal:content issue_date>Date of Issue </td>とかなる。issue_date が 2003/10/10 だとすれば、"<td tal:replace issue_date>Date of Issue </td>" の変換結果は "<td>2003/10/10</td>"となる。

    • repeat

      乱暴に言えば <dtml-in> の代わり。resource の形式が "var resource" となる。var は繰り返しの中の一つ一つのオブジェクトで、TALESのpath式の"repeat"をつかって、repeat専用の変数にアクセスできる。下の例でいくと、ID は、repeat でとりだした var オブジェクトへのアクセスなので var/id だが、number は repeat で何番目かということなので repeat/var/number となる(ちょっとわかりずらいと思うけどネストすると真ん中のvarがないとこまるからだろう)。よって、repeat というのを変数(var のところ)につかえないと思う。

  <table>
   <tr tal:repeat="var here/objectValues">
<td tal:content="repeat/var/index">index</td>
<td tal:content="var/id">ID </td>
</tr> <table>

  1. UserOptions 1 editform 2 standard_wiki_header 3 RecentChanges 4 backlinks 5 ZWiki

    (以下省略)

  • repeat のプロパティは以下のとおり
    • index : 0からはじまる、今、何番目
    • number: 1からはじまる、今、何番目
    • letter: aからはじまる、今、何番目。zの次はaa。zzの次は aaa。26進数だ。
    • Letter: Aからはじまる、今、何番目。Zの次はAA。26進数大文字版。
    • even : !(index%2) indexが偶数なら 1(true)
    • odd : (index%2) indexが偶数なら 0(false)
    • end : 最後のitem ならtrue。最初ならってのはきっと not: repeat/var/index で判別するのだろう
    • length: repeat のitem数。
  • condition

    リソースの値がTrue ならそのtal のあるタグを表示する。パイプ("|"、or ですな) で条件を継いでいける。最後を nothing にしておくと、false だけどエラーが発生しない。そうでない場合、「そんなもんはない」というZope エラーが発生。また not: をつけると、属性反転。

  • attributes

    タグのコンテンツじゃなくて属性をいじる。attributesはタグ一個に一つのみ。複数の属性を設定するときは";"で区切るらしい。

  • define

    リソースを"label type:item" の形式にしてラベル(定数)の定義ができる。"global label type:item" にするとグローバル変数になる。そうでないときはタグ内でのみ有効。

    前のとあわせて、<dtml-in> っぽいのを書いてみた。上の例とはちがい、ループ用にspan を使っている。trでやると、conditionによる行表示ができないし、table でやるとテーブルがループする・・・ってやりました(^^;;

 <span tal:define="global numberhead string:No."></span>

<table> <span tal:repeat="var here/objectValues"> <tr tal:condition="not:repeat/var/index" tal:attributes="bgcolor string:#eeeeee"> <th><span tal:replace="numberhead">Head item of number</span></th><th> ID </th>

</tr> <tr tal:condition="repeat/var/even" tal:attributes="bgcolor string:#ffeedd;align string:right"> <td tal:content="repeat/var/number">index</td> <td tal:content="var/id">ID </td>

</tr> <tr tal:condition="repeat/var/odd" tal:attributes="bgcolor string:#ddeeff;align string:left"> <td tal:content="repeat/var/number">index</td> <td tal:content="var/id">ID </td>

</tr> <tr tal:condition="repeat/var/end" tal:attributes="bgcolor string:#eeeeee"> <th tal:content="repeat/var/length">total items</th> <th> items. </th>

</tr> </span> </table>

ちゃんと?文字が踊ってます。

  • omit-tag

リソースがTrue なら、中身ではなく、タグを削除する。Falseならなにもしない。よくわかんないけど、タグのみ削除したい場合はなんとなくありそうな気はします。

  • on-error

    実質的にはエラーメッセージを指定することができる、ということか?

    さっきでてきたnothingをあわせてみると

  <h1 tal:omit-tag="arienai" tal:on-error="string: arienaiはござらぬ">big string</h1>

<h1 tal:omit-tag="string:here">big string</h1> <h1 tal:omit-tag="nothing">big string</h1>

上は大きく"arienaiはござらぬ"と表示され、まんなかは "here" は not null なのでTrue、小さく "big string"、下はfalse なので、"big string"と、デカく表示されます。

 
そちらのOSの時刻なので 正確性はあなた次第
 
こういう意味のないの好き
 
本をお勧め中
 
CDもお勧め中
のだめカンタービレ ベスト100
ドラマの演奏とは違います。でもこの感じでこの価格ならアリかと
 
消耗品や家電
 
よく使うサイト
社名ロゴ88×631
 
ぐぐってみる
 
誰が使うんだろう
 

Powered by Plone