Home > MovableType > mt.Vicunaにおける検索結果の分割について

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">&lt;&lt;</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$>">&#8230;</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">&gt;&gt;</a></li></MTIfMoreResults>
</ul>

あ,<ul>のclass名がpagebuteなのは,CSSを設定するのが面倒になったからなんて口が裂けても(ry

Comments:0

コメントする

Home > MovableType > mt.Vicunaにおける検索結果の分割について

Search

Tag Cloud

CC Licence

Creative Commons License

このブログはクリエイティブ・コモンズでライセンスされています。

Feeds

Links

Return to page top