mt.Vicunaにおける検索結果の分割について
実はこれ先週のうちに解決していたのですが,週末から昨日にかけてぶらっと名古屋の方に旅行に行ってまして(詳しくは後でエントリーアップします),書くのが遅くなってしまいましたがようやく覚書です.
MT 4.2以降の機能として備わった検索結果表示の分割化については,一応Six Apartの方でもちゃんと解説をしている訳なのですが...
実はこのとおりに行っても,mt.Vicunaでの検索結果やタグのリンク先では分割表示すらされません.ちなみにMT 4.2でのデフォルトテンプレートでは問題ないようなので,検証してみたところ,mt.Vicunaで一つ抜けている記述がありました.一番オーソドックスなところでテンプレートウィジェットにある検索部分のソースを見てみたのですが...
- mt.Vicuna(2.2.0)の場合
<form class="searchForm" method="get" action="<$MTCGIPath$><$MTSearchScript$>"> <fieldset> <legend><label for="searchKeyword"><$MTBlogName encode_html="1"$> - 検索</label></legend> <div> <input type="hidden" name="IncludeBlogs" value="<$MTBlogID$>" /> <input type="text" class="inputField" id="searchKeyword" name="search" size="10" onfocus="if (this.value == 'Keyword(s)') this.value = '';" onblur="if (this.value == '') this.value = 'Keyword(s)';" value="Keyword(s)" /> <input type="submit" class="submit" id="submit" value="Search" /> (以下略)
- デフォルトテンプレートの場合(search_results分岐を外した状態で表示)
<form method="get" action="<$mt:CGIPath$><$mt:SearchScript$>"> <input type="text" id="search" class="ti" name="search" value="<$mt:SearchString$>" /> <input type="hidden" name="IncludeBlogs" value="<$mt:BlogID$>" /> <input type="hidden" name="limit" value="<$mt:SearchMaxResults$>" /> <input type="submit" accesskey="4" value="<__trans phrase="Search">" /> (以下略)
一応強調表示をしているので分かると思うけど,検索結果の分割表示をする際には「SearchMaxResultsの指定をmt-config.cgi上で行う」ということになっていますが,実は検索時(テンプレート)のvalueにもこっそりlimitの設定が追加されていたということなのですね(^^;
そんなわけで,mt.Vicunaの検索ウィジェットにlimitの設定を追加したところ,綺麗に分割するようになってくれました.めでたしめでたし(ぉぃ.当然ですけど,検索結果の方だと「詳細検索」が出来るようになっているので,念のためそちらにもlimit指定を追加しておいた方がいいと思います.
そうそう,タグの方ですけど実はこれも全く同じ理由でlimitを追加しないと分割してくれません.タグクラウドとかだと後ろに&limit=<$mt:SearchMaxResults$>
を追加する感じになると思います(SearchMaxResultsで指定した数値を直接打ち込むという手もあります.うちはSEO対策をしているので,結果として直接打ち込みとなってしまったのですが(^^;).
なお,うちでの検索結果の分割表示テンプレートですけど,Movable Type 備忘録の検索結果ページのページ分割をカスタマイズを参考にさせてもらって,こんな感じにしています.
<MTSearchResults> <$MTCurrentPage setvar="curpage"$> (中略) </MTSearchResults> </dl> </div> <ul class="pagebute"> <!-- 前ページ表示 --> <MTIfPreviousResults><li><a href="<$MTPreviousLink$>" title="Prev"><<</a></li></MTIfPreviousResults> <!-- 開始ページ番号取得 --> <MTSetVarBlock name="stapage"><$MTGetVar name="curpage" value="3" op="-"$></MTSetVarBlock> <!-- 開始ページ < 0 の場合 1 をセット --> <MTIf name="stapage" lt="0"><MTSetVar name="stapage" value="1"></MTIf> <!-- 最大表示ページ番号取得 --> <MTSetVarBlock name="dispage"><$MTGetVar name="stapage" value="9" op="+"$></MTSetVarBlock> <MTPagerBlock> <MTIf name="__counter__" eq="$dispage"> <li><a href="<$MTPagerLink$>">…</a></li> <MTElseif name="__counter__" lt="$dispage"> <MTIf name="__counter__" ge="$stapage"> <MTIf name="__counter__" eq="$curpage"> <li><span class="current"><$MTVar name="__value__"$></span></li> <MTElse> <li><a href="<$MTPagerLink$>"><$MTVar name="__value__"$></a></li> </MTIf> </MTIf> </MTIf> </MTPagerBlock> <!-- 次ページ表示 --> <MTIfMoreResults><li><a href="<$MTNextLink$>" title="Next">>></a></li></MTIfMoreResults> </ul>
あ,<ul>
のclass名がpagebuteなのは,CSSを設定するのが面倒になったからなんて口が裂けても(ry
Comments:0