wiki.zope.jp
sortExpr
   
RecentChanges WikiHelp WikiPractice JumpSearch

クックブック : dtml-inタグのsort属性を変化させたい

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