eZ Publish をはじめ、昨今のCMSはいずれも高機能化しており、その中において eZ Publish はどのような特徴があるのかをまとめたい。なお、概念の違いや具体的な他CMSとの比較は明日のアドベントカレンダー記事で詳細をまとめる予定。
eZ Publish の主な特徴
eZ Publish は汎用性が高く、標準で高機能であり、強力なユーザー権限管理、無理のない多言語コンテンツ管理などが特徴的である。
他のCMSのデフォルトの機能と比較して、特に以下のような概念的、機能的に優位な点や特徴がある。
- PHPフレームワークの Symfony 2 でフルスタックとして開発されている。
- Drupal も Symfony を採用しているが部分的な利用に留まる。
- コンテンツツリーによるコンテンツの構造的な管理
- サイトアクセスの概念により1つのコンテンツを複数パターンで出力可能
- 1つのコンテンツを複数のテンプレートで出力可能
- 多言語コンテンツがデフォルトで管理可能
- ステートの概念により全てのコンテンツに一括してフラグやパラメーターを付加可能
- データ構造(コンテンツクラス≒カスタム投稿タイプ)が標準の管理画面から登録可能
- ロールとポリシーで管理ユーザーの権限を細かく柔軟に制御可能
- デフォルトで差分が表示されるなどコンテンツのバージョン管理が容易
- ロケーションの概念により無制限にコンテンツの親子関係を紐付け可能
- 設定やテンプレートに上書き(オーバーライド)の概念がある
特徴的な概念
サイトアクセス
サイトアクセスとは、1つのコンテンツに複数のテンプレートを持たせる概念。
これにより、1つのコンテンツに対して、PC用とスマートフォン用にテンプレートを分けるということが可能になる。
サイトアクセスの切り替えはURLによって行われる。例えば http://example.com/pc/
と http://example.com/sp/
などといった具合になる。
コンテンツタイプ、コンテンツタイプグループ
コンテンツタイプとは、コンテンツの種類を規定する定義。WordPress の「カスタム投稿タイプ」、PowerCMS の「カスタムオブジェクト」に相当。例えば「ブログ記事」や「ウェブページ」など。
ユーザーもコンテンツタイプの1つとして扱われるのも特徴。
また、コンテンツタイプをグルーピングするコンテンツタイプグループも定義可能。
いずれも標準の管理画面で登録可能。
フィールドタイプ
フィールドタイプとは、コンテンツが持つフィールド(項目)の種類と性質を規定する定義。WordPress や Movable Type の「カスタムフィールド」に相当。例えば「テキスト」や「ファイル」など。
4系以前ではデータタイプと呼ばれていた。
標準の管理画面で登録可能。
バンドル開発により独自に追加可能。
コンテンツ(オブジェクト)
コンテンツとは、コンテンツタイプで定義されたフィールドで登録されたデータの集まり。例えばブログ記事として登録された実際のデータ。
ユーザーデータなども全てコンテンツとしてデータベース内に一元的に格納される。
4系以前ではオブジェクトと呼ばれていた。
ステート
ステートとは、すべてのコンテンツに対して、コンテンツタイプによらずに、その状態を一括して持たせる概念。
コンテンツタイプごとにはフィールドタイプでデータを持たせればよいが、コンテンツタイプが多い場合などはステートを使うと管理が楽になる。
標準の管理画面で登録可能。
ロケーション(ノード)
ロケーションとは、コンテンツをコンテンツツリー上に紐付ける概念。これによりコンテンツの親子関係を紐付けることが可能になると共に、1つのコンテンツをショートカットのように複数のコンテンツに紐付けることが可能になる。
また、ロケーションとは別にフィールド値として紐付けることも可能。
4系以前ではノードと呼ばれていた。
eZ Publish が不得意な部分
拡張
管理画面からバンドル(≒プラグイン、モジュール、エクステンション)を追加することはできず、バンドルのインストールはやや手間である。
デザイン
標準では1種類のデモバンドルしか用意されておらず、管理画面からデザインを検索したり適用したりすることはできない。
原則的にゼロベースで設計、実装する必要がある。従って、初期工数が多くなる傾向にある。