SlideShare a Scribd company logo
1 of 104
Download to read offline
CMSインサイド
eZ Publishの構築を簡単に!
自己紹介
●
    サニエ エリック
●   フランス人、2001年に来日
●   2008~2011 eZ Systems Japanでテクニカルコンサル
    タント
●   2011年より独立(eZ Publishを中心)
●   eZ Publishコミュニティ活動・毎月にez Publishの勉強会
●   es@clina.jp
●   @ericsagnes
eZ Publishの紹介
eZ Publish
●   ノルウェー発のオープンソースCMS (GPL2)

●   2001年から開発

●   eZ Systems社が開発の方針を決めます

●
    開発と展開はヨーロッパ中心
2つのeZ Publish
●   エンタープライズオープンソースCMS

●
    エンタープライズ版とオープンソース版

●
    オープンソースからエンタープライズは移行可能

●
    プロジェクトの規模とニーズに合わせて、バージョ
    ン決めれる
エンタープライズ版
●
    有料

●
    サブスクリプション型

●
    正式サポート

●
    専用エクステンションマーケット

●
    ステーブルバージョン(1年2回リリース)

●
    専用商用ライセンス
コミュニティ版
●
    エンタープライズ版とコードベースは一緒

●   GPL2ライセンス

●
    毎月のマイルストーンリリース

●
    エンタープライズほどステーブルでありません

●
    エンタープライズ版より最新機能を含んでいます
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)
eZ Publish 4
●   2007年12月にリリース
●   PHP 5に対応したバージョン
●   独自のフレームワーク、eZ Componentsの利
    用
●   最終バージョンは4.7
●
    安定しています
eZ Publish 5
●   2012年9月にリリース
●   Symfony 2ベース
●   新しいカーネル、カーネルAPI、テンプレート。。。
●   eZ Publish 4.7を含んでいる
●
    未完成なところもある
●
    変更点が多く、ドキュメントは現在に少ない
●
    開発者プレビューに近い
●
    可能性は広い!
eZ Publish 4環境
●   LAMP環境
●   PHP 5.2.14以上
●   MySQL 5以上
●   PostgreSQL 8以上でも動く
●   IISでも動く
eZ Publish のインストール
●   アーカイブのダウンロード(2012.8はおすすめ)
●
    アーカイブの解答
●   DBの作成
●
    バーチャルホスト・ホストの設定
●
    ブラウザからアクセスする
●
    インストールを完成する
●
    デモサイト、管理画面を確認する
eZ Publishの事例 ­ 海外
eZ Publishの事例 ­ 国内
eZ Publish の特徴
●
    柔軟なコンテンツエンジン

●
    豊富のデフォルト機能

●
    開発の柔軟性

●
    開発の速度・効率
デフォルト機能(一部)
●
    柔軟なコンテンツエンジン     ●
                         マルチドメイン
●
    多言語              ●
                         細かいアクセス権限
●
    バージョン管理          ●
                         マルチデータベース
●
    ブログ              ●   SSO
●
    掲示板              ●
                         高機能検索エンジン
●
    画像自動リサイズ         ●   REST API
●
    他段階承認            ●   AJAX API
●   webdav           ●
                         ファイルの一括アップロード
●   LDAP             ●
                         コンテンツ関連付け
●
    オフィスファイルインポート・
                     ●   RSS自動生成
    エクスポート           ●
                         サイトマップ自動生成
CMSとCMF
●   CMSはコンテンツマネジメントシステム
●   CMFはコンテンツマネジメントフレームワーク
●   eZ PublishはCMFでありながら、CMSである
●   と言いますと、eZ Componentsとコンテンツエン
    ジンを使って、別なCMSを「簡単」に作れます
●
    管理画面を簡単に置き換えれ、拡張できる
プラグインベースCMSと
          コアベースCMS
●   プラグインベースCMS
     + コミュニティが活発的
     + プラグインのチョイスが多い
     ー バージョン依存が複雑になります
     ー 品質がばらばら
     ー コアが浅い
●   コアベースCMS
     + バージョンの依存関係問題はほとんどない
     +品質が統一されている
     ー コミュニティ活動が静か
     ー エクステンションは自作ですることが多い
eZ Publishに向いてる案件
●
    ニーズの高い案件
●
    メディアサイト
●
    マルチドメイン・横展開
●
    カタログサイト
●   コーポレートサイト (eZ Webin)
●
    成長可能性のあるサイト
夢のようなCMS?
●
    機能があるだけハードルがやや高い
●
    ドキュメンテーションが少ない、わかりにくい
●
    サイトアクセス、ノード、オブジェクト、ビュー、モ
    ジュール。。。初心者から掴みづらいCMS
●
    でもなれると開発時間はかなり短縮できます
●
    機能の追加も簡単にできます
初心者向けの使い方
●   WebInパッケージをインストール
●   CSS変更
●
    コンテンツの調整
●
    コーポレートサイトの出来上がり
eZ Publishを活用した案件
●   8ドメイン・10サイト   ●
                      承認ワークフロー
●
    2つのデータベース     ●
                      未来公開
●
    多言語(日本語、英     ●
                      複雑なアクセス権限
    語)            ●
                      関連付け(タグ)
●   自動Twitter投稿   ●
                      画像ギャラリー
●
    イベントの自動管理     ●
                      複雑なキャッシュ設定
●
    クロスドメイン投稿     ●
                      テンプレート言語の拡
●   統合RSSフィード         張
eZ Publishを活用した案件
それでも
●   ひとつのeZ Publish
●
    元コードやテンプレートに一切の変更なし
●
    3つのエクステンションで実装
●
    〜150枚のテンプレート
●
    簡単に新規サブサイト・機能の追加可能
eZ Publishの技術紹介
eZ Publishの最大特徴!
          コンテンツエンジン
●   コンテンツを無理矢理CMSに合わせるのではなく、CMS
    はコンテンツに自然に合う

●
    コンテンツは自由なコンテンツクラスで定義

●   コンテンツクラスはGUIで作れます

●
    コンテンツクラスは属性の組み合わせ

●
    属性はデータタイプで定義できる

●   ニーズあれば、カスタムデータタイプは作成できる(PHP)
eZ Publishの最大特徴!
             コンテンツエンジン
