/ / 最新

swk's log - clsearch.cgi の詳細モード

2005-11-03

* clsearch.cgi の詳細モード [logging][chalow]

chalow に付属する検索 CGI の clsearch.cgi が,いつの頃からか詳細モード ($mode == 1) だと記事タイトルや日付を表示してくれなくなってて,あれ? とか思いつつ放置していた.

で,ふと思い立って中身を読んでみたところ,ページの最小単位が日ごとからアイテムごとに変わったときの副作用だと理解した.

詳細モードの動作は,

  • cl.itemlist から文字列を検索して,ファイル名と記事 ID を得る
  • 該当するファイルから,<!-- start:$id --> と <!-- end:$id --> の間を抜き出して (get_item) 表示

となっている.日ごとページから抜き出していたときは記事タイトルが start: 〜 end: 間に含まれていたけど,アイテムごとページの場合,デフォルトのテンプレートだと記事タイトルは <h1>〜</h1> の方にあるので,結果として記事タイトル無しのまま抽出されて並ぶことになる.

というわけでアイテムページのテンプレートでも,start: 〜 end: 間に記事タイトルとかを書いてやるようにすれば,clsearch.cgi はちゃんと表示してくれる.<h1>〜</h1>の方はどうしましょうかね,と思ったけど,両方に書いておくことにした.ちょっと変かな.まあいいよな.

さて日付はどうしよう.というか仕組みを考えると,アイテムごとページが導入される前から日付は表示されていなかったってことになるな.よく覚えてないけど.一番簡単なのは,start: 〜 end: 間に日付も入れてしまうって方法かな.

<!-- start:<TMPL_VAR name=ymdi> -->
<div class="day">
<h2><span class="date"><a href="<TMPL_VAR name=ymd>.html">
<TMPL_VAR name=ymd></a></span></h2>
<div class="body">
<div class="section">
<h3 class="subtitle"><TMPL_VAR name=header> <TMPL_VAR name=cat></h3>
<TMPL_VAR name=content>
                        (中略)
</div><!-- section -->
</div><!-- body -->
</div><!-- day -->
<!-- end:<TMPL_VAR name=ymdi> -->

start: 〜 end: の意味を変えちゃうのでちょっと危険な香りもする.日ごとページの方の start: 〜 end: と構造が変わっちゃうし.これが嫌な場合は clsearch.cgi をいじるしかないかなあ.

(実は最初は clsearch.cgi をいじってたんだけど,結局元に戻して以上のような対処に落ち着いた)

最終更新時間: 2009-01-04 15:31


Shingo W. Kagami - swk(at)kagami.org