2001/11/20 cheeseshop
Zope.orgの検索ページもそうだが、検索結果の項目をそれぞれのページのタイプ、タイトル、日時などでソートできるようリンクがついていることがある。
まあsortを行う属性名をパラメータで渡してやれば似たようなものを作れるだろうと思った。ところがdtml-inのsort属性は「1つ以上の属性名をコンマで区切ったもの」しか受けつけてくれないようなのだ。式や属性名を示す文字列を与えることができないのでは、常に決められた属性でしかソートできない‥‥
困ってしまってふとDT_In.pyなんてものを覗いてみたら、実はdtml-inにはsort_exprなんて属性があることを発見。こんな大事なものヘルプに書かないなんて‥‥うう。 :
<dtml-unless sortColumn>
<dtml-call "REQUEST.set('sortColumn','id')">
</dtml-unless>
<table border=1>
<tr><th>id</th><th>title</th></tr>
<dtml-in "objectValues('DTML Method')" sort_expr="sortColumn">
<tr><td><dtml-var id></td><td><dtml-var title></td></tr>
</dtml-in>
</table>
これを「?sortColumn=title」なんてつけて呼び出せば、idの代わりにtitleでソートしてくれる。「?sortColumn=bobobase_ modification _time」だと最終更新日時でソートできる。これだと変な属性名与えちゃう可能性もあるかなあ、と思って試しに「?sortColumn=lovelyspam」なんてやってみたが属性エラーは出ないみたい。
またreverse_exprなんて属性もあって、この真偽値を反転させることで正順・逆順も切り替えることができる。
コメント
| Last edited Sun, 10 Sep 2006 15:54:53 +0900 | Edit this page |