●
    「イベント」のコンテンツクラスを作りましょう!
    –   タイトル[テキスト]
    –   紹介文[XMLブロック]
    –   開催日時[日付と時刻]
    –   終了日時[日時と時刻]
    –   地図[Google Mapロケーション]
eZ Publishの最大特徴!
      コンテンツエンジンのメリット
●
    既存クラスに簡単にフィールドを追加できます

●   DB、コーラムは一切気にしなくていい

●
    フィールドで絞り込み、検索できます

●
    コンテンツクラス別のテンプレート実装

●
    コンテンツクラス別のアクセス権限

●
    コンテンツレベルにロジック持たせる
コンテンツクラス、コンテンツツリー
        オブジェクト、ノード
●
    コンテンツはコンテンツツリーに作ります

●
    コンテンツを作る際はコンテンツクラスのインスタ
    ンス、オブジェクトは作られます

●
    同時にコンテンツツリーにノードが作られます

●
    ノードはオブジェクトの配置先と呼びます

●
    一つのオブジェクトは複数のノードに公開されるこ
    とができます
コンテンツクラス、コンテンツツリー
       オブジェクト、ノード

     コンテンツツリー               オブジェクトプール

        ノードID:2
                             オブジェクトID:3
       オブジェクトID:3


 ノードID:12      ノードID:16
オブジェクトID:15   オブジェクトID:25   オブジェクトID:15


 ノードID:34
オブジェクトID:25
                            オブジェクトID:25
ノード・オブジェクトの骨組み

ノード
 オブジェクト
  言語(日本語)     言語(英語)
  バージョン(5)    バージョン(5)
  属性          属性
  タイトル:ほげほげ   タイトル:FOO

  属性B         属性B

  バージョン(4)    バージョン(4)
コンテンツエンジン
           最後の一言
●
    実際ノードとオブジェクトの境線は薄い

●
    ノード・オブジェクトの全属性をテンプレートからア
    クセスできます

●
    メディアリソースとユーザ管理もコンテンツツリー
    の一部

●   コンテンツツリー内のノードのURLは属性で決め
    れます
コンテンツエンジン
●
    イベントクラスコンテンツの作成

●
    ノードとオブジェクト関係の確認

●
    配置先の確認
しっかりとしたアクセス権限
●
    行動別で権限を設定できます
    –   作成
    –   編集
    –   削除
●
    コンテンツ別で権限を設定できます
    –   セクション別
    –   サブツリー別
    –   言語別
    –   作成ユーザのグループ別
アクセス権限の骨組み
          ポリシー、ロール、ユーザ
●
    ポリシーはひとつの権限となります
    –   例「日本語のイベントを作成できる」
●
    ポリシーは基本的にカーネルの一つのモジュー
    ルの一つのファンクションにアクセスを許可します
●
    ロールはポリシーの組み合わせ
●
    ユーザ(又はユーザグループ)にロールを割り当
    てれる
●
    ロールを割り当てるときにコンテンツ制限(サブツ
    リー又はセクション)をつけることができます
アクセス権限の骨組み
 ポリシー、ロール、ユーザ

 ロールとポリシー     ユーザ管理


ロールA        ユーザグループ1
   ポリシーA       ユーザ2

   ポリシーB       ユーザ3



ロールC
   ポリシーD

   ポリシーE
アクセス権限
          最後の一言
●
    ユーザは普通のオブジェクト・ノードであります
●
    ユーザアカウント属性を持つノーづはすべて有効
    ユーザとなります
●
    オブジェクトの複数配置先を利用すれば、同じ
    ユーザを数ユーザグループに入れることができま
    す
●
    ロール割り当て制限をうまく使うとロールは簡単
    に再利用できます
アクセス権限
●
    ユーザグループの作成
●
    ユーザの作成
●
    ロールの作成
●
    ロールを割り当てる
豊富な設定
                設定とサイトアクセス
●   基本の設定ファイルはsettingsフォルダー直下に入っています
●   iniファイルとなっています
●
    ブロックとルールの組み合わせになります
●
    設定ファイルはたくさんあります!
●   一番重要な設定ファイルはsite.ini
●
    基本の設定は
    –   デフォルト設定: settings/直下
    –   オーバーライド設定: settings/override/直下
    –   サイトアクセス設定: settings/siteaccess/の下
●   デフォルト以外は.ini.append.phpの拡張をつける(セキュリ
    ティのため)
豊富な設定
             設定とサイトアクセス
●
    設定の優先順位は
    –   オーバーライド
    –   サイトアクセス
    –   デフォルト
●
    サイトアクセスは設定の組み合わせ
●
    サイトアクセスは特別な条件で読み込まれる設定
    –   特定なホスト名 www.site.com/
    –   特定なポート www.site.com:8080/
    –   特定なパス www.site.com/admin/
設定で管理できるもの
●
    利用するデザイン
●
    利用する言語
●   利用するDB
●
    デバッグの有効
●
    テンプレートの設定
●
    イメージの自動リサイズパータン
●
    など
サイトアクセス
●
    サイトアクセスを利用することで
    –   多言語サイト
    –   複数DBサイト
    –   複数デザイン
    –   管理画面(ただのデザイン)
    –   モバイルサイト(ただのデザイン)
    –   などの実装ができます
エクステンションと設定
●
    エクステンションで設定を管理できる
    –   デフォルト
    –   サイトアクセス
●
    あわせて(優先順位で)
    –   オーバーライド
    –   デフォルトサイトアクセス
    –   エクステンションサイトアクセス
    –   エクステンションデフォルト
    –   デフォルト
●
    の設定場所があります
●
    多くて混乱しやすいので、管理画面で確認しましょう!
    (システム設定 > INIファイル)
設定の変更
●
    オーバーライドでデバッグモードの有効
    /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
●
    結果の確認
デザインとは
●
    テンプレートはデザインでまとめます
●   デザインは/design直下のフォルダーです
●   デザインはテンプレート、CSS、JS、コンテンツでな
    い画像などを含めます
●
    一つのサイトアクセスは複数なデザインを利用しま
    す
    –   メインデザイン
    –   追加デザイン(任意、複数可能)
    –   デフォルトデザイン
●   site.iniで管理されます
デザインフォールバック
●
    メインデザインでリソースを見つけない場合には
    優先順位の次のデザインに探します
