カテゴリ別記事アーカイブでのページング
Movable Typeでカテゴリ別記事アーカイブで、記事の数がテンプレートで設定した数を超える場合、自動でページングが行われますが、この記事はPageButeなどを使わない場合動的生成されます。
たとえば、本ブログでは「カテゴリ別記事アーカイブ」テンプレートの最初の行に
<$mt:Var name="entries_per_page" value="20"$>
という形で1ページ20件の表示を行う設定をしています。
ページングでエラーが出る
さて、このページングで実際に「過去の記事」などのリンクをクリックしたときに「テンプレートはインデックスではないアーカイブタイプの記事リストでなければなりません」というエラーが出るときがあります。
エラーメッセージ
問題の対処はMySQLで
調べてみたのですが、この問題はMovable Type 4のころ発生し、その対処も提案され、本体の対応も既に行われていました。当該ソースをチェックしましたが、対処されています。でもまだ発生しているのは、アップデートを続けているのと関連があるのかもしれません。
もう一つ、Movable TypeのMySQLデータベースを編集して対処する方法があり、こちらを行ったところうまくいきました。ただ、バージョンが上がっている関係か引用元と若干異なるのでそれを説明します。
1. エラーの出るページURLをチェック
まず、エラーの出るページのURLを見ます。たとえば、次のようになっています。
https://www.markn.org/cgi-bin/mt/mt-search.cgi?IncludeBlogs=1&template_id=123&limit=20&archive_type=Category&category=mycategory&page=2
このURLにある"template_id=123"の123という値をメモしておきます。
2. MySQLにログイン
MySQLにログインします。青字で示している部分が入力するところです。
$ mysql -u root -p mt
(以下のコマンドはオプション: 正しくmtのデータベースを見ているかどうか以下で確認できます)
> show tables;
> show columns from mt_template;
3. データをチェック
データベースの状態をチェックします。
mysql> select template_identifier,template_id from mt_template where template_id=123;
+---------------------+-------------+
| template_identifier | template_id |
+---------------------+-------------+
| | 123 |
+---------------------+-------------+
1 row in set (0.01 sec)
私の場合は、上記のようにtemplate_id=123に対応するtemplate_identifierの値が空になっていました。
4. データを修正
そこで、これを修正します。
> update mt_template set template_identifier='databased_entry_listing' where template_id=123;
Query OK, 1 rows affected (0.02 sec)
Rows matched: 1 Changed: 1 Warnings: 0
> quit
これで先ほどエラーになったページをもう一度読み込んでみて、動作すればokです。
匿名
画面が真っ暗、でもカーソルは出てる状況。
探して、ここにたどり着きました。
パスワード入力で、復活!
修理に出す寸前でした。ホントにありがとう!