WordPressユーザーのbaserCMS覚え書き


サイトメンテナンス中を通知するプラグイン『Stop the Bokettch』をつくりました

学習を兼ねた小ネタプラグインの第2弾、『Stop the Bokettch for baserCMS』をつくりました。

サイトの公開状態が「メンテナンス中」のとき、画面上部のツールバーに通知メッセージを表示するプラグインです。

管理画面にログインしていると、サイトの公開状態にかかわらずフロント側(=運用中のウェブサイト)を見ることができます。そのため、うっかり「メンテナンス中にしたまま放置」という状況が起こりかねません。そうした うっかりミス=ぼけっち をなくしたいと考えて作ったプラグインです。

プラグイン名は、クローラ受け入れの諾否を通知するWordPressプラグイン『Stop the Bokettch』に由来しています。

プラグインの実装について

つくったコードをGitHubで公開しました。コード内にコメントを記しておいたので、興味がおありでしたら一度ご覧ください。「ここはこうした方がいいんじゃない?」というツッコミやプルリクエストも歓迎です。

前回の『EnableOembed』と同様、ビューに手を加える「ビューイベントリスナ」を使ってつくっています。『EnableOembed』ではレイアウト描画前にフックする beforeLayout イベントを使いましたが、今回はこれに加え、エレメント描画後にフックする afterElement イベントも使いました。ツールバーのファイルが /lib/Baser/View/Elements/admin/toolbar.php なので、エレメントに関わる afterElement イベントを使うのが適切と考えたわけです。

今回学んだこと

IDE(統合開発環境)を使うと効率的

日常的にPHPアプリの開発をしている方にとっては「何を今さら」の話でしょうが、プラグイン開発のときには『NetBeans』『PhpStorm』などのIDE(統合開発環境)を使うと効率的だと思います(私は『NetBeans』です。公式キャラの『ねこび~ん』と、baserCMSの『べっしー』は同じ作者さんですからね wink)。

baserCMS公式サイト「プラグイン開発について」の「コールバックメソッド内でのデータの参照方法」にあるように、プラグインに記述するコールバックメソッドでは $event->subject() でさまざまなオブジェクトや値を参照できます。その量たるやおびただしいもので var_dump() ではとてもじゃないけど追いつけません。

IDEに備わっているデバッガを使うと $event->subject() の内容をツリー状で表示してくれるので一覧性も高まり、使いたいオブジェクトや値を探しやすくなる利点があります。

導入までのハードルはちょっと高いですが、IDE、おすすめです。もっとも私も『NetBeans』一本というわけでなく、テーマファイルをがりがり書いていくときには『SublimeText 2』を使っています。『SublimeText 2』にはbaserCMSの関数を補完してくれるコードスニペット集を入れました。

コードスニペット集は @goichi_m さん作の『SublimeText2-baserCMS-snippets』をフォークして、baserCMS 3対応にしたものを使用中です。

プラグインで使うCSSは /app/Plugin/{プラグイン名}/webroot/css 内に

今回のプラグインには、通知メッセージのスタイルを整えるCSSを同梱しました。

CakePHPの公式マニュアル「プラグイン」の「プラグインアセット」項を参考に、プラグインに同梱するアセットファイル(CSSファイル)を /app/Plugin/StopTheBokettch/webroot/css 内に配置。そのうえでメソッド内にて

$Subject->Helpers->BcBaser->css(array('StopTheBokettch.style', '//maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css'), array('inline' => false));

とCSSファイルを呼び出しています。
(font-awesome.min.css はアイコンフォントを使うためのCSSファイル)

感心したのは

'StopTheBokettch.style'

で出力されたHTMLのソースが

<link rel="stylesheet" type="text/css" href="/stop_the_bokettch/css/style.css" />

としか書かれてないのに、きちんと /app/Plugin/StopTheBokettch/webroot/css/style.css を走査してくれるところ。まだまだbaserCMSプラグインを手探りでつくっている段階ですが、また新たな発見ができました。