●   最終的に「standard」デザインに探します
●   standardデザインはすべての基本テンプレート
    を含めます
●
    デザインフォールバックをうまく利用すれば、作る
    テンプレート量を減らすことができます
●
    デザインを抽象的な使い方もできます!
デザインフォールバック

       design/design3/templates/pagelayout.tpl
デザインの抽象・例
デザインの抽象・構造
●   design/hospital
    –   基本の病院テンプレート
●   design/ophthalmologist
    –   眼科の一般テンプレート
●   design/dermatologist
    –   皮膚科の一般テンプレート
●   design/dentist/
    –   歯科の一般テンプレート
●   design/dermatologist_a
    –   皮膚科 A 特定の画像やテンプレート
テンプレート
●
    必ずデザインに入っています
●   テンプレート言語はsmartyに似ている
●   HTMLと{}で囲めたeZ Publishコード
●
    テンプレート言語を独自オペーレーターで拡張で
    きる
●
    一つのページには複数のテンプレートでできてい
    ます
●
    テンプレートは2種類あります、レイアウトテンプ
    レートとコンテンツテンプレート
レイアウトテンプレートと
           コンテンツテンプレート
pagelayout.tpl(レイアウトテンプレート)

                              ヘッダー


              コンテンツテンプレート




 ナビゲーション




                              フッター
ページで利用されるテンプレート
2種類のコンテンツテンプレート
●
    ノードを表示する時の「ノードテンプレート」
    /company/news
    /blog
●
    カーネルの機能をアクセスする時の「システムテ
    ンプレート」
    /user/login
    /content/edit
    /モジュール名/ファンクション名
システムテンプレート
●
    カーネルのインターフェースとなるテンプレート
●   URLは
    /モジュール名/ビュー名
●
    読み込まれるテンプレートファイルは
    モジュール名/ビュー名.tpl
    user/login.tpl
    user/logout.tpl
ノードテンプレート
●
    コンテンツ(ノード)を表示する際に必ず利用され
    ます
●   URLはノードのコンテンツツリーの位置できまりま
    す
●   システムURLでもアクセスできます
    /content/view/full/ノードID
●
    読み込まれるテンプレートファイルは必ず
    node/view/full.tpl
テンプレートオーバーライド
●
    ノードテンプレートはすべて同じテンプレートを利用します
●
    テンプレートオーバーライドを利用することで、好きな条件
    で別なテンプレートを読み込むことができます
    –   特定なコンテンツクラスのインスタンス
    –   特定なノードIDやオブジェクトID
    –   特定なセクションに入ってるノード
    –   など
●
    どのテンプレートにオーバーライド使える!
    (利用できる条件は異なります)
●   http://doc.ez.no/eZ-Publish/Technical-
    manual/4.x/Reference/Template-override-
    conditions
テンプレートオーバーライド
●   override.ini 設定ファイルで管理されます
●
    オーバーライドブロックをの組み合わせ
●
    順番でブロックが読み込まれて、最初マッチするも
    のは利用されます
●
    一つのブロックで複数の条件を設定できます
    (ANDとなります)
●
    オーバーライドブロックは下記のよう(基本)
    –   元のテンプレート
    –   代わりに利用するテンプレート
    –   条件
オーバーライドブロック



 ブロックタイトル     [full_article]
  元テンプレート     Source=node/view/full.tpl
 利用テンプレート     MatchFile=full/article.tpl
テンプレートフォルダー   Subdir=templates
    条件        Match[class_identifier]=article
テンプレートビューモード
●
    テンプレートのビューモードはオーバーライドブ
    ロックの元テンプレートの「node/view/ビュー
    モード.tpl」
●   デフォルトのビューモードは「full」となります
●   ノードのURLはシステム的に
    /content/view/full/ノードID
●
    一言で言いますとビューモードは求めるテンプ
    レートです
●
    ビューモードにいろいろの可能性があります!
    /content/view/sitemap/ノードID
デバッグで利用されている
テンプレートオーバーライドの確認
テンプレートの場所
●
    テンプレートはデザインに入ります
    –   /design/デザイン名/templates 標準テンプレート
    –   /design/デザイン名/override/templates
         オーバーライドテンプレート


●
    テンプレートのパスは深くなりますので、間違いや
    すい(特にエクステンションを利用する際)
テンプレート言語
●   HTMLとeZ Publishコードの組み合わせ
●   eZ Publishコードは{}で囲む
●   eZ Publishコードでは
    –   変数の定義と呼び出し
    –   オペーレーターによる処理
    –   ファンクションによる処理(フェッチ、インクルード等)
    –   ループ、IF等のブロック処理
●
    独自オペーレーターで拡張できます
テンプレート変数
●
    テンプレートで利用できる変数
●   「$」で始まる
●
    2種類あります
    –   モジュールが提供する変数
        $nodeなど
    –   テンプレートで作る変数
●
    変数のタイプは
    –   数字
    –   文字列
    –   配列
    –   オブジェクト
    –   ブーリアン
テンプレート変数
●   {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)} ハッシュ
$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
テンプレートオペレーター
●
    テンプレート内でロジックを実行できる特別なキー
    ワード
●
    基本的はインプットに対して、アウトプットを生成し
    ます
    –   {concat('hello',' world')} => 'hello world'
●   「|」でオペレーターを繋げれる
    –   {10|inc()|dec()} => 10
●
    デフォルトで140オペーレーター以上があります
●   PHPで独自オペーレーターが作れる
テンプレートファンクション
●
    オペーレーターに似ていますが、インプットを渡す
    ことができません
●
    代表的に他のテンプレートの呼び出しとコンテン
    ツを取得するフェッチを含めます
    –   {include uri='design:footer.html'}
●
    フェッチファンクション以外、独自ファンクションは
    あんまり作らない
テンプレートブロック
●   ブロックは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}
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}
fetchファンクション
●   fetchファンクションでモデルにクエリーを送れま
    す(コンテンツの取得)
●
    モジュール毎に設定されています
●
    公式ドキュメントにほとんどドキュメントされていま
    す
●   独自fetchファンクションを追加することができま
    す
●
    書き方は
    {fetch('モジュール名','fetchファンクション名',
    [パラメーター])}
