ez publish勉強会2013年7月「実装ケーススタディ」

40
eZ Publish2013年7月勉強会 「実装ケーススタディ」

Upload: ericsagnes

Post on 07-Jul-2015

299 views

Category:

Technology


2 download

TRANSCRIPT

Page 1: eZ publish勉強会2013年7月「実装ケーススタディ」

eZ Publish2013年7月勉強会「実装ケーススタディ」

Page 2: eZ publish勉強会2013年7月「実装ケーススタディ」

実装ケーススターディ

● 一般のコーポレートサイトの実装をeZ Publishでした場合のケーススタディ。

● 下記の各ステップを紹介します。– ニーズ分析

– タスク設定と切り分け

– 実装プランの作成

– 環境設定

– タスク実装

– テスト

– 公開後のタスク

Page 3: eZ publish勉強会2013年7月「実装ケーススタディ」

ニーズ分析

Page 4: eZ publish勉強会2013年7月「実装ケーススタディ」

ニーズ分析

● ニーズは仕様書でまとめてるものが多いです● 仕様書がない場合は自分で分析する必要があります、その場合は

– CMS思考でまとめます– 短い文章でまとめます

● 編集者ユーザと承認者ユーザが必要です

– ニーズに矛盾がない様に● 「サイトの静的書き出し」「ユーザ情報に合わせたコンテンツを変える」

Page 5: eZ publish勉強会2013年7月「実装ケーススタディ」

ニーズ分析

● 今回は一般コーポレートサイトのニーズとして、下記の仮ニーズを利用します– コンテンツの言語は日本語のみ、未来に英語を追加します

– サイトのコンテンツ作成、編集と削除

– ニュース投稿機能

– ニュース投稿の承認ワークフロー

– トップページのバナー管理

– サイトマップの自動生成

– サイト内検索機能– 編集者ユーザと承認者ユーザ

Page 6: eZ publish勉強会2013年7月「実装ケーススタディ」

ニーズ分析

● ニーズを分析しましたら、各ニーズをタスク分けします

● CMSが対応しない機能の場合は機能変更や別方法で実装するようにすすめる

Page 7: eZ publish勉強会2013年7月「実装ケーススタディ」

ニーズ分析

● コンテンツの言語は日本語のみ、未来に英語を追加します

– eZ Publishは多言語をサポートしますので、特に問題ない

● サイトのコンテンツ作成、編集と削除

– CMSの一般機能、特に問題ない– コンテンツクラスの定義が必要

– フィールドの設定

● ニュース投稿機能– コンテンツクラスの定義が必要

– フィールドの設定

Page 8: eZ publish勉強会2013年7月「実装ケーススタディ」

ニーズ分析

● ニュース投稿の承認ワークフロー– オブジェクトステートの利用– 権限の設定必要

● トップページのバナー管理– コンテンツクラスの定義

● サイトマップの自動生成– ネイティブ機能

● サイト内検索機能

– 注意、日本語サイトなので、eZ Findが必要(JAVA環境必要)● 編集者ユーザと承認者ユーザ

– 権限の設定

Page 9: eZ publish勉強会2013年7月「実装ケーススタディ」

タスクの切り分けと設定

Page 10: eZ publish勉強会2013年7月「実装ケーススタディ」

タスクの切り分け

● eZ Publishでは下記の様にタスクを切り分けることがお勧めです– コンテンツクラスの設定

– エクステンションの開発

– 権限の設定

Page 11: eZ publish勉強会2013年7月「実装ケーススタディ」

タスクの切り分け

● コンテンツクラスの設定– フィールド定義

– カスタムフィールド

– 関連と親子関係

● エクステンションの開発– テンプレート実装

– カスタム機能● カスタムテンプレートオペレーターのコード● カスタムモジュールのコード● カスタムデータタイプのコード

● 権限の設定– ユーザグループの設定

– ロールの設定

– ポリシーの設定

Page 12: eZ publish勉強会2013年7月「実装ケーススタディ」

タスクの切り分けと設定

● 今回のニーズを当てると– コンテンツクラスの設定

● 一般ページのクラス● ニュースのクラス● バナークラス

– エクステンションの開発● テンプレート● バナー管理システム● 検索

– 権限の設定● 編集者● 承認者● 承認システム

Page 13: eZ publish勉強会2013年7月「実装ケーススタディ」

実装プラン

Page 14: eZ publish勉強会2013年7月「実装ケーススタディ」

実装プラン

● 実装プランではタスクの関連と順位を決めます● 例:

– コンテンツクラスのテンプレートを作る前にコンテンツクラスを作る必要があります

● 一般的の流れは– コンテンツクラス関連

– エクステンション関連

– 権限関連

● の順番でタスクを実装します

Page 15: eZ publish勉強会2013年7月「実装ケーススタディ」

実装プラン順番

● コンテンツクラス関連– クラス切り分け

– カスタムデータタイプ実装

– クラスの設定

● エクステンション関連– モジュール実装

– テンプレート実装

● 権限実装– ロール設定

– グループ設定

Page 16: eZ publish勉強会2013年7月「実装ケーススタディ」

今回の例で

● コンテンツクラス関連– トップページクラス設定

– バナークラス設定– フォルダークラス設定– 一般ページクラス設定– ニュースクラス設定

● エクステンション関連– 各コンテンツクラスのテンプレート実装– 検索機能を設定

● 権限関連– 編集者ロール設定– 承認者ロール設定– 承認ワークフローの設定

– グループ設定

Page 17: eZ publish勉強会2013年7月「実装ケーススタディ」

環境設定

Page 18: eZ publish勉強会2013年7月「実装ケーススタディ」

環境設定

● 環境設定は大事なポイントです● 開発環境とプロダクション環境をなるべく近くします(OS、DB、PHPのバージョン)

