SearchEntriesプラグインをリスト系アーカイブテンプレートで使う際の注意点

SearchEntriesプラグインのテンプレートタグを、カテゴリアーカイブなどのリスト系アーカイブテンプレートで使う場合、注意する点があります。

1.問題が起こる場合

リスト系のアーカイブテンプレートでは、テンプレートの再構築に入る前に、そのアーカイブに必要な記事が先に読み込まれるようになっています。
一方、SearchEntriesプラグインでは、MTEntriesタグの処理を流用するために、「アーカイブに必要な記事」の情報を上書きする処理を行っています。

そのため、リスト系アーカイブテンプレートの中で、SearchEntriesプラグインによる検索を行い、その後にMTEntriesタグでアーカイブ本来の記事を出力しようとすると、正しく出力されないという問題が起こります。

2.解決方法

SearchEntriesプラグインには、上記のような状況を想定して、「MTBackupEntries」と「MTRestoreEntries」というタグが入っています。
以下のように、検索(MTSearchConditionsタグのブロック)の前にMTBackupEntriesタグを入れ、検索結果を出力し終わった後でMTRestoreEntriesタグを実行すると、アーカイブ本来の記事を正しく出力することができます。

<$mt:BackupEntries>
<mt:SearchConditions>
  検索条件
</mt:SearchConditions>
<mt:IfNonZero tag="SearchLoadedEntryCount">
  検索結果を出力する部分
</mt:IfNonZero>
<$mt:RestoreEntries$>
<mt:Entries>
  アーカイブ本来の記事を出力する部分
</mt:Entries>