代表的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')}
fetch – content, node
●
    単独のノードをフェッチする
●
    ノードオブジェクト
    [eZContentObjectTreeNode]を戻す
●
    使い方
    {def $node=fetch('content','node',hash(
       'node_id', ノードID
    ))}
●
    追加パラメーター
    –   'language-code' 特定な言語でフェッチする
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' ツリーの深さ [数字]
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')
    ))}
テンプレート呼び出し
●
    テンプレート内から、オーバーライドルールに従っ
    て、テンプレートを呼び出すことができます
●
    最も使われるのは
    –   ノードテンプレートを呼び出す
        {node_view_gui}
    –   属性テンプレートを呼び出す
        {attribute_view_gui}
●
    テンプレート作成の最高の味方!
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'}
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をうまく使えば、綺麗なテンプ
    レート、テンプレートの因数分解ができて、効率が
    どんどんアップ!
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'}
テンプレートベストプラクティス
●   変数の中身を見たい時はattributeオペーレー
    ターを使う
    {$var|attribute(show,1)}
●
    できるだけテンプレートの因数分解をして、数少な
    い、わかりやすいテンプレートを作りましょう
●   テンプレート言語のスピードはやや遅い(PHPに
    比べれば)、できることが限られていますので、テ
    ンプレート言語で実装が難しいものはカスタムオ
    ペーレーターで実装
例:簡単なニュース一覧の設計
●
    下記の仕様にあったニュースの一覧を表示したい
    –   最新の10ニュースを表示する
    –   最新のニュースはタイトル、概要テキストと画像
    –   次の4ニュースタイトルと概要
    –   残りの5ニュースはタイトルのみ
●
    3つのビューモードを利用します
    –   headline
    –   detailed
    –   line
例:簡単なニュース一覧の設計
●
    ニュース一覧テンプレート
    {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}
例:簡単なニュース一覧の設計
headlineテンプレート
<div class=”news”>
<h3><a href={$node.url_alias|ez_url}>
{attribute_view_gui attribute=node.data_map.title}
</a></h3>
<p>
{attribute_view_gui attribute=$node.data_map.image image_class='thumbnail'}
{attribute_view_gui attribute=$node.data_map.short_text}
</div>

detailedテンプレート
<div class=”news”>
<h3><a href={$node.url_alias|ez_url}>
{attribute_view_gui attribute=node.data_map.title}
</a></h3>
<p>
{attribute_view_gui attribute=$node.data_map.short_text}
</p>
</div>

lineテンプレート
<div class=”news”>
<p><a href={$node.url_alias|ez_url}>
{attribute_view_gui attribute=node.data_map.title}
</a></p>
</div>
エクステンション
●
    普段開発する際はエクステンションのみで行います
●   元のdesignと関わらなくて、まとまりもいい
●   eZ Publishでエクステンションはほとんどの機能を実装で
    きます
    –   設定・サイトアクセス
    –   デザイン・テンプレート
    –   テンプレートオペーレーター
    –   翻訳
    –   PHPクラス
    –   データタイプ
    –   カーネルオーバーライド
    –   管理画面の拡張
エクステンション
                       ベストプラクティス
●
    サイトアクセス、設定はすべてエクステンションに持っていく
●
    オバーライドテンプレートは綺麗にまとめる
    –   コンテンツクラスベースオーバーライドは
        /extension/エステンション名/design/デザイン名/override/templates/classes/コンテンツクラス名/
        ビュー名.tpl

    –   ノードID・オブジェクトIDベースオーバーライドは
        /extension/エステンション名/design/デザイン名/override/templates/pages/ページの/パス.tpl
●
    テンプレートで5行以上の再利用できるロジックはオペーレー
    ターにする
●   オペーレーターのコードはできるだけPHPクラスに移す
●
    実装が早い、デバッグは簡単、テンプレートはわかりやすい、
    可能性が広がる
eZ Publishのここがすごい!
           eZ Components
●   eZ Publishのライブラリーに含まれている
    /lib/ezc/
●   PHP自体の開発に関わったDerick Rethansが生み出
    した高品質のPHPライブラリー
●   現在はApacheファンデーションでZeta Components
    に生まれ変わっています
●
    グラフとメールコンポーネントは特にすごい
●   カスタムオペレーターで簡単にeZ Publishとインター
    フェースできる
●   eZ Publish 5ではどんどんSymfonyに置き換えられる
    予定
eZ Publishのここがすごい!
      オンラインエディター・eZ OE
●   XMLブロックデータタイプを利用すると、編集画面
    にeZ OE、リッチテキストエディターが利用できま
    す
●   TinyMCEベース
●   コンテンツをXML形式で保存する
●
    タグ毎にテンプレートを利用し、タグ毎のテンプ
    レートをオーバーライドできる!
●
    カスタムタグの追加可能、既存タグのカスタマイす
    可能
●
    タグの属性タイプも準備されています
eZ Publishのここがすごい!
               eZ Find
●
    高機能検索エンジン
●   JavaのSolrベース
●
    日本語対応
●
    絞り込み検索「ファセット」
●
    カスタマイズできて、属性の拡張できる
●   本来のfetchの代わりにもなれる
●   外部コンテンツ、複数eZ Publishを同時に検索
    可能
●
    パーフォーマンスはかなり早い
eZ Publishの紹介は以上
      質問タイム
日本コミュニティ作成のエクステンション
      Easy CMS
Easy CMSの機能紹介
●
    メインの機能は2つ
    –   フラグ機能
    –   テンプレート選択機能
●   ライセンスはGPL3
●
    「フラグ絞り込み」データタイプの追加
●   モジュールの追加「flag」と「template」
●   fetchファンクションの追加
●
    https://bitbucket.org/ericsagnes/ez-easycms/ 
    からダウンロードできます
Easy CMSのユースケース
●
    カタログサイト

●
    柔軟な運用が必要の場合

●
    デザインパターンが多いサイト
テンプレート機能
●
    オーバーライドルールを書かずにテンプレートや
    ビューモードを管理画面で選択できる
●
    3種類のテンプレートが設定できる
    –   ノードテンプレート
    –   子ノードテンプレート
    –   ノードレイアウト
●
    テンプレートの設定は親子関係で継承されます
●
    デフォルトでは2選択できます
    –   継承 [選択されています]
    –   デフォルト