● eZ Publishのバージョンはニーズに合わせて選びます

– お勧めは4系の最も安定版である2012.08です

● PHP、MySQL等のバージョンは利用するeZ Publishバージョンの要件に合わせる

Page 19: eZ publish勉強会2013年7月「実装ケーススタディ」

環境設定

● eZ Findを利用する場合はJavaが必要です● 画像のリサイズにはimagemagickが必要です● メール送信の場合はSendmailかSMTPサーバが必要です

● ソース管理には各カスタムエクステンションGITを使うのがお勧めです

● ソースファイルは開発端末からGITで開発環境にと同期します

● ソースファイル以外(コンテンツクラス、ロール等)はDBダンプやパッケージファイルで同期します

Page 20: eZ publish勉強会2013年7月「実装ケーススタディ」

環境設定

● eZ Publishのインストール– アーカイブのダウンロード

– バーチャルホストの設定

● パッケージ選択では、プロジェクトに最も近いパッケージを選びます。

– 今回はez webinを選択します– パッケージによって利用できる機能とオペレーターも異なります

Page 21: eZ publish勉強会2013年7月「実装ケーススタディ」

タスクの実装

Page 22: eZ publish勉強会2013年7月「実装ケーススタディ」

タスクの実装

● 実装プランに従って、各クラスを設定します

Page 23: eZ publish勉強会2013年7月「実装ケーススタディ」

コンテンツクラスの設定

トップページタイトル

フォルダータイトル

URLアリアス

一般ページタイトルコンテンツ

URLアリアス

フォルダータイトル

URLアリアス

ニュースタイトルコンテンツ

URLアリアス

バナータイトル画像リンク

一般ページタイトルコンテンツ

URLアリアス

Page 24: eZ publish勉強会2013年7月「実装ケーススタディ」

コンテンツクラスの設定

● 管理画面にログインして、「システム設定」>「クラス」>「Content」>「新規クラス」

● クラス作成画面にはクラス定義によって、属性を追加します

● オブジェクトのタイトルが日本語の場合はURLが「node_xxx」にならない様にはURLアリアス属性を追加しましょう

Page 25: eZ publish勉強会2013年7月「実装ケーススタディ」

コンテンツクラスの設定

Page 26: eZ publish勉強会2013年7月「実装ケーススタディ」

エクステンションの設定

Page 27: eZ publish勉強会2013年7月「実装ケーススタディ」

エクステンションの設定

● エクステンションを作り、各設定をします

– DB設定はエクステンションに入れないと同期が楽● テンプレート実装のためにコンテンツを追加します

– コンテンツはない場合には仮コンテンツ

● テンプレート実装

Page 28: eZ publish勉強会2013年7月「実装ケーススタディ」

テンプレート実装

● HTMLを当てる● オーバーライドの設定

– わかりやすいフォルダー構造で管理する

● node_view_guiとattribute_view_guiでテンプレートを細かく切り分ける、管理しやすくします

● 一覧ページはフェッチを使います

Page 29: eZ publish勉強会2013年7月「実装ケーススタディ」

機能実装

● サイト内検索

– eZ Findのschema.xmlを編集して、日本語アナライザーを有効にします

– <tokenizer class="solr.CJKTokenizerFactory"/>

● サイトマップ

– /content/view/sitemap/2 機能を利用します– 「システム設定」>「URL置換設定」でURLアリアスを設定する

Page 30: eZ publish勉強会2013年7月「実装ケーススタディ」

機能実装

● バナー管理は「メディアリソース」で行います● 表示順番には優先順位を利用します● 表示・非表示設定で表示するバナーを管理あします

● テンプレート側では普通のfetchで実装します

Page 31: eZ publish勉強会2013年7月「実装ケーススタディ」

権限設定

Page 32: eZ publish勉強会2013年7月「実装ケーススタディ」

ユーザグループの設定

● 管理画面の「ユーザ管理」からユーザグループを作成– 編集者

– 承認者

Page 33: eZ publish勉強会2013年7月「実装ケーススタディ」

ポリシーの設定

● 管理画面の「ユーザ管理」>「ロールとポリシー」にロールを作ります– 編集者

● コンテンツ作成・削除・編集● 管理画面へのログイン● 一般ポリシー(オンラインエディター等)

– 承認者

Page 34: eZ publish勉強会2013年7月「実装ケーススタディ」

ワークフローの設定

● オブジェクトステートを利用

● 管理画面の「システム設定」>「ステート」から作ります– ニュースワークフロー:未公開|公開

● ポリシーとロールを更新します– 承認者

– 匿名ユーザ

Page 35: eZ publish勉強会2013年7月「実装ケーススタディ」

テスト

Page 36: eZ publish勉強会2013年7月「実装ケーススタディ」

テスト

● eZ Publishのデフォルト機能はよくテストされています

● テストを必要とする機能は独自機能となります

● PHP Unitを利用するのをお勧めします● チュートリアルはあります(英語)● http://blog.nxcgroup.com/2012/testing­ez­publish­extensions­using­phpunit/

Page 37: eZ publish勉強会2013年7月「実装ケーススタディ」

公開後のタスク

Page 38: eZ publish勉強会2013年7月「実装ケーススタディ」

公開後のタスク

● バグ対応– 開発環境に再現

– 開発環境>テスト環境>プロダクション環境

– GITを利用する● 機能の追加

– 開発環境>テスト環境>プロダクション環境

– コンテンツ、ロール等はパッケージを利用して、同期します

– 必ずDBをバックアップします

Page 39: eZ publish勉強会2013年7月「実装ケーススタディ」

質問タイム

Page 40: eZ publish勉強会2013年7月「実装ケーススタディ」

ご清聴ありがとうございました!