ここから本文です

baserCMS開発ブログ

BaserCMSカスタマイズ時のポイント

こんにちは、@ryuringです。

最近、ユーザーズフォーラムでよく話題になっている事を少しまとめてみました。
BaserCMSのカスタマイズの参考になれば幸いです。

(もう少し余力があればちゃんとドキュメント化したかったのですが、取り急ぎ参考程度にどうぞ)

パッケージの構成について

BaserCMS は、PHP フレームワークである CakePHP の拡張性をそのまま踏襲しています。
これは、BaserCMS コアパッケージのみをバージョンアップするだけで、新機能やバグフィックスを取り込めるようにする為です。

BaserCMS をダウンロードしてパッケージを展開すると、app / baser / cake の3つフォルダが梱包されています。

  • app ・・・アプリケーション開発用のフォルダ
  • baser ・・・BaserCMS のコアパッケージ
  • cake ・・・CakePHP のコアパッケージ

独自に制作・開発するプログラム等は 全て appフォルダに格納していきます。
これにより、BaserCMS や CakePHP のコアパッケージがバージョンアップした場合、各フォルダを上書きするだけで簡単にアップデートできる仕組みを実現しています。

 

静的ファイルの配置場所はどこ??

さらに、appフォルダの中には、webrootフォルダが梱包されており、このフォルダが重要な役割を持っています。通常、展開したファイルやフォルダ群は、WEBサイトの公開領域のトップフォルダ(ドキュメントルート)に保存しますが、その場合、上記の webroot フォルダが事実上のドキュメントルートの役割をする事になります。

ようするに、静的ファイル等はwebroot内に配置する事で、ブラウザよりアクセスする事ができるようになります。

例えば、app/webroot/test.html として配置した場合、http://xxx.xx/test.html として参照する事ができます。この構成が複雑でわかりにくいという場合は、静的ファイルの置き場所を通常の場所に切り替える方法もあります。

 

画像や CSS はどこに配置するか?

BaserCMS ではテーマという仕組みがあり、app/webroot/themed/ 内にテーマを配置します。
テーマ内には、img フォルダや、css / js フォルダを配置する事ができますが、app/webroot/ 内にも css 等のフォルダがあり、どちらに設置してよいか迷ってしまいます。

実はどちらに配置してもよいというのが正解で運用方法によって選択する必要があります。

それは、BaserHelper を利用する事で、実際の配置場所を意識せずとも透過的に呼び出せる仕組みが準備されているからです。
例えば、CSS を読み込む場合に、$baser->css('import') と記述すると次の順番で、CSSファイルを捜索し先に見つかった CSS が適用されます。

 

app/webroot/themed/{テーマ名}/css/import.css
app/webroot/css/import.css
baser/vendors/css/import.css

つまり、BaserHelper を利用するのであれば、どちらに配置しても読み出されるという事です。

 

なお、テーマフォルダに配置するメリット、デメリットは次のとおりです。

メリット

  • リニューアルの際、テーマとして新デザインを準備すれば管理画面で簡単にデザインの切り替えができる
  • 汎用的に作成すれば、テーマとして配布する事ができる

デメリット

  • 階層が深い(ぐらいでしょうか・・・?)

 

独自のプログラムの開発について

CakePHP の流儀にのっとり、独自のプログラムを開発する場合、コントローラーや、モデルは、appフォルダ内に配置していきます。
ビューは、appフォルダ内のviews でも、テーマでもどちらでも構いません。

BaserCMS の管理画面に独自のプログラムを組み込むには、BaserCMSの流儀も若干ありますのでそちらに従います。
CakePHP の開発知識があれば簡単に管理画面を用意する事ができますので便利です。

 

コアプログラムのカスタマイズするには?

既存で用意されているコアプログラムのカスタマイズを行いたい場合、cakeフォルダや baserフォルダのファイルをappフォルダにコピーして、そちらをカスタマイズします。

例えば、BaserHelper をカスタマイズする場合、 baser/views/helpers/baser.php を app/views/helpers/baser.php としてコピーする事でそちらが優先して読み込まれます。
※ この場合、読込ファイルの変更を確実に反映させるにはサーバーキャッシュを削除します。

もちろん直接修正をかけてもよいのですが、app にコピーしてそちらを編集する事で、アップデート時にカスタマイズ部分を完全に失ってしまうというリスクを回避する事ができます。

ただ、この場合、アップデートで、カスタマイズ対象のファイルに改善が入っていた場合、その恩恵を受けられなくなります。改善をカスタマイズしたファイルに反映させるには、手作業で反映(マージ)させるしかありません。

アップデートに影響がないようにコアファイルをカスタマイズするには、プラグインとして開発を行う必要があります。

 

プラグインの開発してみたい

プラグイン開発には今のところ大きく分けて4パターンあります。

  1. 追加コンテンツの開発(不動産検索CMS や、飲食店ポータルのコンテンツ等)
  2. 既存機能に影響を与える(プラグインフック)
  3. BaserHelper に機能を追加する(BaserHelper拡張)
  4. 追加ウィジェットの開発

例えば、コアパッケージに梱包されているブログプラグインでは、基本的に(1)として作られています。
そして、ウィジェットとして、最新記事の一覧や、カテゴリ一覧を提供しています。(4)
また、$baser->blogPosts()として、BaserHelper を拡張し(3)、Web ページの編集領域にブログのタイトルリストを出力機能を追加しています。

ツイッタープラグインでは、ブログ記事の編集画面にツイッターへの送信フォームを配置しています。(2)
アップローダープラグインでは、ページの編集画面やブログ記事の編集画面にアップロードしたファイルの選択機能を追加しています。(2)

プラグインも基本的には、CakePHP の流儀に従えば簡単に開発できます。
※ こちらもちょびっと BaserCMS の流儀があります。

 

「コーポレートサイトにちょうどいい」をキャッチフレーズとした BaserCMS ですが、アイデア次第で色んなカスタマイズが行えます。

是非お試しください!

 

TIPS 2011/05/31 ryuring
baserCMS最新版ダウンロード

ダウンロード数: ...

最新バージョン: ...

Powered by 継続的クラウド型Web脆弱性検査ツール

メールマガジン•登録無料
baserCMSの最新情報を
毎月第3週に配信しています。

Powered by 送り方 選べる!メール配信サービス

9月 2019年10月 11月
  12345
6789101112
13141516171819
20212223242526
2728293031