テンプレート機能
インターフェース
テンプレート機能
                   ノードテンプレート
●
    実際はノードテンプレートに利用されるビューモード
●   easycms.ini設定ファイルで追加できます
    [Templates]
    viewmodes[]
    viewmodes[inherit]=継承する
    viewmodes[default]=デフォルト

●   仕組みはfullビューモードにfetchファンクションで設定さ
    れているビューモードを代わりに読み込みます
●   注意! override.iniのルールは「node/view/full.tpl」
    でなく、「node/view/default.tpl」と設定する必要があり
    ます
テンプレート機能
                  ノードレイアウト
●
    ページレイアウトを選択できます
●
    設定ファイルでできます
    [Templates]
    layouts[]
    layouts[inherit]=継承する
    layouts[default]=デフォルト
●   標準の「pagelayout.tpl」を「pagelayout_ノードレイア
    ウト.tpl」に変更します
●   仕組みはpagelayout.tplからfetchでノードレイアウトを
    取得し、「pagelayout_ノードレイアウト.tpl」を読み込む
●   注意! pagelayout.tplベースオーバライドと一緒に利用
    できません
テンプレート機能
             ユースケース
●
    広告キャンペーン

●
    テーマ的な使い方

●
    デザインの運用が必要な場合

●
    サブサイト
フラグ機能
●
    テンプレートコードを書かずにフェッチを実装できる
●
    ノードを「コンテナー」と「コンテンツ」にわける
●
    「コンテンツ」と「コンテナー」の区別は設定ファイルで
    できます
●
    「コンテナー」はフラグを持つことができます
●
    「コンテンツ」にフラグをつけることができます
●
    「コンテンツ」に付けれるフラグはノードのパスに含ま
    れたコンテナーアイテムのみとなります
●
    「コンテナー」に「フラグ絞り込み」属性をつければ、
    バーチャルフォルダーを実装できる
フラグ機能・
コンテナーインターフェース
フラグ機能・
コンテンツインターフェース
フラグ機能・
フラグ絞り込みインターフェース
例:カタログ
●
    アイテムをすべて「アイテム一覧」フォルダーに作
    成
●
    「アイテム一覧」フォルダーにフラグを作る、
●
    空フォルダーを作って、フラグ絞り込みのターゲッ
    トを「アイテム一覧」にし、絞り込むフラグを選択し
    ます
●
    自動的に絞り込みページができます
●
    デモ
インストール
●
    多少複雑
●   eZ Publishをインストール
●   easy cmsをダウンロード
    git clone git@bitbucket.org:ericsagnes/ez-easycms.git extension/easycms

●   extension/easycms/doc/install.txt を参照
課題
●
    インストールを簡単にする
●   全fetchファンクションをドキュメントする
●   eZ Findと連動させる
●
    機能を追加する 
ご清聴ありがとうございました!

More Related Content

What's hot

XPagesDay2014 A-4 XPages with jQueryMobile BADプラクティスガイド
XPagesDay2014 A-4 XPages with jQueryMobile BADプラクティスガイドXPagesDay2014 A-4 XPages with jQueryMobile BADプラクティスガイド
XPagesDay2014 A-4 XPages with jQueryMobile BADプラクティスガイドTetsuji Hayashi
 
ゼロからつくるWord pressテーマ第9回
ゼロからつくるWord pressテーマ第9回ゼロからつくるWord pressテーマ第9回
ゼロからつくるWord pressテーマ第9回Hitsuji
 
ゼロからつくるWord pressテーマ第5回 後編
ゼロからつくるWord pressテーマ第5回 後編ゼロからつくるWord pressテーマ第5回 後編
ゼロからつくるWord pressテーマ第5回 後編Hitsuji
 
101210 supreme web adobe seminar Nagoya
101210 supreme web adobe seminar Nagoya101210 supreme web adobe seminar Nagoya
101210 supreme web adobe seminar Nagoyatamotsu toyoda
 
ゼロからつくるWord pressテーマ第5回
ゼロからつくるWord pressテーマ第5回ゼロからつくるWord pressテーマ第5回
ゼロからつくるWord pressテーマ第5回Hitsuji
 
ゼロからつくるWord pressテーマ第6回
ゼロからつくるWord pressテーマ第6回ゼロからつくるWord pressテーマ第6回
ゼロからつくるWord pressテーマ第6回Hitsuji
 
ゼロからつくるWord pressテーマ第7回
ゼロからつくるWord pressテーマ第7回ゼロからつくるWord pressテーマ第7回
ゼロからつくるWord pressテーマ第7回Hitsuji
 
XPages 開発 Tips 百連発
XPages 開発 Tips 百連発XPages 開発 Tips 百連発
XPages 開発 Tips 百連発Mitsuru Katoh
 
ゼロからつくるWordPressテーマ第4回
ゼロからつくるWordPressテーマ第4回ゼロからつくるWordPressテーマ第4回
ゼロからつくるWordPressテーマ第4回Hitsuji
 
ゼロからつくるWord pressテーマ第8回
ゼロからつくるWord pressテーマ第8回ゼロからつくるWord pressテーマ第8回
ゼロからつくるWord pressテーマ第8回Hitsuji
 
20141101 handson
20141101 handson20141101 handson
20141101 handsonSix Apart
 
WordPress 3.2の新機能& 新デフォルトテーマ Twenty Eleven 大解剖!
WordPress 3.2の新機能& 新デフォルトテーマ Twenty Eleven 大解剖!WordPress 3.2の新機能& 新デフォルトテーマ Twenty Eleven 大解剖!
WordPress 3.2の新機能& 新デフォルトテーマ Twenty Eleven 大解剖!hokori matu
 
マークアップ講座 01b HTML
マークアップ講座 01b HTMLマークアップ講座 01b HTML
マークアップ講座 01b HTMLeiji sekiya
 
WordPress3.0 新デフォルトテーマ Twenty Ten 大解剖! ~秋バージョン~
WordPress3.0 新デフォルトテーマ Twenty Ten 大解剖! ~秋バージョン~WordPress3.0 新デフォルトテーマ Twenty Ten 大解剖! ~秋バージョン~
WordPress3.0 新デフォルトテーマ Twenty Ten 大解剖! ~秋バージョン~hokori matu
 
