More Related Content
Similar to eZ Publish勉強会2013年3月「eZ Publishの構築を簡単に!」
Similar to eZ Publish勉強会2013年3月「eZ Publishの構築を簡単に!」 (20)
eZ Publish勉強会2013年3月「eZ Publishの構築を簡単に!」
- 2. 自己紹介
●
サニエ エリック
● フランス人、2001年に来日
● 2008~2011 eZ Systems Japanでテクニカルコンサル
タント
● 2011年より独立(eZ Publishを中心)
● eZ Publishコミュニティ活動・毎月にez Publishの勉強会
● es@clina.jp
● @ericsagnes
- 4. eZ Publish
● ノルウェー発のオープンソースCMS (GPL2)
● 2001年から開発
● eZ Systems社が開発の方針を決めます
●
開発と展開はヨーロッパ中心
- 5. 2つのeZ Publish
● エンタープライズオープンソースCMS
●
エンタープライズ版とオープンソース版
●
オープンソースからエンタープライズは移行可能
●
プロジェクトの規模とニーズに合わせて、バージョ
ン決めれる
- 6. エンタープライズ版
●
有料
●
サブスクリプション型
●
正式サポート
●
専用エクステンションマーケット
●
ステーブルバージョン(1年2回リリース)
●
専用商用ライセンス
- 7. コミュニティ版
●
エンタープライズ版とコードベースは一緒
● GPL2ライセンス
●
毎月のマイルストーンリリース
●
エンタープライズほどステーブルでありません
●
エンタープライズ版より最新機能を含んでいます
- 8. 2つのeZ Publish第2弾!
● 2012年9月にeZ Publish 5.0がリリースされま
した
● 主流はまだeZ Publish 4
● eZ Publish 5とeZ Publish 4の互換性は少な
い
● eZ Publish 5は互換性のためにeZ Publish 4
をそのまま含んでいます(legacy)
- 9. eZ Publish 4
● 2007年12月にリリース
● PHP 5に対応したバージョン
● 独自のフレームワーク、eZ Componentsの利
用
● 最終バージョンは4.7
●
安定しています
- 10. eZ Publish 5
● 2012年9月にリリース
● Symfony 2ベース
● 新しいカーネル、カーネルAPI、テンプレート。。。
● eZ Publish 4.7を含んでいる
●
未完成なところもある
●
変更点が多く、ドキュメントは現在に少ない
●
開発者プレビューに近い
●
可能性は広い!
- 11. eZ Publish 4環境
● LAMP環境
● PHP 5.2.14以上
● MySQL 5以上
● PostgreSQL 8以上でも動く
● IISでも動く
- 12. eZ Publish のインストール
● アーカイブのダウンロード(2012.8はおすすめ)
●
アーカイブの解答
● DBの作成
●
バーチャルホスト・ホストの設定
●
ブラウザからアクセスする
●
インストールを完成する
●
デモサイト、管理画面を確認する
- 16. デフォルト機能(一部)
●
柔軟なコンテンツエンジン ●
マルチドメイン
●
多言語 ●
細かいアクセス権限
●
バージョン管理 ●
マルチデータベース
●
ブログ ● SSO
●
掲示板 ●
高機能検索エンジン
●
画像自動リサイズ ● REST API
●
他段階承認 ● AJAX API
● webdav ●
ファイルの一括アップロード
● LDAP ●
コンテンツ関連付け
●
オフィスファイルインポート・
● RSS自動生成
エクスポート ●
サイトマップ自動生成
- 17. CMSとCMF
● CMSはコンテンツマネジメントシステム
● CMFはコンテンツマネジメントフレームワーク
● eZ PublishはCMFでありながら、CMSである
● と言いますと、eZ Componentsとコンテンツエン
ジンを使って、別なCMSを「簡単」に作れます
●
管理画面を簡単に置き換えれ、拡張できる
- 18. プラグインベースCMSと
コアベースCMS
● プラグインベースCMS
+ コミュニティが活発的
+ プラグインのチョイスが多い
ー バージョン依存が複雑になります
ー 品質がばらばら
ー コアが浅い
● コアベースCMS
+ バージョンの依存関係問題はほとんどない
+品質が統一されている
ー コミュニティ活動が静か
ー エクステンションは自作ですることが多い
- 19. eZ Publishに向いてる案件
●
ニーズの高い案件
●
メディアサイト
●
マルチドメイン・横展開
●
カタログサイト
● コーポレートサイト (eZ Webin)
●
成長可能性のあるサイト
- 20. 夢のようなCMS?
●
機能があるだけハードルがやや高い
●
ドキュメンテーションが少ない、わかりにくい
●
サイトアクセス、ノード、オブジェクト、ビュー、モ
ジュール。。。初心者から掴みづらいCMS
●
でもなれると開発時間はかなり短縮できます
●
機能の追加も簡単にできます
- 21. 初心者向けの使い方
● WebInパッケージをインストール
● CSS変更
●
コンテンツの調整
●
コーポレートサイトの出来上がり
- 22. eZ Publishを活用した案件
● 8ドメイン・10サイト ●
承認ワークフロー
●
2つのデータベース ●
未来公開
●
多言語(日本語、英 ●
複雑なアクセス権限
語) ●
関連付け(タグ)
● 自動Twitter投稿 ●
画像ギャラリー
●
イベントの自動管理 ●
複雑なキャッシュ設定
●
クロスドメイン投稿 ●
テンプレート言語の拡
● 統合RSSフィード 張
- 24. それでも
● ひとつのeZ Publish
●
元コードやテンプレートに一切の変更なし
●
3つのエクステンションで実装
●
〜150枚のテンプレート
●
簡単に新規サブサイト・機能の追加可能
- 26. eZ Publishの最大特徴!
コンテンツエンジン
● コンテンツを無理矢理CMSに合わせるのではなく、CMS
はコンテンツに自然に合う
●
コンテンツは自由なコンテンツクラスで定義
● コンテンツクラスはGUIで作れます
●
コンテンツクラスは属性の組み合わせ
●
属性はデータタイプで定義できる
● ニーズあれば、カスタムデータタイプは作成できる(PHP)
- 27. eZ Publishの最大特徴!
コンテンツエンジン
●
「イベント」のコンテンツクラスを作りましょう!
– タイトル[テキスト]
– 紹介文[XMLブロック]
– 開催日時[日付と時刻]
– 終了日時[日時と時刻]
– 地図[Google Mapロケーション]
- 28. eZ Publishの最大特徴!
コンテンツエンジンのメリット
●
既存クラスに簡単にフィールドを追加できます
● DB、コーラムは一切気にしなくていい
●
フィールドで絞り込み、検索できます
●
コンテンツクラス別のテンプレート実装
●
コンテンツクラス別のアクセス権限
●
コンテンツレベルにロジック持たせる
- 29. コンテンツクラス、コンテンツツリー
オブジェクト、ノード
●
コンテンツはコンテンツツリーに作ります
●
コンテンツを作る際はコンテンツクラスのインスタ
ンス、オブジェクトは作られます
●
同時にコンテンツツリーにノードが作られます
●
ノードはオブジェクトの配置先と呼びます
●
一つのオブジェクトは複数のノードに公開されるこ
とができます
- 30. コンテンツクラス、コンテンツツリー
オブジェクト、ノード
コンテンツツリー オブジェクトプール
ノードID:2
オブジェクトID:3
オブジェクトID:3
ノードID:12 ノードID:16
オブジェクトID:15 オブジェクトID:25 オブジェクトID:15
ノードID:34
オブジェクトID:25
オブジェクトID:25
- 32. コンテンツエンジン
最後の一言
●
実際ノードとオブジェクトの境線は薄い
●
ノード・オブジェクトの全属性をテンプレートからア
クセスできます
●
メディアリソースとユーザ管理もコンテンツツリー
の一部
● コンテンツツリー内のノードのURLは属性で決め
れます
- 33. コンテンツエンジン
●
イベントクラスコンテンツの作成
●
ノードとオブジェクト関係の確認
●
配置先の確認
- 34. しっかりとしたアクセス権限
●
行動別で権限を設定できます
– 作成
– 編集
– 削除
●
コンテンツ別で権限を設定できます
– セクション別
– サブツリー別
– 言語別
– 作成ユーザのグループ別
- 35. アクセス権限の骨組み
ポリシー、ロール、ユーザ
●
ポリシーはひとつの権限となります
– 例「日本語のイベントを作成できる」
●
ポリシーは基本的にカーネルの一つのモジュー
ルの一つのファンクションにアクセスを許可します
●
ロールはポリシーの組み合わせ
●
ユーザ(又はユーザグループ)にロールを割り当
てれる
●
ロールを割り当てるときにコンテンツ制限(サブツ
リー又はセクション)をつけることができます
- 37. アクセス権限
最後の一言
●
ユーザは普通のオブジェクト・ノードであります
●
ユーザアカウント属性を持つノーづはすべて有効
ユーザとなります
●
オブジェクトの複数配置先を利用すれば、同じ
ユーザを数ユーザグループに入れることができま
す
●
ロール割り当て制限をうまく使うとロールは簡単
に再利用できます
- 38. アクセス権限
●
ユーザグループの作成
●
ユーザの作成
●
ロールの作成
●
ロールを割り当てる
- 39. 豊富な設定
設定とサイトアクセス
● 基本の設定ファイルはsettingsフォルダー直下に入っています
● iniファイルとなっています
●
ブロックとルールの組み合わせになります
●
設定ファイルはたくさんあります!
● 一番重要な設定ファイルはsite.ini
●
基本の設定は
– デフォルト設定: settings/直下
– オーバーライド設定: settings/override/直下
– サイトアクセス設定: settings/siteaccess/の下
● デフォルト以外は.ini.append.phpの拡張をつける(セキュリ
ティのため)
- 40. 豊富な設定
設定とサイトアクセス
●
設定の優先順位は
– オーバーライド
– サイトアクセス
– デフォルト
●
サイトアクセスは設定の組み合わせ
●
サイトアクセスは特別な条件で読み込まれる設定
– 特定なホスト名 www.site.com/
– 特定なポート www.site.com:8080/
– 特定なパス www.site.com/admin/
- 41. 設定で管理できるもの
●
利用するデザイン
●
利用する言語
● 利用するDB
●
デバッグの有効
●
テンプレートの設定
●
イメージの自動リサイズパータン
●
など
- 42. サイトアクセス
●
サイトアクセスを利用することで
– 多言語サイト
– 複数DBサイト
– 複数デザイン
– 管理画面(ただのデザイン)
– モバイルサイト(ただのデザイン)
– などの実装ができます
- 43. エクステンションと設定
●
エクステンションで設定を管理できる
– デフォルト
– サイトアクセス
●
あわせて(優先順位で)
– オーバーライド
– デフォルトサイトアクセス
– エクステンションサイトアクセス
– エクステンションデフォルト
– デフォルト
●
の設定場所があります
●
多くて混乱しやすいので、管理画面で確認しましょう!
(システム設定 > INIファイル)
- 44. 設定の変更
●
オーバーライドでデバッグモードの有効
/settings/override/site.ini.append.phpに
####################
# 開発設定
####################
[ContentSettings]
ViewCaching=disabled
[DebugSettings]
DebugOutput=enabled
[TemplateSettings]
Debug=enabled
ShowXHTMLCode=disabled
TemplateCompile=disabled
TemplateCache=disabled
ShowUsedTemplates=enabled
[OverrideSettings]
Cache=disabled
●
キャッシュの削除
php bin/php/ezcache --clear-all
●
結果の確認
- 45. デザインとは
●
テンプレートはデザインでまとめます
● デザインは/design直下のフォルダーです
● デザインはテンプレート、CSS、JS、コンテンツでな
い画像などを含めます
●
一つのサイトアクセスは複数なデザインを利用しま
す
– メインデザイン
– 追加デザイン(任意、複数可能)
– デフォルトデザイン
● site.iniで管理されます
- 46. デザインフォールバック
●
メインデザインでリソースを見つけない場合には
優先順位の次のデザインに探します
● 最終的に「standard」デザインに探します
● standardデザインはすべての基本テンプレート
を含めます
●
デザインフォールバックをうまく利用すれば、作る
テンプレート量を減らすことができます
●
デザインを抽象的な使い方もできます!
- 47. デザインフォールバック
design/design3/templates/pagelayout.tpl
- 49. デザインの抽象・構造
● design/hospital
– 基本の病院テンプレート
● design/ophthalmologist
– 眼科の一般テンプレート
● design/dermatologist
– 皮膚科の一般テンプレート
● design/dentist/
– 歯科の一般テンプレート
● design/dermatologist_a
– 皮膚科 A 特定の画像やテンプレート
- 50. テンプレート
●
必ずデザインに入っています
● テンプレート言語はsmartyに似ている
● HTMLと{}で囲めたeZ Publishコード
●
テンプレート言語を独自オペーレーターで拡張で
きる
●
一つのページには複数のテンプレートでできてい
ます
●
テンプレートは2種類あります、レイアウトテンプ
レートとコンテンツテンプレート
- 51. レイアウトテンプレートと
コンテンツテンプレート
pagelayout.tpl(レイアウトテンプレート)
ヘッダー
コンテンツテンプレート
ナビゲーション
フッター
- 53. 2種類のコンテンツテンプレート
●
ノードを表示する時の「ノードテンプレート」
/company/news
/blog
●
カーネルの機能をアクセスする時の「システムテ
ンプレート」
/user/login
/content/edit
/モジュール名/ファンクション名
- 54. システムテンプレート
●
カーネルのインターフェースとなるテンプレート
● URLは
/モジュール名/ビュー名
●
読み込まれるテンプレートファイルは
モジュール名/ビュー名.tpl
user/login.tpl
user/logout.tpl
- 55. ノードテンプレート
●
コンテンツ(ノード)を表示する際に必ず利用され
ます
● URLはノードのコンテンツツリーの位置できまりま
す
● システムURLでもアクセスできます
/content/view/full/ノードID
●
読み込まれるテンプレートファイルは必ず
node/view/full.tpl
- 56. テンプレートオーバーライド
●
ノードテンプレートはすべて同じテンプレートを利用します
●
テンプレートオーバーライドを利用することで、好きな条件
で別なテンプレートを読み込むことができます
– 特定なコンテンツクラスのインスタンス
– 特定なノードIDやオブジェクトID
– 特定なセクションに入ってるノード
– など
●
どのテンプレートにオーバーライド使える!
(利用できる条件は異なります)
● http://doc.ez.no/eZ-Publish/Technical-
manual/4.x/Reference/Template-override-
conditions
- 57. テンプレートオーバーライド
● override.ini 設定ファイルで管理されます
●
オーバーライドブロックをの組み合わせ
●
順番でブロックが読み込まれて、最初マッチするも
のは利用されます
●
一つのブロックで複数の条件を設定できます
(ANDとなります)
●
オーバーライドブロックは下記のよう(基本)
– 元のテンプレート
– 代わりに利用するテンプレート
– 条件
- 58. オーバーライドブロック
ブロックタイトル [full_article]
元テンプレート Source=node/view/full.tpl
利用テンプレート MatchFile=full/article.tpl
テンプレートフォルダー Subdir=templates
条件 Match[class_identifier]=article
- 59. テンプレートビューモード
●
テンプレートのビューモードはオーバーライドブ
ロックの元テンプレートの「node/view/ビュー
モード.tpl」
● デフォルトのビューモードは「full」となります
● ノードのURLはシステム的に
/content/view/full/ノードID
●
一言で言いますとビューモードは求めるテンプ
レートです
●
ビューモードにいろいろの可能性があります!
/content/view/sitemap/ノードID
- 61. テンプレートの場所
●
テンプレートはデザインに入ります
– /design/デザイン名/templates 標準テンプレート
– /design/デザイン名/override/templates
オーバーライドテンプレート
●
テンプレートのパスは深くなりますので、間違いや
すい(特にエクステンションを利用する際)
- 62. テンプレート言語
● HTMLとeZ Publishコードの組み合わせ
● eZ Publishコードは{}で囲む
● eZ Publishコードでは
– 変数の定義と呼び出し
– オペーレーターによる処理
– ファンクションによる処理(フェッチ、インクルード等)
– ループ、IF等のブロック処理
●
独自オペーレーターで拡張できます
- 63. テンプレート変数
●
テンプレートで利用できる変数
● 「$」で始まる
●
2種類あります
– モジュールが提供する変数
$nodeなど
– テンプレートで作る変数
●
変数のタイプは
– 数字
– 文字列
– 配列
– オブジェクト
– ブーリアン
- 64. テンプレート変数
● {def}ファンクションで作れます
{def $name='foo'}
● {set}ファンクションで変更できます
{set $name='bar'}
●
各タイプの変数
– {set $a=3.14} 数字
– {set $a='pi'} 文字列
– {set $a=array(1.61, 3.14)} 配列
– {set $a=hash('phi', 1.61, 'pi', 3.14)} ハッシュ
- 65. $node変数
●
ノードテンプレートで利用できます
● eZContentObjectTreeNodeオブジェクトのインスタンス
● $nodeから簡単に属性、オブジェクト、親ノード、子ノードなど
の情報を習得できます
– {$node.parent} 親ノード
– {$node.data_map} 属性情報
– {$node.children} 子ノードの配列
– {$node.object} オブジェクト
– {$node.url_alias} ノードのURL
● http://doc.ez.no/eZ-Publish/Technical-
manual/4.x/Reference/Objects/ezcontentobjecttree
node
- 66. テンプレートオペレーター
●
テンプレート内でロジックを実行できる特別なキー
ワード
●
基本的はインプットに対して、アウトプットを生成し
ます
– {concat('hello',' world')} => 'hello world'
● 「|」でオペレーターを繋げれる
– {10|inc()|dec()} => 10
●
デフォルトで140オペーレーター以上があります
● PHPで独自オペーレーターが作れる
- 67. テンプレートファンクション
●
オペーレーターに似ていますが、インプットを渡す
ことができません
●
代表的に他のテンプレートの呼び出しとコンテン
ツを取得するフェッチを含めます
– {include uri='design:footer.html'}
●
フェッチファンクション以外、独自ファンクションは
あんまり作らない
- 68. テンプレートブロック
● ブロックはIFロジック、ループなどを実行します
{if eq($i,5)}
<p>5 x 5 = {mul(5,5)}</p>
{/if}
● ループの基本はforeach(forとwhileもあります)
{foreach $array as $item}
<p>{$item}</p>
{/foreach}
{foreach $array as $key => $item}
<p>{$key} - {$item}</p>
{/foreach}
- 69. eZ Publishのforeachは強力!
● reverse – 逆順でループする
{foreach $array as $item reverse}
● max – 最大のループ数
{foreach $array as $item max 3}
● offset – ループのスタートを決める
{foreach $array as $item offset 3}
● sequence – ループする追加配列(CSSに便利)
{foreach $array as $item sequence
array('light','dark') as $style}
- 70. fetchファンクション
● fetchファンクションでモデルにクエリーを送れま
す(コンテンツの取得)
●
モジュール毎に設定されています
●
公式ドキュメントにほとんどドキュメントされていま
す
● 独自fetchファンクションを追加することができま
す
●
書き方は
{fetch('モジュール名','fetchファンクション名',
[パラメーター])}
- 71. 代表的fetchファンクション
● 主に使われるfetchファンクションは3つとなりま
す
● 一つのノードをfetchする
{fetch('content','node',hash('node_id',2))
}
● 複数のノードをfetchする
{fetch('content','list',hash('parent_node_i
d',2))}
● 現在のユーザをfetchする
{fetch('user','current_user')}
- 72. fetch – content, node
●
単独のノードをフェッチする
●
ノードオブジェクト
[eZContentObjectTreeNode]を戻す
●
使い方
{def $node=fetch('content','node',hash(
'node_id', ノードID
))}
●
追加パラメーター
– 'language-code' 特定な言語でフェッチする
- 73. fetch – content, list
●
複数のノードをフェッチする
● ノードオブジェクト[eZContentObjectTreeNode]の配列を戻す
●
使い方
{def $nodes=fetch('content','list',hash(
'parent_node_id', ノードID
))}
●
追加パラメーター
– 'sort_by' ソート順の設定 [配列]
– 'limit' 戻すノードの数 [数字]
– 'offset' 結果のスタート位置 [数字]
– 'class_filter_type' コンテンツクラス絞り込みロジック ['include'|'exclude']
– 'class_filter_array' コンテンツクラスの絞り込み [配列]
– 'attribute_filter' 属性ベース絞り込み [配列]
– 'depth' ツリーの深さ [数字]
- 74. fetch – content, list例
●
ページネーションの実装
{def $nodes=fetch('content','list',hash(
'parent_node_id', ノードID,
'offset', mul(sub($page_nb,1),
$items_per_page),
'limit', $items_per_page
))}
● フォルダーインスタンスコンテンツのfetch
{def $nodes=fetch('content','list',hash(
'parent_node_id', ノードID,
'class_filter_type', 'include',
'class_filter_array', array('folder')
))}
- 75. テンプレート呼び出し
●
テンプレート内から、オーバーライドルールに従っ
て、テンプレートを呼び出すことができます
●
最も使われるのは
– ノードテンプレートを呼び出す
{node_view_gui}
– 属性テンプレートを呼び出す
{attribute_view_gui}
●
テンプレート作成の最高の味方!
- 76. node_view_gui
●
ノードをオーバーライドルールに合ったテンプレートを利用し
て、表示する
●
パラメーター
– content_node 表示したいノードオブジェクト
[eZContentObjectTreeNode]
– view 利用するビューモード [文字列]
view='line'
– カスタム変数 (任意)
foo='bar'
●
例
{node_view_gui content_node=$a_node view='line'}
{node_view_gui content_node=$a_node view='line'
foo='bar'}
- 77. node_view_gui・例
● 子ノードを'line'ビューモードで表示する
{foreach $node.children as $child}
{node_view_gui content_node=$child view='line'}
{/foreach}
●
パンくずを生成する
{node_view_gui content_node=$node view='breadcrumb'}
● node_view_guiをうまく使えば、綺麗なテンプ
レート、テンプレートの因数分解ができて、効率が
どんどんアップ!
- 78. attribute_view_gui
●
属性をオーバーライドルールに合ったテンプレートを利用して、
表示する
●
パラメーター
– attribute表示したい属性オブジェクト
[eZContentObjectAttribute]
attribute=$node.data_map.title
– カスタム変数 (任意)
foo='bar'
●
例
{attribute_view_gui attribute=$node.data_map.title}
{attribute_view_gui attribute=$node.data_map.image
image_class='thumbnail'}
- 79. テンプレートベストプラクティス
● 変数の中身を見たい時はattributeオペーレー
ターを使う
{$var|attribute(show,1)}
●
できるだけテンプレートの因数分解をして、数少な
い、わかりやすいテンプレートを作りましょう
● テンプレート言語のスピードはやや遅い(PHPに
比べれば)、できることが限られていますので、テ
ンプレート言語で実装が難しいものはカスタムオ
ペーレーターで実装
- 80. 例:簡単なニュース一覧の設計
●
下記の仕様にあったニュースの一覧を表示したい
– 最新の10ニュースを表示する
– 最新のニュースはタイトル、概要テキストと画像
– 次の4ニュースタイトルと概要
– 残りの5ニュースはタイトルのみ
●
3つのビューモードを利用します
– headline
– detailed
– line
- 81. 例:簡単なニュース一覧の設計
●
ニュース一覧テンプレート
{def $viewmode=''}
{foreach $news_list as $index => $news_item max 10}
{if lt($index,1)}
{set $viewmode='headline'}
{elseif le($index,5)}
{set $viewmode='detailed'}
{else}
{set $viewmode='line'}
{/if}
{node_view_gui content_node=$news_item view=$viewmode}
{/foreach}
- 83. エクステンション
●
普段開発する際はエクステンションのみで行います
● 元のdesignと関わらなくて、まとまりもいい
● eZ Publishでエクステンションはほとんどの機能を実装で
きます
– 設定・サイトアクセス
– デザイン・テンプレート
– テンプレートオペーレーター
– 翻訳
– PHPクラス
– データタイプ
– カーネルオーバーライド
– 管理画面の拡張
- 84. エクステンション
ベストプラクティス
●
サイトアクセス、設定はすべてエクステンションに持っていく
●
オバーライドテンプレートは綺麗にまとめる
– コンテンツクラスベースオーバーライドは
/extension/エステンション名/design/デザイン名/override/templates/classes/コンテンツクラス名/
ビュー名.tpl
– ノードID・オブジェクトIDベースオーバーライドは
/extension/エステンション名/design/デザイン名/override/templates/pages/ページの/パス.tpl
●
テンプレートで5行以上の再利用できるロジックはオペーレー
ターにする
● オペーレーターのコードはできるだけPHPクラスに移す
●
実装が早い、デバッグは簡単、テンプレートはわかりやすい、
可能性が広がる
- 85. eZ Publishのここがすごい!
eZ Components
● eZ Publishのライブラリーに含まれている
/lib/ezc/
● PHP自体の開発に関わったDerick Rethansが生み出
した高品質のPHPライブラリー
● 現在はApacheファンデーションでZeta Components
に生まれ変わっています
●
グラフとメールコンポーネントは特にすごい
● カスタムオペレーターで簡単にeZ Publishとインター
フェースできる
● eZ Publish 5ではどんどんSymfonyに置き換えられる
予定
- 86. eZ Publishのここがすごい!
オンラインエディター・eZ OE
● XMLブロックデータタイプを利用すると、編集画面
にeZ OE、リッチテキストエディターが利用できま
す
● TinyMCEベース
● コンテンツをXML形式で保存する
●
タグ毎にテンプレートを利用し、タグ毎のテンプ
レートをオーバーライドできる!
●
カスタムタグの追加可能、既存タグのカスタマイす
可能
●
タグの属性タイプも準備されています
- 87. eZ Publishのここがすごい!
eZ Find
●
高機能検索エンジン
● JavaのSolrベース
●
日本語対応
●
絞り込み検索「ファセット」
●
カスタマイズできて、属性の拡張できる
● 本来のfetchの代わりにもなれる
● 外部コンテンツ、複数eZ Publishを同時に検索
可能
●
パーフォーマンスはかなり早い
- 90. Easy CMSの機能紹介
●
メインの機能は2つ
– フラグ機能
– テンプレート選択機能
● ライセンスはGPL3
●
「フラグ絞り込み」データタイプの追加
● モジュールの追加「flag」と「template」
● fetchファンクションの追加
●
https://bitbucket.org/ericsagnes/ez-easycms/
からダウンロードできます
- 92. テンプレート機能
●
オーバーライドルールを書かずにテンプレートや
ビューモードを管理画面で選択できる
●
3種類のテンプレートが設定できる
– ノードテンプレート
– 子ノードテンプレート
– ノードレイアウト
●
テンプレートの設定は親子関係で継承されます
●
デフォルトでは2選択できます
– 継承 [選択されています]
– デフォルト
- 94. テンプレート機能
ノードテンプレート
●
実際はノードテンプレートに利用されるビューモード
● easycms.ini設定ファイルで追加できます
[Templates]
viewmodes[]
viewmodes[inherit]=継承する
viewmodes[default]=デフォルト
● 仕組みはfullビューモードにfetchファンクションで設定さ
れているビューモードを代わりに読み込みます
● 注意! override.iniのルールは「node/view/full.tpl」
でなく、「node/view/default.tpl」と設定する必要があり
ます
- 95. テンプレート機能
ノードレイアウト
●
ページレイアウトを選択できます
●
設定ファイルでできます
[Templates]
layouts[]
layouts[inherit]=継承する
layouts[default]=デフォルト
● 標準の「pagelayout.tpl」を「pagelayout_ノードレイア
ウト.tpl」に変更します
● 仕組みはpagelayout.tplからfetchでノードレイアウトを
取得し、「pagelayout_ノードレイアウト.tpl」を読み込む
● 注意! pagelayout.tplベースオーバライドと一緒に利用
できません
- 96. テンプレート機能
ユースケース
●
広告キャンペーン
●
テーマ的な使い方
●
デザインの運用が必要な場合
●
サブサイト
- 97. フラグ機能
●
テンプレートコードを書かずにフェッチを実装できる
●
ノードを「コンテナー」と「コンテンツ」にわける
●
「コンテンツ」と「コンテナー」の区別は設定ファイルで
できます
●
「コンテナー」はフラグを持つことができます
●
「コンテンツ」にフラグをつけることができます
●
「コンテンツ」に付けれるフラグはノードのパスに含ま
れたコンテナーアイテムのみとなります
●
「コンテナー」に「フラグ絞り込み」属性をつければ、
バーチャルフォルダーを実装できる
- 101. 例:カタログ
●
アイテムをすべて「アイテム一覧」フォルダーに作
成
●
「アイテム一覧」フォルダーにフラグを作る、
●
空フォルダーを作って、フラグ絞り込みのターゲッ
トを「アイテム一覧」にし、絞り込むフラグを選択し
ます
●
自動的に絞り込みページができます
●
デモ
- 102. インストール
●
多少複雑
● eZ Publishをインストール
● easy cmsをダウンロード
git clone git@bitbucket.org:ericsagnes/ez-easycms.git extension/easycms
● extension/easycms/doc/install.txt を参照
- 103. 課題
●
インストールを簡単にする
● 全fetchファンクションをドキュメントする
● eZ Findと連動させる
●
機能を追加する