PageBute プラグインのアップデート時に PageNext を一括置換する

Movable Type で静的にページ分割というと PageBute プラグインを利用する方も多いのではないでしょうか?

静的ページ用ページ分割プラグイン:PageBute - Movable Type技術ブログ:
http://www.mtcms.jp/movabletype-blog/plugins/pagebute/200702011953.html

PageBute 3.5.7 で一部のタグ名が変更になっていたため、とあるサイトで過去バージョンから最新版にアップデートしたところ、再構築エラー。。。
対象となるテンプレートを個別に修正すればよいものの、面倒くさがりな BUN としては少しでもラクをしたいところ(。-_-。)

そこで、SQL で一括置換する方法を考えてみました。

お約束ということで...

ここで紹介する方法は、phpMyAdmin などを利用して SQL を実行します。
データベースを直接書き換えるため、あらかじめバックアップを取っておいた方がいいですね。

また、BUN が試した範囲では問題ないことを確認していますが、データベースの破損や任意のカスタムフィールドが適切に表示されなくなった・・・など、万一不具合があった場合も責任は取れませんしサポートもできかねますので、あらかじめご了承ください。

SQL の実行

Movable Type のテンプレートは、mt_template テーブルの template_text カラムに保存されています。

PageBute プラグインで変更になるのは「mt:IfPageNext」ブロックタグの開始・終了タグと「mt:PageNext」のファンクションタグですので、当該カラムに含まれる「PageNext」の文字列を「PageAfter」に置き換えます。

いきなり実行するのも不安なので、以下の SELECT 文で事前に結果を確認してみます。

SELECT template_text, REPLACE(template_text, 'PageNext', 'PageAfter') FROM mt_template WHERE template_text LIKE '%PageNext%';

問題なければ、UPDATE 文を実行。
タグ名に「PageNext」の文字列を含むカスタムフィールドがある場合は、もう少し厳密に絞り込むよう調整が必要です。

UPDATE mt_template SET template_text = REPLACE(template_text, 'PageNext', 'PageAfter') WHERE template_text LIKE '%PageNext%';

あとは、置換したテンプレートを含むウェブサイトやブログを再構築すれば完了です。

やってみて

修正が必要なテンプレート数がかなり多かったものの、こんな感じで一括置換してしまえばかなり効率化できますね。

なお、「ファイルリンク」や「テーマ」機能でテンプレートを管理している場合は、別途ローカルのファイルを修正してアップロードする必要があるので、忘れないようにしようと思います(。-_-。)