WordPressの常識をくつがえす超簡単テーマ"doshirouto"を作ったのでこれでテーマを理解しよう!
WordPressの常識をくつがえす超簡単テーマ"doshirouto"を作ったのでこれでテーマを理解しよう!WordPressの常識をくつがえす超簡単テーマ"doshirouto"を作ったのでこれでテーマを理解しよう!
WordPressの常識をくつがえす超簡単テーマ"doshirouto"を作ったのでこれでテーマを理解しよう!Takashi Uemura
 
CSSだけでもけっこうイケルTwenty Tenのカスタマイズとそこから踏み出す第一歩
CSSだけでもけっこうイケルTwenty Tenのカスタマイズとそこから踏み出す第一歩CSSだけでもけっこうイケルTwenty Tenのカスタマイズとそこから踏み出す第一歩
CSSだけでもけっこうイケルTwenty Tenのカスタマイズとそこから踏み出す第一歩Chieko Aihara
 
ブログの枠を超える?ためのWordPressカスタマイズ入門
ブログの枠を超える?ためのWordPressカスタマイズ入門ブログの枠を超える?ためのWordPressカスタマイズ入門
ブログの枠を超える?ためのWordPressカスタマイズ入門muracchi
 
20141119 Movable Type HandsOn Seminar
20141119 Movable Type HandsOn Seminar20141119 Movable Type HandsOn Seminar
20141119 Movable Type HandsOn SeminarSix Apart
 
WordPressでオリジナルサイトを作るための最初の一歩的なカスタマイズテクニック
WordPressでオリジナルサイトを作るための最初の一歩的なカスタマイズテクニックWordPressでオリジナルサイトを作るための最初の一歩的なカスタマイズテクニック
WordPressでオリジナルサイトを作るための最初の一歩的なカスタマイズテクニックTakashi Uemura
 
第2回 Magento cafe plus 〜新・Magentoカスタマイズ入門
第2回 Magento cafe plus 〜新・Magentoカスタマイズ入門第2回 Magento cafe plus 〜新・Magentoカスタマイズ入門
第2回 Magento cafe plus 〜新・Magentoカスタマイズ入門Hirokazu Nishi
 

What's hot (20)

XPagesDay2014 A-4 XPages with jQueryMobile BADプラクティスガイド
XPagesDay2014 A-4 XPages with jQueryMobile BADプラクティスガイドXPagesDay2014 A-4 XPages with jQueryMobile BADプラクティスガイド
XPagesDay2014 A-4 XPages with jQueryMobile BADプラクティスガイド
 
ゼロからつくるWord pressテーマ第9回
ゼロからつくるWord pressテーマ第9回ゼロからつくるWord pressテーマ第9回
ゼロからつくるWord pressテーマ第9回
 
ゼロからつくるWord pressテーマ第5回 後編
ゼロからつくるWord pressテーマ第5回 後編ゼロからつくるWord pressテーマ第5回 後編
ゼロからつくるWord pressテーマ第5回 後編
 
101210 supreme web adobe seminar Nagoya
101210 supreme web adobe seminar Nagoya101210 supreme web adobe seminar Nagoya
101210 supreme web adobe seminar Nagoya
 
ゼロからつくるWord pressテーマ第5回
ゼロからつくるWord pressテーマ第5回ゼロからつくるWord pressテーマ第5回
ゼロからつくるWord pressテーマ第5回
 
ゼロからつくるWord pressテーマ第6回
ゼロからつくるWord pressテーマ第6回ゼロからつくるWord pressテーマ第6回
ゼロからつくるWord pressテーマ第6回
 
ゼロからつくるWord pressテーマ第7回
ゼロからつくるWord pressテーマ第7回ゼロからつくるWord pressテーマ第7回
ゼロからつくるWord pressテーマ第7回
 
XPages 開発 Tips 百連発
XPages 開発 Tips 百連発XPages 開発 Tips 百連発
XPages 開発 Tips 百連発
 
ゼロからつくるWordPressテーマ第4回
ゼロからつくるWordPressテーマ第4回ゼロからつくるWordPressテーマ第4回
ゼロからつくるWordPressテーマ第4回
 
ゼロからつくるWord pressテーマ第8回
ゼロからつくるWord pressテーマ第8回ゼロからつくるWord pressテーマ第8回
ゼロからつくるWord pressテーマ第8回
 
20141101 handson
20141101 handson20141101 handson
20141101 handson
 
WordPress 3.2の新機能& 新デフォルトテーマ Twenty Eleven 大解剖!
WordPress 3.2の新機能& 新デフォルトテーマ Twenty Eleven 大解剖!WordPress 3.2の新機能& 新デフォルトテーマ Twenty Eleven 大解剖!
WordPress 3.2の新機能& 新デフォルトテーマ Twenty Eleven 大解剖!
 
マークアップ講座 01b HTML
マークアップ講座 01b HTMLマークアップ講座 01b HTML
マークアップ講座 01b HTML
 
WordPress3.0 新デフォルトテーマ Twenty Ten 大解剖! ~秋バージョン~
WordPress3.0 新デフォルトテーマ Twenty Ten 大解剖! ~秋バージョン~WordPress3.0 新デフォルトテーマ Twenty Ten 大解剖! ~秋バージョン~
WordPress3.0 新デフォルトテーマ Twenty Ten 大解剖! ~秋バージョン~
 
WordPressの常識をくつがえす超簡単テーマ"doshirouto"を作ったのでこれでテーマを理解しよう!
WordPressの常識をくつがえす超簡単テーマ"doshirouto"を作ったのでこれでテーマを理解しよう!WordPressの常識をくつがえす超簡単テーマ"doshirouto"を作ったのでこれでテーマを理解しよう!
WordPressの常識をくつがえす超簡単テーマ"doshirouto"を作ったのでこれでテーマを理解しよう!
 
CSSだけでもけっこうイケルTwenty Tenのカスタマイズとそこから踏み出す第一歩
CSSだけでもけっこうイケルTwenty Tenのカスタマイズとそこから踏み出す第一歩CSSだけでもけっこうイケルTwenty Tenのカスタマイズとそこから踏み出す第一歩
CSSだけでもけっこうイケルTwenty Tenのカスタマイズとそこから踏み出す第一歩
 
