サブカテゴリーの再構築

投稿者:

一週間ほど前に、indexページのCategory Archiveのリストを、主カテゴリーと副カテゴリーにツリー化してくれるプラグインSubCategories v0.3を導入した。


やり方は、なかよしこよしさんの「MTで主カテゴリーの中に副カテゴリーを作る」を参照して、SubCategoriesを準備・設定し、あとは、Main IndexのテンプレートのCategory Archiveのところの
<div class=”side”>と</div>の間の部分を、

<MTSubCategories show_empty=”0″>
<MTSubCatIsFirst><ul class=”ul-catarc”></MTSubCatIsFirst>
<li class=”li-catarc”>-
<a href=”<$MTCategoryArchiveLink$>”><$MTCategoryDescription$>(<$MTCategoryCount$>)</a><br>
<MTSubCatsRecurse>
</li>
<MTSubCatIsLast></ul></MTSubCatIsLast>
</MTSubCategories>

に置き換え、さらに、ulタグ、liタグの設定を、スタイルシートのテンプレートで適当に設定して完了した。
また、これに加えて、BLOG質問箱さんの「各エントリーにカテゴリ名を表示する」を参照して、各エントリーに主カテゴリーと副カテゴリーの名前が表示されるようにした。
と・こ・ろ・が!
今日になって、ちょっとカテゴリーの分類をちょっと変えてみようと思い、まずは該当するエントリーのカテゴリー設定を変更し、「Categoryの編集」で、一部カテゴリーを削除したのだが、SubCategories v0.3には、カテゴリー分類の変更・削除機能がついておらず、そのまま再構築したら、なんと途中で、「Can’t call method “label”…..sub_cats.pl line 67」なんてメッセージが出てきてエラーになってしまった。エラーといっても、削除したはずのカテゴリーが相変わらず残ったままで、他の部分はすべて正常に再構築されている状態なので、大きな問題ではないのだが、それでも気持ち悪い。なんとかしようとググったら、SubCategoriesの作者のページのComments and Trackbacksの18番に次のようなカキコを発見。

If you’re using MySQL and you’re somewhat MySQL-savvy, you can delete the appropriate row from the mt_plugininfo table.
The syntax to SELECT the proper row is:
SELECT * FROM mt_plugindata WHERE plugindata_plugin=’SubCategories’ AND plugindata_key=’25’
I won’t list the DELETE syntax here for fear of collecting blame for data loss, but it’s very similar. 🙂

で、急いで、大学のサーバーにあるMySQLに接続したのだが、MySQLなんて、そもそも素人なもんだから、とりあえずMySQLクイック・リファレンスとか見ながら、「とにかく消せばいいんだな」ということで、なんとテーブルmt_plugindataを丸ごとDROPコマンドでデリってしまった!
今から考えれば、単にテーブルの中身をクリアすれば良かったのだが、とにかく、そのままもう一度SubCategoriesのCGI”mt-sc.cgi”を動かして、カテゴリー・ツリーを再構築しようとしたら、「Error saving MT::PluginData」というエラーメッセージ。そこでようやく、mt_plugindataそのものを削除しちゃいけなかったんだと気づいたが、すでに時は遅し。バックアップもとってなかったし。
で、かくなるうえは、MT再インストールかぁぁぁぁと暗然たる気持ちになったのだけど、なんとかmt_plugindataのテーブルを再度作れないかと思って、MySQLコマンドでテーブルを作るときは、「create table テーブル名」だから、ってことで「create table mt_plugindata」で検索すると、ありました。MovableBLOGのエントリー“PluginData”に、

create table mt_plugindata (
plugindata_id integer not null auto_increment primary key,
plugindata_plugin varchar(50) not null,
plugindata_key varchar(255) not null,
plugindata_data mediumtext,
index (plugindata_plugin),
index (plugindata_key)
);

という記述が。ちなみにこの記述そのものは、まだMTにMT::PluginDataというモジュールが入っていない頃に、これを導入してアップグレードするためのものみたいだが、とにかくこれをMySQLコマンドラインから打ち込んで、見事にmt_plugindataのテーブルを再生。で、もう一度mt-sc.cgiを動かして、ツリーの設定をやり直したら、バッチリうまく行きました。
というわけで、サブカテゴリーの再構築をする際は、MySQLをよく理解した上で慎重にやりましょう。
(ま、意図的に、mt_plugindataを丸ごと「drop table mt_plugindata;」コマンドで消去し、すぐに「create table mt_plugindata」を上記のような内容でやってもいいわけだが。 )

 

1つ星 (まだ評価がありません)
読み込み中...

1件のコメント

ただいまコメントは受け付けていません。