ここから本文です

BaserCMSのCakePHP拡張について

BaserCMS は、基本的に従来のCakePHPの開発手法と同様の手法にて開発が可能ですが、独自に拡張を行っている部分もあります。 ここでは、その拡張された内容についてご説明します。

CSV データベース

BaserCMS は、CSVファイルに対してデータを取得、保存する為の CsvDbo を梱包しています。
CsvDbo は、CakePHP が発行する SQL を解析して、CSVファイルに対するオペレーションを行う仕組みとしている為、開発者は、CSVファイルを意識せず、モデルクラスの開発等を行えます。
ただし、CsvDbo の現時点での実装はけして強力なものではなく、GROUP BY 句やサブクエリ等は実行できず、排他制御についても、ファイルロックベースの処理となっているので同時接続に弱く、大規模な WEB システム開発には向いていません。
大規模なWEB システム開発を行う場合は、MySQL や PostgreSQL 等データベースサーバーの利用をおすすめします。

プラグインフック

CakePHP が提供するプラグインの実装はあくまでも、追加機能としてのプラグインという位置づけになっていますが、BaserCMS は、プラグインに対し、フック機能をつける 事で、本体の出力内容を変更できるようになっています。
フック機能というのは、CakePHP が提供する コンポーネント の beforeFilter や、ヘルパーの afterLayout 等のフックメソッドをプラグイン側からフックする為の実装です。 これにより本体のビューが出力する内容を書き換えたりという事ができるようになります。

フックメソッドをフックするには、コンポーネントまたはヘルパーで実装します。
フック用のコンポーネントを設置する場合には、下記のパスにクラスファイルを設置します。

● {プラグイン名}HookComponent
/app/plugins/{プラグイン名}/controllers/components/{プラグイン名}_hook.php

フック用のヘルパーを設置する場合には、下記のパスにクラスファイルを設置します。

● {プラグイン名}HookHelper
/app/plugins/{プラグイン名}/views/helpers/{プラグイン名}_hook.php

ビューファイルのサブフォルダ化

一つのコントローラーで利用するビューファイルが増えてくると管理も大変になってきます。
BaserCMSでは、管理画面等のプレフィックスルーティングを行った場合に、自動でサブフォルダを参照する仕組みとなっています。

(例)UsersController の admin_index メソッド用のビューファイル
CakePHP・・・{viewsディレクトリ}/users/admin_index.ctp
BaserCMS・・・{viewsディレクトリ}/users/admin/index.ctp

BaserHelper拡張

CakePHPにおいて、新しいヘルパをビューで利用する場合、コントローラーにヘルパを追加する必要があるのですが、コントローラーをカスタマイズせずに、ヘルパの機能を追加したい場合があります。

例えば、ページ編集画面で利用できるヘルパーをプラグインとして増やしたい場合は、新しいヘルパーをプラグインの中に梱包し、PagesControllerにそのヘルパーを定義する必要があります。この時baserディレクトリ内のPagesControllerを編集してしまえば、BaserCMSのアップデートの際、上書きされてしまいます。かと言って、PagesControllerをカスタマイズする為に、app/controllersに配置する前提であると、利用者は不便になってしまいます。

そこで、BaserCMSでは、既に存在する「BaserHelper」を拡張する仕組みを持っています。
プラグインのヘルパーフォルダ内に次の命名規則でヘルパーファイルを設置すると、BaserHelperのインスタンスを通して呼び出す事ができます。

● {プラグイン名}BaserHelper
/app/plugins/{プラグイン名}/views/helpers/{プラグイン名}_baser.php

この場合、上記ヘルパに test というメソッドを実装すれば、ページ編集画面内で次のように呼び出す事ができます。

<?php $baser->test() ?>

これは、ページ管理では、BaserHelperが読み込まれる前提となっており、それを利用している事になります。
(ちなみに、これは、BehaviorがModelを拡張する仕組みと同じです)

BaserCMS最新版ダウンロード

最新バーション:1.6.2

それいけ!BaserCMS
  • わからないことはここで解決!BaserCMSユーザーフォーラム
  • どんなデザインでも自由自在!BaserCMS導入事例
  • BaserCMSでの制作ができる!協力制作会社のご紹介
  • こんな方たちに支えられてます!スペシャルサンクス

- P R -

[WEBちぇん] ホームページ更新システム導入支援サービス
  • BaserCMS on Twitter
    フォローする