ez publish勉強会2013年9月「ez publish効率入門」
TRANSCRIPT
eZ Publish2013年9月勉強会「eZ Publish効率入門」
eZ Publishの紹介
eZ Publishの紹介
● 2001年から開発されているノルウェー産CMS● 開発元はeZ Systems社
● 「エンタープライズオープンソース」ソフトウェア
● 2つのバージョン
– 有料エンタープライズバージョン「eZ Publishエンタープライズエディション」
– 無料なオープンソースバージョン「eZ Publishコミュニティーエディション」
eZ Publishの紹介
● エンタープライズ級CMS● 全世界で使われています● ヨーロッパでの使用率が高い● メディア業界と機関のプロジェクトは多い● 柔軟性と拡張性は特徴
eZ Publishの紹介 技術
● PHPベース
● LAMPスタックで動く
● 豊富なデフォルト機能
● CMSでありながらCMF(フレームワーク)でもある
● 柔軟性と拡張性が優れているCMS● シンフォニー2ベース(eZ 5系)
eZ Publishの特徴
● 短所– ドキュメンテーション
– eZ 4 / eZ 5 / eZ 6– 複雑な構造・多くの独自概念
– 管理画面
● 長所– 柔軟なコンテンツ形式
– テンプレートシステム
– 権限システム
– 豊富なデフォルト機能
ドキュメンテーション
短所 ドキュメンテーション
● 豊富な標準機能● 複雑な構造● 2つのメジャーバージョン(4と5)● 2つのドキュメンテーション
– 4系 http://doc.ez.no/eZ-Publish/Technical-manual/4.x/Reference/
– 5系 https://confluence.ez.no/display/EZP/eZ+Publish+Documentation
短所 ドキュメンテーション
● ドキュメントされてない機能はあります● 古いドキュメンテーションもあります● ソースコードを直接確認するは時々最短● ドキュメンテーションは英語のみ● 日本語チュートリアルはすくない
eZ 4 / eZ 5 / eZ 6
短所 バージョン
● 現在の最新バージョンは5.1● 2012年10月にリリース
● 4系とかなり異なります
– 新しいフレームワーク:Symfony 2– 新しいテンプレートエンジン
– 新しいカーネル
– 新しい思考:HMVC● 4系と完全互換性● 純粋な5系機能は未完成
バージョン 5
● 4系の最新バージョンを完全含めてる(ezpublish_legacy/)
● 5系のカーネルは直接4系のカーネルを利用することが多い
● 完全に5系で動くサイトはまだいません● 思考は違いすぎのため、5とレガシー(4)をミック
スするのは難しい
短所 バージョン
バージョン5.1
バージョン 5
● バージョン5はバージョン4と6の橋● バージョン6 = バージョン5の完全版● バージョン6ではレガシーが完全なくなります● バージョン5の立場が難しい
eZ Publish 5 のジレンマ
● レガシー(4系)は未来が少ない技術● 純粋な5系はまだ利用できません
● 現在eZ Publishを始める場合は
– レガシ系を勉強するが必要
– これから使い続くためにSymfonyと5系を勉強するが必要
複雑な構造・独自概念
独自概念
● とにかく独自概念が多い– サイトアクセス– ノード・オブジェクト– コンテンツツリー
– コンテンツクラス・データタイプ
– モジュール・ビュー・ファンクション
– ユーザ・ロール・ポリシー・ロール制限– テンプレートオーバーライド– 設定オーバーライド
– テンプレートエンジン・テンプレートオペーレーター
– ワークフローイベント・ワークフロートリガー– 。。。
複雑な構造
● eZ PublishコアベースCMS– デフォルト機能は豊富
– エクステンションの追加はほとんどのプロジェクトで必要ない
● ファイル数が多い
● PHPコードは約130万行(レガシーは約50万行)
● eZ Publish 5とレガシーの関係でさらに複雑
複雑な構造
● テンプレート等のファイルのパスは深い
– 7階層は珍しくない
● オーバーライドシステム関係でファイルは複数のエクステンションで分散されています
● 設定オーバーライドシステム関係で有効設定が間違いやすい
管理画面
管理画面
管理画面
● 情報が多い(多すぎ)● デザイン性に問題・表示バグ● コンテンツ作成ワークフローのステップが多い● ユーザビリティー問題(オンラインエディター)
● 6系での管理画面はかなり改善されている予定
コンテンツエンジン
コンテンツエンジン
● eZ Publishの最強な特徴
● CMS = コンテンツ管理システム
● eZ Publishのコンテンツエンジンはどのコンテンツを管理できます
● GUIだけでコンテンツクラスを追加できる
コンテンツエンジン
● オブジェクト思考● コンテンツクラスはコンテンツ種類を定義する● コンテンツクラスにフィールドは自由に追加できま
す● コンテンツクラスをインスタンスして、コンテンツオ
ブジェクトを作ります
コンテンツエンジン
● コンテンツエンジンはすべて管理します● いつでもフィールドの追加と作成はできます
– モデルマイグレーションは自動的!
● コンテンツのフィールドベースでソートやフィルタリングできます
● 多言語はオブジェクトレベルで管理されます● 自動的にバージョン管理をします
コンテンツエンジン
● 例:神社データベースサイト– コンテンツクラスを作ります「神社」
– フィールド● 名前「テキスト」● 紹介「XMLブロック」● 画像「画像」● 創建「日付」● 位置「ジオロケーション」
● 各属性ベースでソートとフィルタリングできます● 表示はコンテクストと属性ごとでできます
コンテンツエンジン
● デフォルトのフィールド種類は約40● カスタムフィールドタイプは追加できます(PHP)
● コンテンツ関連、コンテンツタグを対応するフィールドもあります
● コンテンツを無理矢理CMSに合わせるのではなく、CMSはどのコンテンツを管理できる
テンプレートシステム
テンプレートシステム
● 柔軟なテンプレート管理● テンプレートオーバーライドを活用すれば、開発
時間は大きく短縮できます
● smartyベーステンプレート言語
テンプレートシステム
● 一つのページは複数のテンプレートを利用します
– ezwebinパッケージのトップページは41種類のテンプレートを利用します
● コンテンツエンジンと連携しています● 考えとしては:
– 一つのオブジェクトには一つのテンプレートを使います– 一つの属性に一つのテンプレートを使います
– コンテクスト毎にテンプレートを設定できます
テンプレートシステム
● eZ Publishはデフォルトコンテンツクラスとフィールドタイプのテンプレートをすべて提供します
● テンプレートオーバーライド機能で複数のエクステンションからテンプレートを参照できます
● デフォルトテンプレートを利用した上で、ピンポイントでテンプレートを作るはコツである
テンプレート言語
● 多くのテンプレートオペーレーターを提供する● テンプレートオペーレーターを追加できます● 柔軟なコンテンツ取得ファンクション● イメージとしては:
– 他のテンプレートをインクルード(ナビゲーション等)
– コンテンツを取得する
– 取得したコンテンツオブジェクトをレンダリング● 属性をレンダリング
– テンプレートロジック追加
テンプレートオーバーライド
● テンプレートオーバーライドは特定な条件に対して、特定なテンプレートを利用するシステム
● コンテンツオブジェクトとフィールドレンダリングの際に使われます
● 条件の種類は多くあります● 例:
– 特定なページに対して特定なテンプレートを利用する
– /company/profile にアクセスした場合 profile.tpl を利用する
テンプレートシステム
● コンテンツオブジェクトベースのテンプレート管理ができます
● オブジェクト毎、フィールド毎にテンプレートがあります
● オンラインエディターの各タグにもテンプレートがあります!
● フェッチとレンダリング仕組みの理解は初心者の最重要な課題
権限システム
権限システム
● 細かく権限を設定できます– 行動別
– コンテンツ別
– 言語別
● ワークフロー提供– デフォルトで多段階承認できます
– 複数なトリガーを利用できます
● 完全GUIで管理できます
イメージ
● ユーザはユーザグループで管理をします
– 編集者グループにAさんを入れます
● ロールを作成、ユーザに割り当てます
– Aさんに編集者ロールをあてます
● ロールには権限を追加します– 編集者ロールに記事を作成権限をあげます
豊富なデフォルト機能
デフォルト機能
● マルチサイト・マルチドメイン・マルチデータベース● ハイパーフォーマンス検索エンジン● コンテンツバージョニング● 多言語
● REST API ・ AJAX API● 画像の編集と自動リサイズ● ブログ● 掲示板
● Webdav● LDAP● ページネーション
デフォルト機能
● 高度なキャッシュエンジン● ファイルの一括アップロード● シングルサインオン● サイトマップ自動生成● 画像ギャラリー● タグクラウド
● RSS自動生成
● フォーム機能● メール送信● リンク切れ自動チェック
eZ Publish入門
ワーストプラクティス
● 初心者はよくする失敗:– 標準ファイルやエクステンションファイルを変更する
– フェッチに制限をかけない
– レンダリングファンクションを使わずに、直接includeを利用する
– テンプレートに条件分岐でテンプレートをレンダリング
– 管理画面で設定ファイルの変更
デフォルトファイル
● デフォルトファイル(PHP、CSS、画像、設定など)に一切てを加えない– デフォルトファイルを変更するバージョンのアップグ
レードは難しくなり、ファイルを管理しにくい
– settings/override/* と settings/siteaccess/* は例外
● ベストプラクティス– 必ずエクステンションを作ります
– 変更したいファイルは元の場所から自分のエクステンションにコピーしてから変更をします
エクステンション
● エクステンションを作るには extension/ 以下にフォルダーを作る
● エクステンションをグローバル設定やサイトアクセス設定で有効にします
● エクステンションの種類によって、エクステンション以下のsettingsに設定を追加する必要があります– テンプレートファイルやデザインを提供する場合には
design.ini● エクステンションの設定は管理画面のシステム設
定で確認できます
フェッチ制限
● テンプレートで使うフェッチファンクションはかなりリソースを使います
● そのため、必ず最大件数等を定義する
レンダリングファンクション
● レンダリングファンクションはコンテンツオブジェクトとコンテクストを定義して、テンプレート選択はeZ Publishのオーバーライドシステムに任せる
● インクルードは直接テンプレートパスを指定する● レンダリングファンクションを利用したほうがテンプ
レートがわかりやすく、テンプレートオーバーライドシステムは多くの可能性を持っています
● テンプレートオーバーライドはoverride.iniにまとめます
レンダリングファンクション
● テンプレートで条件分岐を使わずにテンプレートオーバーライド条件を活用します
● コンテクストも自由に追加できますので、コンテクストを活用しましょう– 自動サイトマップ生成はテンプレートコンテクストです
管理画面と設定ファイル
● 管理画面で設定ファイルを編集することができます
● 管理画面で表示する設定ファイルは実際複数の設定ファイルを合わせたもの
● 管理画面で設定を変更するとどのファイルにその設定が入るがわかりにくい
● さらに、管理画面で設定ファイルを変更する場合にファイルを再生性するためにコメントが失われます
eZ Publish入門お勧めのステップ
最短コース
● コンテンツクラスの作成 ☆● エクステンションの作成方法 ☆● 設定システム・サイトアクセス ★★● テンプレートシステム・テンプレートオーバーライド
★★★★
本格的コース
● 設定システム・サイトアクセス ★★● ビューとモジュール ★★● 管理画面 ☆
● URL ★● 権限システム・セクション ★★● ワークフロー ★● オンラインエディター ★★● キャッシュエンジン ★★★● テンプレートシステム・テンプレートオーバーライド ★★★★
● エクステンション ★★★
まとめ
● 最大のハードルはテンプレートシステムとテンプレートオーバーライドであります
● さらにドキュメンテーションは少ないため、さらにハードルが高い
● ですが、オーバーライドシステムを理解すれば、eZ Publishでの開発は面白いぐらい楽になります
ご清聴ありがとうございました!