お知らせ

Movable Type 5.1 Webサイト製作ガイドVolume 12011年6月30日

Movable Type 5.1 Webサイト製作ガイドVolume 1」を発売しました。
Movable Type 5.1を基本からしっかりマスターしたい方のための書籍です。
前書「Movable Type 5 Webサイト製作ガイド Volume 1」をMovable Type 5.1対応に改訂しました。 Movable TypeでWeb製作をされている方などにお勧めです。
PDFによる販売で、当サイトでのみ購入できます(書店では購入できません)

他にも多数書籍を執筆しています。
こちらもぜひご覧ください。

ブログ記事詳細検索プラグイン(その31・検索結果のページ分割/PHPによるキャッシュ)

| コメント(0) | トラックバック(0)

SearchEntriesプラグインでは、フォームを使って動的に検索する際にも、検索結果のページをキャッシュすることができます。
その方法を解説します。

1.検索フォーム側

検索フォーム側では、キャッシュを使わない場合と比べて、以下の2点を変更します。

  • フォームの送信先のアドレス(form要素のaction属性)を、MTRealtimeRebuildPHPPathタグで表して、PHPによる処理を行うよにします。
  • 複数選択のselectや、name属性が同じチェックボックスを複数使いたい場合、それらのname属性には、「○○○[]」のように「[]」を付けます。

例えば、カテゴリをチェックボックスで選んで検索する場合だと、検索フォームは以下のように組みます。
1行目のform要素で、action属性を<$mt:RealtimeRebuildPHPPath$>のタグで表し、PHPによる処理を行うようにしています。
また、12行目のinput要素で、name属性を「cat[]」にして、「cat」の後に「[]」を付けています。

<form method="get" action="<$mt:RealtimeRebuildPHPPath$>">
  <input type="hidden" name="blog_id" value="<$mt:BlogID$>" />
  <input type="hidden" name="tmpl_id" value="<$mt:GetTemplateID tmpl_name="詳細検索結果"$>" />
  <input type="hidden" name="first_time" value="1" />
  <div>
    <label for="cat">カテゴリ</label>
    <div id="cattree_div">
    <mt:SortedTopLevelCategories>
      <mt:SubCatIsFirst>
        <ul class="cattree">
      </mt:SubCatIsFirst>
      <li><input type="checkbox" name="cat[]" value="<$mt:CategoryLabel$>" /><$mt:CategoryLabel><br />
      <$mt:SubCatsRecurse$>
      </li>
      <mt:SubCatIsLast>
        </ul>
      </mt:SubCatIsLast>
    </mt:SortedTopLevelCategories>
    </div>
  </div>
  <p>
    <input type="submit" value="送信" />
  </p>
</form>

なお、このフォームを含むテンプレートの例は、以下のリンクからダウンロードすることができます。

検索結果をページ分割してキャッシュする場合の検索フォームテンプレートの例

2.ページ移動リンクの出力

一方、検索結果のテンプレートでは、ページ移動リンクを出力する部分を書き換えます。

キャッシュしない場合、ページ移動リンク出力部分で、移動先のアドレスを求めるために、以下のようなMTSetVarBlockタグを使っていました。

<mt:SetVarBlock name="pager_link"$><$mt:DivPagesCGILink tmpl_name="テンプレート名" build_params="1" name="検索フォームの各要素のname属性"$>&amp;page=</mt:SetVarBlock>

この行の中で、以下の3箇所を書き換えます。

  • MTDivPagesCGILinkタグをMTDivPagesPHPLinkタグに置き換えます。
  • 「php="1"」のモディファイアを追加します。
  • 「expire_modified="1"」のモディファイアを追加します。
<mt:SetVarBlock name="pager_link"$><$mt:DivPagesPHPLink tmpl_name="テンプレート名" build_params="1" name="検索フォームの各要素のname属性" php="1" expire_modified="1"$>&amp;page=</mt:SetVarBlock>

なお、このページ移動部分を含む検索結果テンプレートの例は、以下のリンクからダウンロードすることができます。

検索結果をページ分割してキャッシュする場合の検索フォームテンプレートの例

3.SearchEntriesプラグイン関係の記事の一覧

SearchEntriesプラグイン関係のその他の記事は、以下のリンクから参照できます。

Facebook連携

当記事について「いいね」や「送信」を行っていただけると幸いです。


この記事についてウォールに投稿

トラックバック(0)

トラックバックURL: http://www.h-fj.com/mt/mt-tb.cgi/2194.

コメントする


Facebookでコメント

試験的にFacebookのコメントフォームを設置しました。