concrete5 : オリジナルブロックの作り方
concrete5 という最近話題になっている PHP で動く CMS があります。
- 本家 : http://www.concrete5.org/
- 日本語版 : http://concrete5-japan.org/
ブロックとはなにか?
ブロック
ブロックとは、ページ上のエリアに追加する事が出来るコンテンツや機能です。ブロックの種類により、様々な機能を搭載しています。
編集モードにすることにより、ブロックを追加、移動、編集、削除する事が出来るようになります。
http://concrete5-japan.org/help/basic-conceptsブロックタイプ
ブロックには様々な機能を持ったものがあります。
ブロックの種類には:
- シンプルなテキストのみの記事ブロック
- 画像ブロック
- ページリスト
- サイトマップ
- アンケート
などがあり、すべてがブロックとして構成されています。例えば、一般的なサイトにある「お問い合わせ」のページを例にとると、住所や電話番号等は「記事」ブロック、サイト上からお問い合わせを受け付けるときに使用するメールフォームは「フォーム」ブロック、そして、会社の地図を表示させたいのであれば、「グーグルマップ」ブロックを追加して、それらを組み合わせて行きます。
すべてのブロックは、基本的には独立したものです。
オリジナルブロックの作り方
ローカルホストもしくはweb上にある外部ファイルを読み込んでそのまま表示する、「include」というブロックを作ってみたのでメモ。
ブロックを構成する必須ファイルリスト
- controller.php(必須)
- オリジナルブロック用のクラスを宣言するファイル
-
- ブロックの名前やデータベースのテーブル名などの設定を記述する
- db.xml(必須)
-
- データを保存する必要がある場合に使われるデータベースのテーブルの構造を記述するファイル
- ADOXMLS フォーマット
- view.php (必須)
- ブロックが表示される時に実行されるファイル
- 表示したいものを記述する
Basic Block Template というテンプレート一式が下記URLよりダウンロードできます。
http://www.concrete5.org/files/14981212950798basictest.zip
まずはオリジナルブロック用のクラスファイルをつくる
まずは、オリジナルブロック用のクラスを記述するファイルである controller.php をつくる。ここでは基本設定も一緒に記述する。
<?php class IncludeController extends BlockController { var $pobj; protected $btDescription = "外部ファイルを読み込んで表示します"; protected $btName = "外部ファイル表示"; protected $btTable = 'btInclude'; protected $btInterfaceWidth = "350"; protected $btInterfaceHeight = "300"; } ?>
BlockController というクラスを継承して独自のブロッククラスを作成。ここでつけるクラス名は他のブロックと重複してはダメ。
- $btDescription
- ブロックの説明
- $btName
- ブロック名
- $btTable
- ブロックで独自に扱うデータを保存するテーブル名
- $btInterfaceWidth
- ブロックインターフェースの横幅
- $btInterfaceHeigh
- ブロックインターフェースの縦幅
$pobj
ってなんだ?
続いてテーブルの設定ファイルをつくる
オリジナルブロックで扱いたいデータを保存しておく為のテーブルの設定を、db.xmlファイルに記述する。
<?xml version="1.0"?> <schema version="0.3"> <table name="btInclude"> <field name="bID" type="I"> <key /> <unsigned /> </field> <field name="url" type="C"> </field> </table> </schema>
ここでは、bIDフィールド(プライマリキー)と、読み込みたいファイルのURLを保存しておくurlフィールドを定義した。
field要素のプロパティ
- nameプロパティ
- フィールド名
- typeプロパティ
- データタイプ
typeに指定できるもの一覧。
C: Varchar, capped to 255 characters.
X: Larger varchar, capped to 4000 characters (to be compatible with Oracle).
XL: For Oracle, returns CLOB, otherwise the largest varchar size.C2: Multibyte varchar
X2: Multibyte varchar (largest size)B: BLOB (binary large object)
D: Date (some databases do not support this, and we return a datetime type)
http://phplens.com/lens/adodb/docs-datadict.htm
T: Datetime or Timestamp
L: Integer field suitable for storing booleans (0 or 1)
I: Integer (mapped to I4)
I1: 1-byte integer
I2: 2-byte integer
I4: 4-byte integer
I8: 8-byte integer
F: Floating point number
N: Numeric or decimal number
詳しい書式は下記を参照
http://phplens.com/lens/adodb/docs-datadict.htm