SearchResultsLimit

検索結果の表示ページにおいて,検索結果の数やテンプレートの構築時間に関係するテンプレートタグを追加します。 例えば,検索結果があまりに多かった場合に検索条件の見直しを促すメッセージを表示したり, またサーバ負荷が高く,結果ページの構築に時間がかかってしまうような場合にテンプレートの構築処理を中断してメッセージを表示するなどの使い方ができます。 (というか,そういう使い方しかできないのでは?)

リンク

最新版の取得

ソースリポジトリの下にあるZip Archiveリンクを利用して取得してください。

使用例

検索結果が30件を超える場合,検索結果の表示をそこで打ち切り,メッセージ(*A)を表示します。
テンプレートの処理時間が1.5秒を超える場合,検索結果の表示をそこで打ち切り,メッセージ(*B)を表示します。
ただし,そのような場合でも最低5件は検索結果を表示します。

<ul><MTSearchResultsLimit min_n="5" max_n="30" time="1.5">
  <MTSearchResultsLimitBody>
    <a href="<$MTEntryPermalink$>"><h1><$MTEntryTitle$></h1></a>
      :  
      構築に時間がかかりそうな複雑怪奇なテンプレート
      :
  </MTSearchResultsLimitBody>
</MTSearchResultsLimit></ul>

<MTSearchResultsLimitCountUp>
  検索結果が<$SearchResultsMaxCount$>件を超えたため全てを表示しません。検索条件を見直して検索結果を絞ってください。*A
</MTSearchResultsLimitCountUp>

<MTSearchResultsLimitTimeUp>
  サーバ負荷が高くなっているため検索結果は全てを表示しません。検索条件を見直して検索結果を絞ってください。(*B)
</MTSearchResultsLimitTimeUp>

検索処理時間:&lt;$MTSearchResultsTime$>ミリ秒

テンプレートタグリファレンス

MTSearchResultsLimit
機能はMovableType標準の<MTSearchResults>と全く同じですが,以下に続くテンプレートタグを使用するには,替わりにこちらを使ってください。
max_nオプション
検索結果を表示する最大数を指定します。 ここで指定された回数以上ではMTSearchResultsLimitBodyの中が表示されません。 同時にMTSearchResultsLimitCountUpとMTSearchResultsLimitUpが真になります。 省略すると全ての検索結果が表示され,上記の制限は行われません。
min_nオプション
後述のtimeオプションで処理時間の制限があったとしても,最低限,ここで指定された数は検索結果を表示します。 省略するとtimeオプションが有効な場合で,テンプレート処理に異様に時間を要した場合には検索結果が表示されないことがあります。
timeオプション
サーバ負荷が高いなどの理由で検索結果のテンプレート構築処理に時間を要した場合, 以降のMTSearchResultsLimitBodyの中が表示されず,検索結果の表示を途中で中断することができます。 同時にMTSearchResultsLimitTimeUpとMTSearchResultsLimitUpが真になります。 省略すると時間制限は行われません。
MTSearchResultsLimitBody
一つの検索結果を含むための条件タグです。MTSearchResultsLimitで設定した制限が発動すると表示されなくなります。
MTSearchResultsLimitCountUp
検索結果(実際はMTSearchResultsLimitBodyの処理回数)がMTSearchResultsLimitのmax_nで指定した数を超えた時に真になる条件タグです。
MTSearchResultsLimitTimeUp
検索結果の構築中にその処理時間が,MTSearchResultsLimitのtimeで指定した時間を超えた時に真になる条件タグです。
MTSearchResultsLimitUp
MTSearchResultsLimitCountUp,MTSearchResultsLimitCountUpの何れか一つの制限が発動すると真になる条件タグです。
$MTSearchResultsTime$
現在のテンプレート処理時間をミリ秒単位で返す変数タグです。
$MTSearchResultsMaxCount$
MTSearchResultsLimitコンテナタグのmax_nオプションで指定した数を返す変数タグです。

メモ

  • サーバにTime::HiResモジュールが導入されている場合,時間設定にミリ秒単位での指定が可能になります。

バージョン別対応状況