ブログの枠を超える?ためのWordPressカスタマイズ入門
ブログの枠を超える?ためのWordPressカスタマイズ入門ブログの枠を超える?ためのWordPressカスタマイズ入門
ブログの枠を超える?ためのWordPressカスタマイズ入門
 
20141119 Movable Type HandsOn Seminar
20141119 Movable Type HandsOn Seminar20141119 Movable Type HandsOn Seminar
20141119 Movable Type HandsOn Seminar
 
WordPressでオリジナルサイトを作るための最初の一歩的なカスタマイズテクニック
WordPressでオリジナルサイトを作るための最初の一歩的なカスタマイズテクニックWordPressでオリジナルサイトを作るための最初の一歩的なカスタマイズテクニック
WordPressでオリジナルサイトを作るための最初の一歩的なカスタマイズテクニック
 
第2回 Magento cafe plus 〜新・Magentoカスタマイズ入門
第2回 Magento cafe plus 〜新・Magentoカスタマイズ入門第2回 Magento cafe plus 〜新・Magentoカスタマイズ入門
第2回 Magento cafe plus 〜新・Magentoカスタマイズ入門
 

Similar to eZ Publish勉強会2013年3月「eZ Publishの構築を簡単に!」

eZ Publish 2012年5月勉強会 - サイトアクセス
eZ Publish 2012年5月勉強会 - サイトアクセスeZ Publish 2012年5月勉強会 - サイトアクセス
eZ Publish 2012年5月勉強会 - サイトアクセスericsagnes
 
個人ブログから大規模まで! 多機能 CMS 「 eZ Publish コミュニティエディション」の活用法
個人ブログから大規模まで! 多機能 CMS 「 eZ Publish コミュニティエディション」の活用法 個人ブログから大規模まで! 多機能 CMS 「 eZ Publish コミュニティエディション」の活用法
個人ブログから大規模まで! 多機能 CMS 「 eZ Publish コミュニティエディション」の活用法 ericsagnes
 
20140924 mt cloud_handson_seminar
20140924 mt cloud_handson_seminar20140924 mt cloud_handson_seminar
20140924 mt cloud_handson_seminarSix Apart
 
Ocs2013 tokyo spring_plone
Ocs2013 tokyo spring_ploneOcs2013 tokyo spring_plone
Ocs2013 tokyo spring_ploneManabu Terada
 
20141206 handson
20141206 handson20141206 handson
20141206 handsonSix Apart
 
eZ Publish勉強会10月〜Wysiwygエディター〜
eZ Publish勉強会10月〜Wysiwygエディター〜eZ Publish勉強会10月〜Wysiwygエディター〜
eZ Publish勉強会10月〜Wysiwygエディター〜ericsagnes
 
Contao Open Source CMS / 3.3と、その向こう
Contao Open Source CMS / 3.3と、その向こうContao Open Source CMS / 3.3と、その向こう
Contao Open Source CMS / 3.3と、その向こうTakahiro Kambe
 
MediaWiki Tips for saveMLAK - wikibana
MediaWiki Tips for saveMLAK - wikibanaMediaWiki Tips for saveMLAK - wikibana
MediaWiki Tips for saveMLAK - wikibananinomy
 
Internet Explorer 9 の新機能「固定サイト」 (Pinned sites)
Internet Explorer 9 の新機能「固定サイト」 (Pinned sites)Internet Explorer 9 の新機能「固定サイト」 (Pinned sites)
Internet Explorer 9 の新機能「固定サイト」 (Pinned sites)shigeya
 
Eclipse xtext 紹介
Eclipse xtext 紹介Eclipse xtext 紹介
Eclipse xtext 紹介Akira Tanaka
 
『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説
『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説
『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説Daisuke Nishino
 
CMSMix Sapporo vol.3 (Drupal の回)
CMSMix Sapporo vol.3 (Drupal の回)CMSMix Sapporo vol.3 (Drupal の回)
CMSMix Sapporo vol.3 (Drupal の回)Kenji Shirane
 
Movable type seminar 20120703
Movable type seminar 20120703Movable type seminar 20120703
Movable type seminar 20120703Six Apart
 
ここが変わったTizen sdk2.0alpha
ここが変わったTizen sdk2.0alphaここが変わったTizen sdk2.0alpha
ここが変わったTizen sdk2.0alphaHiroshi Sakate
 
Ocs2012 tokyo/spring plone
Ocs2012 tokyo/spring plone Ocs2012 tokyo/spring plone
Ocs2012 tokyo/spring plone Manabu Terada
 
Contao Open Source CMS -- CMS大阪夏祭り 2015
Contao Open Source CMS -- CMS大阪夏祭り 2015Contao Open Source CMS -- CMS大阪夏祭り 2015
Contao Open Source CMS -- CMS大阪夏祭り 2015Takahiro Kambe
 
20120822_dstn技術交流会_dstnのご紹介と最新技術情報
20120822_dstn技術交流会_dstnのご紹介と最新技術情報20120822_dstn技術交流会_dstnのご紹介と最新技術情報
20120822_dstn技術交流会_dstnのご紹介と最新技術情報dstn
 
2012 05-19第44回cocoa勉強会発表資料
2012 05-19第44回cocoa勉強会発表資料2012 05-19第44回cocoa勉強会発表資料
2012 05-19第44回cocoa勉強会発表資料OCHI Shuji
 

Similar to eZ Publish勉強会2013年3月「eZ Publishの構築を簡単に!」 (20)

eZ Publish 2012年5月勉強会 - サイトアクセス
eZ Publish 2012年5月勉強会 - サイトアクセスeZ Publish 2012年5月勉強会 - サイトアクセス
eZ Publish 2012年5月勉強会 - サイトアクセス
 
個人ブログから大規模まで! 多機能 CMS 「 eZ Publish コミュニティエディション」の活用法
個人ブログから大規模まで! 多機能 CMS 「 eZ Publish コミュニティエディション」の活用法 個人ブログから大規模まで! 多機能 CMS 「 eZ Publish コミュニティエディション」の活用法
個人ブログから大規模まで! 多機能 CMS 「 eZ Publish コミュニティエディション」の活用法
 
