「カテゴリ別記事リスト」テンプレートのページ送りエラーの対処法

「カテゴリ別記事リスト」のページネーション、ページを分割する機能でエラーが起こったときの対処法。

「カテゴリ別記事リスト」テンプレートはページ分割機能がある にエラーについて明記したが、ここでは対処法について説明する。

「過去の記事」リンクをクリックして、次の該当カテゴリ記事を表示しようとするとエラーメッセージ

「テンプレートはインデックスではないアーカイブタイプのブログ記事リストでなければなりません」

ページネーションのエラーメッセージ

と表示され、次のページが表示されない。

このエラーが出力された場合は、データベース(DB)を編集しなければ解決できない。

「カテゴリ記事リスト」テンプレートのDB情報のidentifierプロパティが空白のため、動作する検索プログラム、lib/MT/App/Search.pm のロジックでエラーが出力されている。

そのため、このプログラムを動かすためには、identifierプロパティにテンプレートのタイプをセットしなくてはならない。

そのため、データベースをphpAdminで編集する。

さくらインターネットの場合、

コントロールパネル>「データベースの管理」>phpAdmin へアクセスできる。

IDとパスワードでログインし、MTで使用しているデータベースを選択。

テーブル [mt_template]を選択。

テンプレートID順に表示されるので、該当する「カテゴリ別記事リスト」のIDを選択。

IDは、テンプレートを選択すると、URLに template&id=xxx と表示されるので、このxxxがID番号になる。

確かに、identifierは空白である。

ここに「category_entry_listing」を入力して、保存する。

MTデータベースの編集

すると、エラーメッセージが無くなって、ページ送りができるようになった。

この情報は、藤本壱さんの「Movable Type 5β4でのページ送りの不具合と修正」。

エラーメッセージはバージョンが違うので多少違うが、プログラムのロジックは同じなので、そのまま採用できる。エラー箇所の部分は特定できたが、DB絡みだとわかるのはなかなか難しい。さすがMTの藤本さん、感謝である。

すでに、このページネーション機能、英語版ではVer.4.3であった機能らしく、それを日本語版に対応するために見つかった不具合だそうだ。

ちなみにRainierでは、インデックスページテンプレートでもページ分割ができるようになっている。

さて、考えられる原因は、このMTはMT4から数回アップグレードを行っており、現在はVer5.27。

このアップグレード時に、なんらかの原因でテンプレート情報の一部が更新されなかったのかバグなのか定かではないが、新規にテンプレートを追加すると発生するらしい。

とはいえ、MT5.27でテーマEigerを作成したが、デフォルトのテンプレート以外は追加していない。(アーカイブテンプレートを新規に追加していない)

インデックステンプレートなど、他のテンプレートはidentifierプロバティは空白ではない。

アップグレードしたMTでは、このページ分割機能、チェックが必要だ。

MT6最新の新規インストールMTでは、もちろん問題なく表示されている。

このMTもMT6にアップグレードすれば改善できるであろうか。また後日、報告したい。