Download - eZ publish勉強会2013年7月「実装ケーススタディ」
eZ Publish2013年7月勉強会「実装ケーススタディ」
実装ケーススターディ
● 一般のコーポレートサイトの実装をeZ Publishでした場合のケーススタディ。
● 下記の各ステップを紹介します。– ニーズ分析
– タスク設定と切り分け
– 実装プランの作成
– 環境設定
– タスク実装
– テスト
– 公開後のタスク
ニーズ分析
ニーズ分析
● ニーズは仕様書でまとめてるものが多いです● 仕様書がない場合は自分で分析する必要があります、その場合は
– CMS思考でまとめます– 短い文章でまとめます
● 編集者ユーザと承認者ユーザが必要です
– ニーズに矛盾がない様に● 「サイトの静的書き出し」「ユーザ情報に合わせたコンテンツを変える」
ニーズ分析
● 今回は一般コーポレートサイトのニーズとして、下記の仮ニーズを利用します– コンテンツの言語は日本語のみ、未来に英語を追加します
– サイトのコンテンツ作成、編集と削除
– ニュース投稿機能
– ニュース投稿の承認ワークフロー
– トップページのバナー管理
– サイトマップの自動生成
– サイト内検索機能– 編集者ユーザと承認者ユーザ
ニーズ分析
● ニーズを分析しましたら、各ニーズをタスク分けします
● CMSが対応しない機能の場合は機能変更や別方法で実装するようにすすめる
ニーズ分析
● コンテンツの言語は日本語のみ、未来に英語を追加します
– eZ Publishは多言語をサポートしますので、特に問題ない
● サイトのコンテンツ作成、編集と削除
– CMSの一般機能、特に問題ない– コンテンツクラスの定義が必要
– フィールドの設定
● ニュース投稿機能– コンテンツクラスの定義が必要
– フィールドの設定
ニーズ分析
● ニュース投稿の承認ワークフロー– オブジェクトステートの利用– 権限の設定必要
● トップページのバナー管理– コンテンツクラスの定義
● サイトマップの自動生成– ネイティブ機能
● サイト内検索機能
– 注意、日本語サイトなので、eZ Findが必要(JAVA環境必要)● 編集者ユーザと承認者ユーザ
– 権限の設定
タスクの切り分けと設定
タスクの切り分け
● eZ Publishでは下記の様にタスクを切り分けることがお勧めです– コンテンツクラスの設定
– エクステンションの開発
– 権限の設定
タスクの切り分け
● コンテンツクラスの設定– フィールド定義
– カスタムフィールド
– 関連と親子関係
● エクステンションの開発– テンプレート実装
– カスタム機能● カスタムテンプレートオペレーターのコード● カスタムモジュールのコード● カスタムデータタイプのコード
● 権限の設定– ユーザグループの設定
– ロールの設定
– ポリシーの設定
タスクの切り分けと設定
● 今回のニーズを当てると– コンテンツクラスの設定
● 一般ページのクラス● ニュースのクラス● バナークラス
– エクステンションの開発● テンプレート● バナー管理システム● 検索
– 権限の設定● 編集者● 承認者● 承認システム
実装プラン
実装プラン
● 実装プランではタスクの関連と順位を決めます● 例:
– コンテンツクラスのテンプレートを作る前にコンテンツクラスを作る必要があります
● 一般的の流れは– コンテンツクラス関連
– エクステンション関連
– 権限関連
● の順番でタスクを実装します
実装プラン順番
● コンテンツクラス関連– クラス切り分け
– カスタムデータタイプ実装
– クラスの設定
● エクステンション関連– モジュール実装
– テンプレート実装
● 権限実装– ロール設定
– グループ設定
今回の例で
● コンテンツクラス関連– トップページクラス設定
– バナークラス設定– フォルダークラス設定– 一般ページクラス設定– ニュースクラス設定
● エクステンション関連– 各コンテンツクラスのテンプレート実装– 検索機能を設定
● 権限関連– 編集者ロール設定– 承認者ロール設定– 承認ワークフローの設定
– グループ設定
環境設定
環境設定
● 環境設定は大事なポイントです● 開発環境とプロダクション環境をなるべく近くします(OS、DB、PHPのバージョン)
● eZ Publishのバージョンはニーズに合わせて選びます
– お勧めは4系の最も安定版である2012.08です
● PHP、MySQL等のバージョンは利用するeZ Publishバージョンの要件に合わせる
環境設定
● eZ Findを利用する場合はJavaが必要です● 画像のリサイズにはimagemagickが必要です● メール送信の場合はSendmailかSMTPサーバが必要です
● ソース管理には各カスタムエクステンションGITを使うのがお勧めです
● ソースファイルは開発端末からGITで開発環境にと同期します
● ソースファイル以外(コンテンツクラス、ロール等)はDBダンプやパッケージファイルで同期します
環境設定
● eZ Publishのインストール– アーカイブのダウンロード
– バーチャルホストの設定
● パッケージ選択では、プロジェクトに最も近いパッケージを選びます。
– 今回はez webinを選択します– パッケージによって利用できる機能とオペレーターも異なります
タスクの実装
タスクの実装
● 実装プランに従って、各クラスを設定します
コンテンツクラスの設定
トップページタイトル
フォルダータイトル
URLアリアス
一般ページタイトルコンテンツ
URLアリアス
フォルダータイトル
URLアリアス
ニュースタイトルコンテンツ
URLアリアス
バナータイトル画像リンク
一般ページタイトルコンテンツ
URLアリアス
コンテンツクラスの設定
● 管理画面にログインして、「システム設定」>「クラス」>「Content」>「新規クラス」
● クラス作成画面にはクラス定義によって、属性を追加します
● オブジェクトのタイトルが日本語の場合はURLが「node_xxx」にならない様にはURLアリアス属性を追加しましょう
コンテンツクラスの設定
エクステンションの設定
エクステンションの設定
● エクステンションを作り、各設定をします
– DB設定はエクステンションに入れないと同期が楽● テンプレート実装のためにコンテンツを追加します
– コンテンツはない場合には仮コンテンツ
● テンプレート実装
テンプレート実装
● HTMLを当てる● オーバーライドの設定
– わかりやすいフォルダー構造で管理する
● node_view_guiとattribute_view_guiでテンプレートを細かく切り分ける、管理しやすくします
● 一覧ページはフェッチを使います
機能実装
● サイト内検索
– eZ Findのschema.xmlを編集して、日本語アナライザーを有効にします
– <tokenizer class="solr.CJKTokenizerFactory"/>
● サイトマップ
– /content/view/sitemap/2 機能を利用します– 「システム設定」>「URL置換設定」でURLアリアスを設定する
機能実装
● バナー管理は「メディアリソース」で行います● 表示順番には優先順位を利用します● 表示・非表示設定で表示するバナーを管理あします
● テンプレート側では普通のfetchで実装します
権限設定
ユーザグループの設定
● 管理画面の「ユーザ管理」からユーザグループを作成– 編集者
– 承認者
ポリシーの設定
● 管理画面の「ユーザ管理」>「ロールとポリシー」にロールを作ります– 編集者
● コンテンツ作成・削除・編集● 管理画面へのログイン● 一般ポリシー(オンラインエディター等)
– 承認者
ワークフローの設定
● オブジェクトステートを利用
● 管理画面の「システム設定」>「ステート」から作ります– ニュースワークフロー:未公開|公開
● ポリシーとロールを更新します– 承認者
– 匿名ユーザ
テスト
テスト
● eZ Publishのデフォルト機能はよくテストされています
● テストを必要とする機能は独自機能となります
● PHP Unitを利用するのをお勧めします● チュートリアルはあります(英語)● http://blog.nxcgroup.com/2012/testingezpublishextensionsusingphpunit/
公開後のタスク
公開後のタスク
● バグ対応– 開発環境に再現
– 開発環境>テスト環境>プロダクション環境
– GITを利用する● 機能の追加
– 開発環境>テスト環境>プロダクション環境
– コンテンツ、ロール等はパッケージを利用して、同期します
– 必ずDBをバックアップします
質問タイム
ご清聴ありがとうございました!