20140924 mt cloud_handson_seminar
20140924 mt cloud_handson_seminar20140924 mt cloud_handson_seminar
20140924 mt cloud_handson_seminar
 
Ocs2013 tokyo spring_plone
Ocs2013 tokyo spring_ploneOcs2013 tokyo spring_plone
Ocs2013 tokyo spring_plone
 
20141206 handson
20141206 handson20141206 handson
20141206 handson
 
eZ Publish勉強会10月〜Wysiwygエディター〜
eZ Publish勉強会10月〜Wysiwygエディター〜eZ Publish勉強会10月〜Wysiwygエディター〜
eZ Publish勉強会10月〜Wysiwygエディター〜
 
Contao Open Source CMS / 3.3と、その向こう
Contao Open Source CMS / 3.3と、その向こうContao Open Source CMS / 3.3と、その向こう
Contao Open Source CMS / 3.3と、その向こう
 
MediaWiki Tips for saveMLAK - wikibana
MediaWiki Tips for saveMLAK - wikibanaMediaWiki Tips for saveMLAK - wikibana
MediaWiki Tips for saveMLAK - wikibana
 
Internet Explorer 9 の新機能「固定サイト」 (Pinned sites)
Internet Explorer 9 の新機能「固定サイト」 (Pinned sites)Internet Explorer 9 の新機能「固定サイト」 (Pinned sites)
Internet Explorer 9 の新機能「固定サイト」 (Pinned sites)
 
Eclipse xtext 紹介
Eclipse xtext 紹介Eclipse xtext 紹介
Eclipse xtext 紹介
 
『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説
『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説
『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説
 
CMSMix Sapporo vol.3 (Drupal の回)
CMSMix Sapporo vol.3 (Drupal の回)CMSMix Sapporo vol.3 (Drupal の回)
CMSMix Sapporo vol.3 (Drupal の回)
 
Djangoのススメ
DjangoのススメDjangoのススメ
Djangoのススメ
 
Movable type seminar 20120703
Movable type seminar 20120703Movable type seminar 20120703
Movable type seminar 20120703
 
ここが変わったTizen sdk2.0alpha
ここが変わったTizen sdk2.0alphaここが変わったTizen sdk2.0alpha
ここが変わったTizen sdk2.0alpha
 
20090328
2009032820090328
20090328
 
Ocs2012 tokyo/spring plone
Ocs2012 tokyo/spring plone Ocs2012 tokyo/spring plone
Ocs2012 tokyo/spring plone
 
Contao Open Source CMS -- CMS大阪夏祭り 2015
Contao Open Source CMS -- CMS大阪夏祭り 2015Contao Open Source CMS -- CMS大阪夏祭り 2015
Contao Open Source CMS -- CMS大阪夏祭り 2015
 
20120822_dstn技術交流会_dstnのご紹介と最新技術情報
20120822_dstn技術交流会_dstnのご紹介と最新技術情報20120822_dstn技術交流会_dstnのご紹介と最新技術情報
20120822_dstn技術交流会_dstnのご紹介と最新技術情報
 
2012 05-19第44回cocoa勉強会発表資料
2012 05-19第44回cocoa勉強会発表資料2012 05-19第44回cocoa勉強会発表資料
2012 05-19第44回cocoa勉強会発表資料
 

Recently uploaded

LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルCRI Japan, Inc.
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...Toru Tamaki
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイスCRI Japan, Inc.
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsWSO2
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Gamesatsushi061452
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Hiroshi Tomioka
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptxsn679259
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video UnderstandingToru Tamaki
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 

Recently uploaded (12)

LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 

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の作成 ● バーチャルホスト・ホストの設定 ● ブラウザからアクセスする ● インストールを完成する ● デモサイト、管理画面を確認する
  • 15. eZ Publish の特徴 ● 柔軟なコンテンツエンジン ● 豊富のデフォルト機能 ● 開発の柔軟性 ● 開発の速度・効率
  • 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
  • 31. ノード・オブジェクトの骨組み ノード オブジェクト 言語(日本語) 言語(英語) バージョン(5) バージョン(5) 属性 属性 タイトル:ほげほげ タイトル:FOO 属性B 属性B バージョン(4) バージョン(4)
  • 32. コンテンツエンジン 最後の一言 ● 実際ノードとオブジェクトの境線は薄い ● ノード・オブジェクトの全属性をテンプレートからア クセスできます ● メディアリソースとユーザ管理もコンテンツツリー の一部 ● コンテンツツリー内のノードのURLは属性で決め れます
  • 33. コンテンツエンジン ● イベントクラスコンテンツの作成 ● ノードとオブジェクト関係の確認 ● 配置先の確認
  • 34. しっかりとしたアクセス権限 ● 行動別で権限を設定できます – 作成 – 編集 – 削除 ● コンテンツ別で権限を設定できます – セクション別 – サブツリー別 – 言語別 – 作成ユーザのグループ別
  • 35. アクセス権限の骨組み ポリシー、ロール、ユーザ ● ポリシーはひとつの権限となります – 例「日本語のイベントを作成できる」 ● ポリシーは基本的にカーネルの一つのモジュー ルの一つのファンクションにアクセスを許可します ● ロールはポリシーの組み合わせ ● ユーザ(又はユーザグループ)にロールを割り当 てれる ● ロールを割り当てるときにコンテンツ制限(サブツ リー又はセクション)をつけることができます
  • 36. アクセス権限の骨組み ポリシー、ロール、ユーザ ロールとポリシー ユーザ管理 ロールA ユーザグループ1 ポリシーA ユーザ2 ポリシーB ユーザ3 ロールC ポリシーD ポリシーE
  • 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を同時に検索 可能 ● パーフォーマンスはかなり早い
  • 88. eZ Publishの紹介は以上 質問タイム
  • 90. Easy CMSの機能紹介 ● メインの機能は2つ – フラグ機能 – テンプレート選択機能 ● ライセンスはGPL3 ● 「フラグ絞り込み」データタイプの追加 ● モジュールの追加「flag」と「template」 ● fetchファンクションの追加 ● https://bitbucket.org/ericsagnes/ez-easycms/  からダウンロードできます
  • 91. Easy CMSのユースケース ● カタログサイト ● 柔軟な運用が必要の場合 ● デザインパターンが多いサイト
  • 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と連動させる ● 機能を追加する