WordPressユーザーのbaserCMS覚え書き


開発に便利そうなDebugKitをインストールしてみました(baserCMS 2.1.x+PHP 5.3.xで)

WordPressには、プラグインやテーマの開発に便利な『DebugBar』というプラグイン(と、その拡張プラグイン)が公式ディレクトリで配布されています。これを使うと、ページ生成時に実行されたクエリーやグローバル変数の中身をフロントエンド(ブラウザ上)で確認でき、何かと便利です。

で、baserCMSでも同じような機能を持たせられないかなあ……と探したら、CakePHPに『DebugKit』というプラグインがあるのがわかりました。さらに調べたところ、baserCMSの開発ブログに「BaserCMS で DebugKit プラグインを利用する」という記事を発見。

おお、これはやってみるべし、と組み込んでみました。

例示のコードだと baserCMS 2.1.x+PHP 5.3.x ではエラーが

ブログの記事によると、作業の手順は下記のようになります。

  1. GitHubより『DebugKit』を入手(CakePHP 1.2対応版を入手すること)
  2. /app/plugins/ に debug_kit というディレクトリを作り 1. のファイル一式を入れる(これにより『DebugKit』をbaserCMSのプラグインとして機能させる)
  3. /app/plugins/debug_kit/controllers/components 内に debug_kit_hook.php を作る
  4. 管理画面にて『DebugKit』プラグインを有効化する
  5. 管理画面にて、サイトの制作・開発モードを「デバッグモード1」にする

ということで、記事の教えに沿ってやってみたところ

debugkit.png

エラーは出るわ文字化けするわであわわわわ……記事にあったスクリーンショットから察するに、 どうもbaserCMS 1.x系の時期に書かれたTipsのようです。そこで、2.x系+PHP 5.3.xで動くよう、いくつか変更を加えてみました。

1文字削除+拡張子変更で不具合解消

まずやったことは、ページ上部に出ている

Warning (2): Parameter 1 to DebugKitHookComponent::initialize() expected to be a reference, value given [{path_to}\baser\controllers\components\bc_plugin_hook.php, line 120]

というエラーの解消です。定石どおり(?)エラーメッセージをググってみたところ、どうやら debug_kit_hook.php 内での引数の渡し方に原因があるとのこと。PHP 5.3になってから、エラーメッセージにある bc_plugin_hook.php 内の call_user_func_array() の挙動が変わったらしく、/app/plugins/debug_kit/controllers/components/debug_kit_hook.php を書き換える必要がありました。

- function initialize(&$controller){
+ function initialize($controller){

もう一つはこの文字化け。

mojibake_01.png

これは、ブラウザ表示のエンコードをUTF-8にしてみて判明しました。

mojibake_02.png

たしかに /app/plugins/debug_kit/views 内を見てみますと *.ctp のテンプレートファイルがありました。

そこで *.ctp のファイルを *.php にしてみたところ

debug_kit_01.png

エラー解消!

debug_kit_02.png

『DebugKit』がうまく機能するようになりました。

修正済みのファイルをGitHubに公開しました

baserCMSも、CakePHP 2.4ベースの次期バージョンが開発進行中で、ここで書いた方法が使い物にならなくなるのも時間の問題ですが、それでもどなたかのお役に立てれば……と、修正済みのファイルをGitHubに公開しました。

tecking/debug_kit

git で手元にもってくるなり、ZIPファイルをダウンロードして展開するなりしてお使いいただければうれしいです。なお、ブランチ名は 1.2-branch-basercms となっています。