SlideShare a Scribd company logo
1 of 47
Download to read offline
eZ Publish 勉強会~ 8 月~
   テンプレート
オーバーライドシステム
ご挨拶
●
    サニエ エリック
●   twitter/identica : @ericsagnes
●   サイト http://clina.jp/
eZ Publish CE 2012.6
●
    バグフィックス
●
    のみ
テンプレートその1
テンプレートオーバーライド
用語定義
デザイン
●   エクステンションの design/ フォルダー直下の
    フォルダー一個とその下のファイル一式
●   標準デザインは eZ Publish のルートフォルダー
    直下の design/ に入ります
●   一つのデザインはテンプレート、 CSS 、 JS 、
    コンテンツでない静的ファイル等を含めます
テンプレート
●   デザインフォルダー内に、ファイル拡張は .tpl
    のファイル
●   中身は HTML 、 eZ Publish テンプレート言語
    とカスタムテンプレート言語の組み合わせ
●
    2種類あります
    ●
        システムテンプレート
    ●
        ノードテンプレート
オーバーライド
●
    標準デザインのテンプレートの代わりに独自な
    テンプレートを利用する仕組み
●
    2種類があります
    ●
        標準オーバーライド
    ●
        条件付きオーバーライド
●
    テンプレート以外にもデザインの各コンテンツ
    をオーバーライドできます
ページ
●   ユーザが見る、 CMS の WEB ページ
●
    複数のテンプレートを組み合わせて作られてい
    ます
●   ノードを見る場合は必ず「 full 」ビューモード
    が利用されます
テンプレートオーバーライド
     可能性
オーバーライドの可能性
●
    テンプレートの粒度構造と管理
●
    テンプレートを複数サイトアクセスで利用
●
    テンプレート及びデザインの優先順位
●
    すべてのテンプレートのオーバーライド
●   JSON 、 XML などのコンテンツ特別バージョ
    ン
オーバーライドの可能性
●
    テンプレートを他プロジェクトで簡単に再利用
●
    テンプレート及びデザインの抽象化
●
    開発スピードと効率を究極に上げる
オーバーライドシステム
     紹介
基本システム
●
    一つのページは複数のテンプレートを利用します
●
    必要なテンプレートだけをオーバーライドします
●
    標準の standard デザインはすべての標準テンプ
    レートを提供します
●
    同じテンプレートは複数なデザインで存在できます
●
    一つのページは複数のデザインを利用します
基本システム
●
    デザイン毎にテンプレートセットを管理します
●
    一つのエクステンションは複数のデザインを含
    む事ができます
●   メインなテンプレートは pagelayout.tpl
●
    オーバーライドシステムは二種類あります
    ●
        標準オーバーライド
    ●
        条件付きオーバーライド
システムテンプレート
          ノードテンプレート
●   CMS の機能を利用する場合はシステムテンプ
    レートが利用されます
    例: user/login => user/login.tpl
    content/edit => content/edit.tpl
    モジュール / ビュー =>  モジュール / ビュー .tpl
●
    コンテンツ閲覧の場合はノードテンプレートが
    利用されます
    例: company/about => node/view/full.tpl
    news/2012 => node/view/full.tpl
テンプレート組み合わせ図
pagelayout.tpl
                 メインナビゲーション


   ノードテンプレート又は
   システムテンプレート




                    フッター
ページで利用されるテンプレート
●
    ページで利用されるテンプレートを確認する場
    合はデバッグモードを有効にします
●
    デバッグとテンプレートデバッグを有効にした
    場合はページの下利用されたテンプレートが表
    示されます
●   必ず pagelayout.tpl とシステム又はノードテン
    プレートは要求されます
ページで利用されるテンプレート
標準オーバーライド
●
    要求されるテンプレートをカスタムデザインで
    読み込む仕組み
●   テンプレートはカスタムデザインの templates
    フォルダーに入ります
●
    テンプレート名は同じです
    例: pagelayout.tpl
    extension/ エクステンション /design/ デザイン /templates/pagelayout.tpl
テンプレート抽出の仕組み
●   site.ini で設定されたデザインリストの順にテン
    プレートの存在を確認します
●
    テンプレートはデザインに存在する場合、利用
    されます
●
    テンプレートはデザインに存在しない場合、次
    のデザインを確認します
●   どのデザインに見つからない場合は standard
    デザインが利用されます
テンプレート抽出の仕組み・基本
                 有効デザインリスト
pagelayout.tpl
                             extension/myext/design/design3/
                 design1     templates/pagelayout.tpl


                 design2


                 design3


                    ...


                 standard
問題点
●
    コンテンツ閲覧の場合はノードテンプレートが
    利用されます
●
    ノードテンプレートは一つのみです
    node/view/full.tpl
●
    全てのコンテンツを同じテンプレートで実装す
    る?
●
    そこに条件オーバーライド!
条件オーバーライド
●
    特定な条件が満たされた場合に特定なテンプレートを
    利用する仕組み
●   条件オーバーライドは override.ini という設定ファイ
    ルに宣言します
●
    一つの条件オーバーライドは一つの設定ブロックで完
    結します
●
    利用できる条件は要求されたテンプレートによって決
    まります
●
    どのテンプレートにどの条件が使えるのはドキュメン
    テーションで確認できます
条件オーバーライドブロック

 ブロックタイトル           [full_article]
 要求テンプレート           Source=node/view/full.tpl
 利用テンプレート           MatchFile=full/article.tpl
テンプレートフォルダー         Subdir=templates
 テンプレート条件           Match[class_identifier]=article


このオーバーライドブロックの意味は:
「 node/view/full.tpl 」が要求されて、コンテンツのクラスは「 article 」の場合に
「 templates 」フォルダーの下にある「 full/article.tpl 」テンプレートを利用します。

従えて、この条件は利用された場合は下記の様なパスのテンプレートを読み込みます。
extension/myext/design/mydesign/override/templates/full/article.tpl
オーバーライド・フォルダー
●
    条件オーバーライドで利用されるテンプレート
    はデザインの「 override 」フォルダーの下に入
    ります
    例: extension/myext/design/mydesign/override/templates/page/top.tpl
●
    標準オーバーライドの場合はデザインの
    「 templates 」フォルダーに入ります
    例: extension/myext/design/mydesign/templates/pagelayout.tpl
条件オーバーライドブロックの特徴
●
    ブロックタイトルは独特で設定する必要があり
    ます
●
    ブロックに複数の条件を入れる事ができます、
    その場合、条件は論理積で適用されます
●
    二つの条件を論理和で適用したい場合は各条件
    を含めたブロックを作る事が必要
override.ini の特徴
●   override.ini のブロック順はとても大事です
●   override.ini のブロックは記載順で確認されま
    す、最初に条件が満たされたブロックは利用さ
    れます
●   そのため、 override.ini 内のブロックは詳しい
    条件から一般的な条件の順で並ぶ事が必要とな
    ります
ビューモード
●
    ノードテンプレートが要求された場合には必ず
    [node/view/full.tpl]
●   標準として、 full ビューモードが利用されます
●
    ただし、テンプレートから他のテンプレートを
    呼び出す際 (node_view_gui オペーレーター )
    にビューモードを自由に設定できます
●
    そのために同じコンテンツは複数なビューモー
    ドで見れます
ビューモードの追加
●
    ビューモードの追加はとても簡単にできます、
    テンプレートから他コンテンツを表示する際
    node_view_gui オペレーターに view パラメー
    ターを足します
    例: {node_view_gui content_node=$node 
    view=headline}
●
    この場合の要求されたテンプレートは
    node/view/headline.tpl となって、さら条件オー
    バーライドを設定できます
注意点と
ベストプラクティス
注意点
●   eZ Publish の柔軟性でもありますが、設定ファ
    イル、テンプレートファイル等は複数な場所に
    散らかっています
●
    特に設定ファイルは場所によって利用順番は決
    まりますので要注意
●
    混乱する場合
    ●
        サイトアクセス毎で適用される設定は管理画面で確
        認できます
    ●
        利用されるテンプレートはデバッグで確認できます
ベストプラクティス:鉄則
●   eZ Publish の標準テンプレートは絶対変更しま
    せん
●
    必ずデザインエクステンションを作って、カス
    タムデザインを作ります
●
    標準テンプレートの微調整したい場合は、その
    テンプレートをカスタムデザインにコピーし
    て、微調整をします
ベストプラクティス
●   条件オーバーライドの「 MatchFile 」は条件、
    ビューモード、属性等でフォルダーを作った方
    が管理しやすい
    ●   override/
        –   page/ ページ名 .tpl
            特定なページのテンプレート 例 : page/top.tpl
        –   クラス名 /view/ ビューモード名 .tpl
            ビューモードのテンプレート 例 :article/view/list.tpl
        –   クラス名 /layout/ レイアウト名 .tpl
            レイアウトのテンプレート 例 :article/layout/rss.tpl
        –   クラス名 /attribute/ 属性名 .tpl
            属性テンプレート 例 :article/attribute/title.tpl
テンプレートオーバーライド
    ユースケース
多ビューモードで簡単に
                ニュース一覧・概念
●
    ニュース一覧リストを下記のようにしたい
    ●
        最新のニュースはタイトル、画像と概要全文
    ●   次の 4 ニュースはタイトルと概要全文
    ●
        その次のニュースはタイトルのみです
●
    ビューモードは3つ利用します:
    ●   headline
    ●   detailed
    ●   line
多ビューモードで簡単に
 ニュース一覧・テンプレート

ニュース一覧テンプレート

{foreach $news_item in $index => $news_list   max 10}
  {if lt($index,1)}
    {$node_view_gui content_node=$news_item   view=headline}
  {elseif lt($index,5)}
    {$node_view_gui content_node=$news_item   view=detailed}
  {else}
    {$node_view_gui content_node=$news_item   view=line}
  {/if}
{/foreach}
多ビューモードで簡単に
         ニュース一覧・テンプレート
headline テンプレート
<div class="news">
<h3><a href={$node.url_alias|ezurl}>
{attribute_view_gui attribute=$node.data_map.title}
</a></h3>
<p>{attribute_view_gui attribute=$node.data_map.photo image_class=thumbnail}
{attribute_view_gui attribute=$node.data_map.short_text}</p>
</div>

detailed テンプレート
<div class="news">
<h3><a href={$node.url_alias|ezurl}>
{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|ezurl}>
{attribute_view_gui attribute=$node.data_map.title}
</a></p>
</div>
デザインの抽象・概念
●
    医療関係プロジェクトが多い
    ●
        歯科
    ●
        皮膚科
    ●
        眼科
●
    作業の効率を上げるためにできるだけ再利用し
    たい
デザインの抽象・図

              病院
            抽象デザイン




  皮膚科         眼科       歯科
抽象デザイン      抽象デザイン   抽象デザイン




 皮膚科 A       眼科 B     眼科 C
デザインの抽象・構造
●   extension/abstract_medical/design
    ●   abstract_hospital/
        基本の病院テンプレート
    ●   abstract_ophthalmologist/
        眼科の一般テンプレート
    ●   abstract_dermatologist/
        皮膚科の一般テンプレート
    ●   abstract_dentist/
    ●
        歯科の一般テンプレート
●   extension/dermatologist_a/design
    皮膚科 A 特定の画像やテンプレート
デザインの抽象・メリット
●
    メリット
    ●
        横展開は楽
    ●   マルチサイト・ SAAS に向いています
    ●
        テンプレートの数はかなり少ない
    ●
        上階層の抽象デザインに機能を追加した場合、下階
        層もすぐ利用できます
●
    注意点
    ●   override.ini の管理はデザインほど柔軟でないこと
まとめ
まとめ
●
    テンプレートオーバーライドは作業効率の最強
    の味方です
●
    ただし、ファイル配置と設定関係は複雑です、
    気をつけないと絶対落とし穴になります
●
    テンプレート設計はプロジェクトを作りながら
    行うでなく、データベース設計と同様に事前に
    心掛けて行うべき
●
    抽象化はできるだけ行うべき
●
    抽象化デザインを準備すれば、横展開は楽
まとめ
●
    テンプレートオーバーライドは今回紹介した以
    上の可能性があります
●   例えば、 wysiwyg エディターで利用するタグ一
    つ一つは条件オーバーライドできます
●
    カスタムモジュールではカスタムブロック条件
    も簡単に足せます
●
    抽象デザインとカスタムテンプレートオペレー
    ターの組み合わせで自分だけの eZ Publish が作
    れます
ご清聴ありがとうございました!
質問タイム

More Related Content

What's hot

EC-CUBEプラグイン講義
EC-CUBEプラグイン講義EC-CUBEプラグイン講義
EC-CUBEプラグイン講義ria1201
 
第2回 Magento cafe plus 〜新・Magentoカスタマイズ入門
第2回 Magento cafe plus 〜新・Magentoカスタマイズ入門第2回 Magento cafe plus 〜新・Magentoカスタマイズ入門
第2回 Magento cafe plus 〜新・Magentoカスタマイズ入門Hirokazu Nishi
 
ActionScriptを使わないFlash勉強会 #1(前日版)
ActionScriptを使わないFlash勉強会 #1(前日版)ActionScriptを使わないFlash勉強会 #1(前日版)
ActionScriptを使わないFlash勉強会 #1(前日版)libpanda
 
DoActionからJava VMバイトコードに変換する話
DoActionからJava VMバイトコードに変換する話DoActionからJava VMバイトコードに変換する話
DoActionからJava VMバイトコードに変換する話emorins
 
CSS Nite in Matsuyama vol.1 - session 4
CSS Nite in Matsuyama vol.1 - session 4 CSS Nite in Matsuyama vol.1 - session 4
CSS Nite in Matsuyama vol.1 - session 4 arisu yano
 
第3回 Magento Cafe Plus モジュール開発入門
第3回 Magento Cafe Plus モジュール開発入門第3回 Magento Cafe Plus モジュール開発入門
第3回 Magento Cafe Plus モジュール開発入門Hirokazu Nishi
 
WordPressで投稿記事情報の取得方法
WordPressで投稿記事情報の取得方法WordPressで投稿記事情報の取得方法
WordPressで投稿記事情報の取得方法regret raym
 
DW テンプレートをマスターして 楽々サイトメンテナンス
DW テンプレートをマスターして 楽々サイトメンテナンスDW テンプレートをマスターして 楽々サイトメンテナンス
DW テンプレートをマスターして 楽々サイトメンテナンスAkira Maruyama
 
第1回 Magento Cafe Plus Kansai ~ Magentoカスタマイズ入門
第1回 Magento Cafe Plus Kansai ~ Magentoカスタマイズ入門第1回 Magento Cafe Plus Kansai ~ Magentoカスタマイズ入門
第1回 Magento Cafe Plus Kansai ~ Magentoカスタマイズ入門Hirokazu Nishi
 
脱コピペ!デザイナーにもわかるPHPとWP_Query
脱コピペ!デザイナーにもわかるPHPとWP_Query脱コピペ!デザイナーにもわかるPHPとWP_Query
脱コピペ!デザイナーにもわかるPHPとWP_QueryHidekazu Ishikawa
 
これからのpre_get_postsの話をしよう
これからのpre_get_postsの話をしようこれからのpre_get_postsの話をしよう
これからのpre_get_postsの話をしようHishikawa Takuro
 
WordPressでオリジナルサイトを作るための最初の一歩的なカスタマイズテクニック
WordPressでオリジナルサイトを作るための最初の一歩的なカスタマイズテクニックWordPressでオリジナルサイトを作るための最初の一歩的なカスタマイズテクニック
WordPressでオリジナルサイトを作るための最初の一歩的なカスタマイズテクニックTakashi Uemura
 
XPagesDay2015 - 誰も教えてくれなかったデバッグ方法
XPagesDay2015 - 誰も教えてくれなかったデバッグ方法XPagesDay2015 - 誰も教えてくれなかったデバッグ方法
XPagesDay2015 - 誰も教えてくれなかったデバッグ方法Mitsuru Katoh
 
WordPressの常識をくつがえす超簡単テーマ"doshirouto"を作ったのでこれでテーマを理解しよう!
WordPressの常識をくつがえす超簡単テーマ"doshirouto"を作ったのでこれでテーマを理解しよう!WordPressの常識をくつがえす超簡単テーマ"doshirouto"を作ったのでこれでテーマを理解しよう!
WordPressの常識をくつがえす超簡単テーマ"doshirouto"を作ったのでこれでテーマを理解しよう!Takashi Uemura
 
What's New in MySQL 5.7 Optimizer @MySQL User Conference Tokyo 2015
What's New in MySQL 5.7 Optimizer @MySQL User Conference Tokyo 2015What's New in MySQL 5.7 Optimizer @MySQL User Conference Tokyo 2015
What's New in MySQL 5.7 Optimizer @MySQL User Conference Tokyo 2015Mikiya Okuno
 
Doma SQLテンプレートのしくみ
Doma SQLテンプレートのしくみDoma SQLテンプレートのしくみ
Doma SQLテンプレートのしくみToshihiro Nakamura
 
第4回Magento Cafe Plus〜Rewriteと独自テーブル
第4回Magento Cafe Plus〜Rewriteと独自テーブル第4回Magento Cafe Plus〜Rewriteと独自テーブル
第4回Magento Cafe Plus〜Rewriteと独自テーブルHirokazu Nishi
 
WordPress 3.2の新機能& 新デフォルトテーマ Twenty Eleven 大解剖!
WordPress 3.2の新機能& 新デフォルトテーマ Twenty Eleven 大解剖!WordPress 3.2の新機能& 新デフォルトテーマ Twenty Eleven 大解剖!
WordPress 3.2の新機能& 新デフォルトテーマ Twenty Eleven 大解剖!hokori matu
 
最強オブジェクト指向言語 JavaScript 再入門!
最強オブジェクト指向言語 JavaScript 再入門!最強オブジェクト指向言語 JavaScript 再入門!
最強オブジェクト指向言語 JavaScript 再入門!Yuji Nojima
 
WordPress3.0 新デフォルトテーマ Twenty Ten 大解剖! ~秋バージョン~
WordPress3.0 新デフォルトテーマ Twenty Ten 大解剖! ~秋バージョン~WordPress3.0 新デフォルトテーマ Twenty Ten 大解剖! ~秋バージョン~
WordPress3.0 新デフォルトテーマ Twenty Ten 大解剖! ~秋バージョン~hokori matu
 

What's hot (20)

EC-CUBEプラグイン講義
EC-CUBEプラグイン講義EC-CUBEプラグイン講義
EC-CUBEプラグイン講義
 
第2回 Magento cafe plus 〜新・Magentoカスタマイズ入門
第2回 Magento cafe plus 〜新・Magentoカスタマイズ入門第2回 Magento cafe plus 〜新・Magentoカスタマイズ入門
第2回 Magento cafe plus 〜新・Magentoカスタマイズ入門
 
ActionScriptを使わないFlash勉強会 #1(前日版)
ActionScriptを使わないFlash勉強会 #1(前日版)ActionScriptを使わないFlash勉強会 #1(前日版)
ActionScriptを使わないFlash勉強会 #1(前日版)
 
DoActionからJava VMバイトコードに変換する話
DoActionからJava VMバイトコードに変換する話DoActionからJava VMバイトコードに変換する話
DoActionからJava VMバイトコードに変換する話
 
CSS Nite in Matsuyama vol.1 - session 4
CSS Nite in Matsuyama vol.1 - session 4 CSS Nite in Matsuyama vol.1 - session 4
CSS Nite in Matsuyama vol.1 - session 4
 
第3回 Magento Cafe Plus モジュール開発入門
第3回 Magento Cafe Plus モジュール開発入門第3回 Magento Cafe Plus モジュール開発入門
第3回 Magento Cafe Plus モジュール開発入門
 
WordPressで投稿記事情報の取得方法
WordPressで投稿記事情報の取得方法WordPressで投稿記事情報の取得方法
WordPressで投稿記事情報の取得方法
 
DW テンプレートをマスターして 楽々サイトメンテナンス
DW テンプレートをマスターして 楽々サイトメンテナンスDW テンプレートをマスターして 楽々サイトメンテナンス
DW テンプレートをマスターして 楽々サイトメンテナンス
 
第1回 Magento Cafe Plus Kansai ~ Magentoカスタマイズ入門
第1回 Magento Cafe Plus Kansai ~ Magentoカスタマイズ入門第1回 Magento Cafe Plus Kansai ~ Magentoカスタマイズ入門
第1回 Magento Cafe Plus Kansai ~ Magentoカスタマイズ入門
 
脱コピペ!デザイナーにもわかるPHPとWP_Query
脱コピペ!デザイナーにもわかるPHPとWP_Query脱コピペ!デザイナーにもわかるPHPとWP_Query
脱コピペ!デザイナーにもわかるPHPとWP_Query
 
これからのpre_get_postsの話をしよう
これからのpre_get_postsの話をしようこれからのpre_get_postsの話をしよう
これからのpre_get_postsの話をしよう
 
WordPressでオリジナルサイトを作るための最初の一歩的なカスタマイズテクニック
WordPressでオリジナルサイトを作るための最初の一歩的なカスタマイズテクニックWordPressでオリジナルサイトを作るための最初の一歩的なカスタマイズテクニック
WordPressでオリジナルサイトを作るための最初の一歩的なカスタマイズテクニック
 
XPagesDay2015 - 誰も教えてくれなかったデバッグ方法
XPagesDay2015 - 誰も教えてくれなかったデバッグ方法XPagesDay2015 - 誰も教えてくれなかったデバッグ方法
XPagesDay2015 - 誰も教えてくれなかったデバッグ方法
 
WordPressの常識をくつがえす超簡単テーマ"doshirouto"を作ったのでこれでテーマを理解しよう!
WordPressの常識をくつがえす超簡単テーマ"doshirouto"を作ったのでこれでテーマを理解しよう!WordPressの常識をくつがえす超簡単テーマ"doshirouto"を作ったのでこれでテーマを理解しよう!
WordPressの常識をくつがえす超簡単テーマ"doshirouto"を作ったのでこれでテーマを理解しよう!
 
What's New in MySQL 5.7 Optimizer @MySQL User Conference Tokyo 2015
What's New in MySQL 5.7 Optimizer @MySQL User Conference Tokyo 2015What's New in MySQL 5.7 Optimizer @MySQL User Conference Tokyo 2015
What's New in MySQL 5.7 Optimizer @MySQL User Conference Tokyo 2015
 
Doma SQLテンプレートのしくみ
Doma SQLテンプレートのしくみDoma SQLテンプレートのしくみ
Doma SQLテンプレートのしくみ
 
第4回Magento Cafe Plus〜Rewriteと独自テーブル
第4回Magento Cafe Plus〜Rewriteと独自テーブル第4回Magento Cafe Plus〜Rewriteと独自テーブル
第4回Magento Cafe Plus〜Rewriteと独自テーブル
 
WordPress 3.2の新機能& 新デフォルトテーマ Twenty Eleven 大解剖!
WordPress 3.2の新機能& 新デフォルトテーマ Twenty Eleven 大解剖!WordPress 3.2の新機能& 新デフォルトテーマ Twenty Eleven 大解剖!
WordPress 3.2の新機能& 新デフォルトテーマ Twenty Eleven 大解剖!
 
最強オブジェクト指向言語 JavaScript 再入門!
最強オブジェクト指向言語 JavaScript 再入門!最強オブジェクト指向言語 JavaScript 再入門!
最強オブジェクト指向言語 JavaScript 再入門!
 
WordPress3.0 新デフォルトテーマ Twenty Ten 大解剖! ~秋バージョン~
WordPress3.0 新デフォルトテーマ Twenty Ten 大解剖! ~秋バージョン~WordPress3.0 新デフォルトテーマ Twenty Ten 大解剖! ~秋バージョン~
WordPress3.0 新デフォルトテーマ Twenty Ten 大解剖! ~秋バージョン~
 

Similar to eZ Publish 2012年8月勉強会 - テンプレートオーバーライド

Drupal のコア要素を知る ~構築を支える道具立て~
Drupal のコア要素を知る ~構築を支える道具立て~Drupal のコア要素を知る ~構築を支える道具立て~
Drupal のコア要素を知る ~構築を支える道具立て~Kenji Shirane
 
20130225 pronet study
20130225 pronet study20130225 pronet study
20130225 pronet studySix Apart
 
2005 07 30_xwj_customizinig
2005 07 30_xwj_customizinig2005 07 30_xwj_customizinig
2005 07 30_xwj_customizinigTom Hayakawa
 
20141206 handson
20141206 handson20141206 handson
20141206 handsonSix Apart
 
Yapc::Asia 2011 rejectConf Slide
Yapc::Asia 2011 rejectConf SlideYapc::Asia 2011 rejectConf Slide
Yapc::Asia 2011 rejectConf SlideSeiji Ohira
 
20141101 handson
20141101 handson20141101 handson
20141101 handsonSix Apart
 
eZ Publish勉強会10月〜Wysiwygエディター〜
eZ Publish勉強会10月〜Wysiwygエディター〜eZ Publish勉強会10月〜Wysiwygエディター〜
eZ Publish勉強会10月〜Wysiwygエディター〜ericsagnes
 
20141119 Movable Type HandsOn Seminar
20141119 Movable Type HandsOn Seminar20141119 Movable Type HandsOn Seminar
20141119 Movable Type HandsOn SeminarSix Apart
 
MediaWiki Tips for saveMLAK - wikibana
MediaWiki Tips for saveMLAK - wikibanaMediaWiki Tips for saveMLAK - wikibana
MediaWiki Tips for saveMLAK - wikibananinomy
 
CMSMix Sapporo vol.3 (Drupal の回)
CMSMix Sapporo vol.3 (Drupal の回)CMSMix Sapporo vol.3 (Drupal の回)
CMSMix Sapporo vol.3 (Drupal の回)Kenji Shirane
 
Azure でサーバーレス、 Infrastructure as Code どうしてますか?
Azure でサーバーレス、 Infrastructure as Code どうしてますか?Azure でサーバーレス、 Infrastructure as Code どうしてますか?
Azure でサーバーレス、 Infrastructure as Code どうしてますか?Kazumi IWANAGA
 
Drupalテーマとthemingの基礎
Drupalテーマとthemingの基礎Drupalテーマとthemingの基礎
Drupalテーマとthemingの基礎Kenji Shirane
 
2006 07 29_xtc2006_x_cube_template
2006 07 29_xtc2006_x_cube_template2006 07 29_xtc2006_x_cube_template
2006 07 29_xtc2006_x_cube_templateTom Hayakawa
 
20140924 mt cloud_handson_seminar
20140924 mt cloud_handson_seminar20140924 mt cloud_handson_seminar
20140924 mt cloud_handson_seminarSix Apart
 
フロントエンド実装者から見た PowerCMS X
フロントエンド実装者から見た PowerCMS Xフロントエンド実装者から見た PowerCMS X
フロントエンド実装者から見た PowerCMS XHideki Abe
 
WordPressテーマ Foundation for WordPress の紹介
WordPressテーマ Foundation for WordPress の紹介WordPressテーマ Foundation for WordPress の紹介
WordPressテーマ Foundation for WordPress の紹介Takashi Uemura
 
Xtext And Grails20091218
Xtext And Grails20091218Xtext And Grails20091218
Xtext And Grails20091218Akira Tanaka
 

Similar to eZ Publish 2012年8月勉強会 - テンプレートオーバーライド (20)

Drupal のコア要素を知る ~構築を支える道具立て~
Drupal のコア要素を知る ~構築を支える道具立て~Drupal のコア要素を知る ~構築を支える道具立て~
Drupal のコア要素を知る ~構築を支える道具立て~
 
20130225 pronet study
20130225 pronet study20130225 pronet study
20130225 pronet study
 
2005 07 30_xwj_customizinig
2005 07 30_xwj_customizinig2005 07 30_xwj_customizinig
2005 07 30_xwj_customizinig
 
20141206 handson
20141206 handson20141206 handson
20141206 handson
 
Yapc::Asia 2011 rejectConf Slide
Yapc::Asia 2011 rejectConf SlideYapc::Asia 2011 rejectConf Slide
Yapc::Asia 2011 rejectConf Slide
 
20141101 handson
20141101 handson20141101 handson
20141101 handson
 
eZ Publish勉強会10月〜Wysiwygエディター〜
eZ Publish勉強会10月〜Wysiwygエディター〜eZ Publish勉強会10月〜Wysiwygエディター〜
eZ Publish勉強会10月〜Wysiwygエディター〜
 
20141119 Movable Type HandsOn Seminar
20141119 Movable Type HandsOn Seminar20141119 Movable Type HandsOn Seminar
20141119 Movable Type HandsOn Seminar
 
Djangoのススメ
DjangoのススメDjangoのススメ
Djangoのススメ
 
MediaWiki Tips for saveMLAK - wikibana
MediaWiki Tips for saveMLAK - wikibanaMediaWiki Tips for saveMLAK - wikibana
MediaWiki Tips for saveMLAK - wikibana
 
CMSMix Sapporo vol.3 (Drupal の回)
CMSMix Sapporo vol.3 (Drupal の回)CMSMix Sapporo vol.3 (Drupal の回)
CMSMix Sapporo vol.3 (Drupal の回)
 
Fragment の利用パターン
Fragment の利用パターンFragment の利用パターン
Fragment の利用パターン
 
Azure でサーバーレス、 Infrastructure as Code どうしてますか?
Azure でサーバーレス、 Infrastructure as Code どうしてますか?Azure でサーバーレス、 Infrastructure as Code どうしてますか?
Azure でサーバーレス、 Infrastructure as Code どうしてますか?
 
Drupalテーマとthemingの基礎
Drupalテーマとthemingの基礎Drupalテーマとthemingの基礎
Drupalテーマとthemingの基礎
 
2006 07 29_xtc2006_x_cube_template
2006 07 29_xtc2006_x_cube_template2006 07 29_xtc2006_x_cube_template
2006 07 29_xtc2006_x_cube_template
 
20140924 mt cloud_handson_seminar
20140924 mt cloud_handson_seminar20140924 mt cloud_handson_seminar
20140924 mt cloud_handson_seminar
 
Vue入門
Vue入門Vue入門
Vue入門
 
フロントエンド実装者から見た PowerCMS X
フロントエンド実装者から見た PowerCMS Xフロントエンド実装者から見た PowerCMS X
フロントエンド実装者から見た PowerCMS X
 
WordPressテーマ Foundation for WordPress の紹介
WordPressテーマ Foundation for WordPress の紹介WordPressテーマ Foundation for WordPress の紹介
WordPressテーマ Foundation for WordPress の紹介
 
Xtext And Grails20091218
Xtext And Grails20091218Xtext And Grails20091218
Xtext And Grails20091218
 

More from ericsagnes

eZ publish勉強会2013年9月「ez publish効率入門」
eZ publish勉強会2013年9月「ez publish効率入門」eZ publish勉強会2013年9月「ez publish効率入門」
eZ publish勉強会2013年9月「ez publish効率入門」ericsagnes
 
eZ publish勉強会2013年7月「実装ケーススタディ」
eZ publish勉強会2013年7月「実装ケーススタディ」eZ publish勉強会2013年7月「実装ケーススタディ」
eZ publish勉強会2013年7月「実装ケーススタディ」ericsagnes
 
eZ Publish勉強会2013年6月「best practices」
eZ Publish勉強会2013年6月「best practices」eZ Publish勉強会2013年6月「best practices」
eZ Publish勉強会2013年6月「best practices」ericsagnes
 
eZ publish勉強会2013年4月「easy cmsエクステンションの紹介」
eZ publish勉強会2013年4月「easy cmsエクステンションの紹介」eZ publish勉強会2013年4月「easy cmsエクステンションの紹介」
eZ publish勉強会2013年4月「easy cmsエクステンションの紹介」ericsagnes
 
eZ Publish勉強会5月「eZ Find」
eZ Publish勉強会5月「eZ Find」eZ Publish勉強会5月「eZ Find」
eZ Publish勉強会5月「eZ Find」ericsagnes
 
個人ブログから大規模まで! 多機能 CMS 「 eZ Publish コミュニティエディション」の活用法
個人ブログから大規模まで! 多機能 CMS 「 eZ Publish コミュニティエディション」の活用法 個人ブログから大規模まで! 多機能 CMS 「 eZ Publish コミュニティエディション」の活用法
個人ブログから大規模まで! 多機能 CMS 「 eZ Publish コミュニティエディション」の活用法 ericsagnes
 
eZ Publish 2012年4月勉強会 - eZ Publish設計ベストプラクティス
eZ Publish 2012年4月勉強会 - eZ Publish設計ベストプラクティスeZ Publish 2012年4月勉強会 - eZ Publish設計ベストプラクティス
eZ Publish 2012年4月勉強会 - eZ Publish設計ベストプラクティスericsagnes
 
eZ Publish 2012年5月勉強会 - サイトアクセス
eZ Publish 2012年5月勉強会 - サイトアクセスeZ Publish 2012年5月勉強会 - サイトアクセス
eZ Publish 2012年5月勉強会 - サイトアクセスericsagnes
 
eZ Publish 2012年7月勉強会 - 権限システム
eZ Publish 2012年7月勉強会 - 権限システムeZ Publish 2012年7月勉強会 - 権限システム
eZ Publish 2012年7月勉強会 - 権限システムericsagnes
 

More from ericsagnes (9)

eZ publish勉強会2013年9月「ez publish効率入門」
eZ publish勉強会2013年9月「ez publish効率入門」eZ publish勉強会2013年9月「ez publish効率入門」
eZ publish勉強会2013年9月「ez publish効率入門」
 
eZ publish勉強会2013年7月「実装ケーススタディ」
eZ publish勉強会2013年7月「実装ケーススタディ」eZ publish勉強会2013年7月「実装ケーススタディ」
eZ publish勉強会2013年7月「実装ケーススタディ」
 
eZ Publish勉強会2013年6月「best practices」
eZ Publish勉強会2013年6月「best practices」eZ Publish勉強会2013年6月「best practices」
eZ Publish勉強会2013年6月「best practices」
 
eZ publish勉強会2013年4月「easy cmsエクステンションの紹介」
eZ publish勉強会2013年4月「easy cmsエクステンションの紹介」eZ publish勉強会2013年4月「easy cmsエクステンションの紹介」
eZ publish勉強会2013年4月「easy cmsエクステンションの紹介」
 
eZ Publish勉強会5月「eZ Find」
eZ Publish勉強会5月「eZ Find」eZ Publish勉強会5月「eZ Find」
eZ Publish勉強会5月「eZ Find」
 
個人ブログから大規模まで! 多機能 CMS 「 eZ Publish コミュニティエディション」の活用法
個人ブログから大規模まで! 多機能 CMS 「 eZ Publish コミュニティエディション」の活用法 個人ブログから大規模まで! 多機能 CMS 「 eZ Publish コミュニティエディション」の活用法
個人ブログから大規模まで! 多機能 CMS 「 eZ Publish コミュニティエディション」の活用法
 
eZ Publish 2012年4月勉強会 - eZ Publish設計ベストプラクティス
eZ Publish 2012年4月勉強会 - eZ Publish設計ベストプラクティスeZ Publish 2012年4月勉強会 - eZ Publish設計ベストプラクティス
eZ Publish 2012年4月勉強会 - eZ Publish設計ベストプラクティス
 
eZ Publish 2012年5月勉強会 - サイトアクセス
eZ Publish 2012年5月勉強会 - サイトアクセスeZ Publish 2012年5月勉強会 - サイトアクセス
eZ Publish 2012年5月勉強会 - サイトアクセス
 
eZ Publish 2012年7月勉強会 - 権限システム
eZ Publish 2012年7月勉強会 - 権限システムeZ Publish 2012年7月勉強会 - 権限システム
eZ Publish 2012年7月勉強会 - 権限システム
 

Recently uploaded

デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 

Recently uploaded (8)

デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 

eZ Publish 2012年8月勉強会 - テンプレートオーバーライド

  • 1. eZ Publish 勉強会~ 8 月~ テンプレート オーバーライドシステム
  • 2. ご挨拶 ● サニエ エリック ● twitter/identica : @ericsagnes ● サイト http://clina.jp/
  • 3. eZ Publish CE 2012.6 ● バグフィックス ● のみ
  • 6. デザイン ● エクステンションの design/ フォルダー直下の フォルダー一個とその下のファイル一式 ● 標準デザインは eZ Publish のルートフォルダー 直下の design/ に入ります ● 一つのデザインはテンプレート、 CSS 、 JS 、 コンテンツでない静的ファイル等を含めます
  • 7. テンプレート ● デザインフォルダー内に、ファイル拡張は .tpl のファイル ● 中身は HTML 、 eZ Publish テンプレート言語 とカスタムテンプレート言語の組み合わせ ● 2種類あります ● システムテンプレート ● ノードテンプレート
  • 8. オーバーライド ● 標準デザインのテンプレートの代わりに独自な テンプレートを利用する仕組み ● 2種類があります ● 標準オーバーライド ● 条件付きオーバーライド ● テンプレート以外にもデザインの各コンテンツ をオーバーライドできます
  • 9. ページ ● ユーザが見る、 CMS の WEB ページ ● 複数のテンプレートを組み合わせて作られてい ます ● ノードを見る場合は必ず「 full 」ビューモード が利用されます
  • 11. オーバーライドの可能性 ● テンプレートの粒度構造と管理 ● テンプレートを複数サイトアクセスで利用 ● テンプレート及びデザインの優先順位 ● すべてのテンプレートのオーバーライド ● JSON 、 XML などのコンテンツ特別バージョ ン
  • 12. オーバーライドの可能性 ● テンプレートを他プロジェクトで簡単に再利用 ● テンプレート及びデザインの抽象化 ● 開発スピードと効率を究極に上げる
  • 14. 基本システム ● 一つのページは複数のテンプレートを利用します ● 必要なテンプレートだけをオーバーライドします ● 標準の standard デザインはすべての標準テンプ レートを提供します ● 同じテンプレートは複数なデザインで存在できます ● 一つのページは複数のデザインを利用します
  • 15. 基本システム ● デザイン毎にテンプレートセットを管理します ● 一つのエクステンションは複数のデザインを含 む事ができます ● メインなテンプレートは pagelayout.tpl ● オーバーライドシステムは二種類あります ● 標準オーバーライド ● 条件付きオーバーライド
  • 16. システムテンプレート ノードテンプレート ● CMS の機能を利用する場合はシステムテンプ レートが利用されます 例: user/login => user/login.tpl content/edit => content/edit.tpl モジュール / ビュー =>  モジュール / ビュー .tpl ● コンテンツ閲覧の場合はノードテンプレートが 利用されます 例: company/about => node/view/full.tpl news/2012 => node/view/full.tpl
  • 17. テンプレート組み合わせ図 pagelayout.tpl メインナビゲーション ノードテンプレート又は システムテンプレート フッター
  • 18. ページで利用されるテンプレート ● ページで利用されるテンプレートを確認する場 合はデバッグモードを有効にします ● デバッグとテンプレートデバッグを有効にした 場合はページの下利用されたテンプレートが表 示されます ● 必ず pagelayout.tpl とシステム又はノードテン プレートは要求されます
  • 20. 標準オーバーライド ● 要求されるテンプレートをカスタムデザインで 読み込む仕組み ● テンプレートはカスタムデザインの templates フォルダーに入ります ● テンプレート名は同じです 例: pagelayout.tpl extension/ エクステンション /design/ デザイン /templates/pagelayout.tpl
  • 21. テンプレート抽出の仕組み ● site.ini で設定されたデザインリストの順にテン プレートの存在を確認します ● テンプレートはデザインに存在する場合、利用 されます ● テンプレートはデザインに存在しない場合、次 のデザインを確認します ● どのデザインに見つからない場合は standard デザインが利用されます
  • 22. テンプレート抽出の仕組み・基本 有効デザインリスト pagelayout.tpl extension/myext/design/design3/ design1 templates/pagelayout.tpl design2 design3 ... standard
  • 23. 問題点 ● コンテンツ閲覧の場合はノードテンプレートが 利用されます ● ノードテンプレートは一つのみです node/view/full.tpl ● 全てのコンテンツを同じテンプレートで実装す る? ● そこに条件オーバーライド!
  • 24. 条件オーバーライド ● 特定な条件が満たされた場合に特定なテンプレートを 利用する仕組み ● 条件オーバーライドは override.ini という設定ファイ ルに宣言します ● 一つの条件オーバーライドは一つの設定ブロックで完 結します ● 利用できる条件は要求されたテンプレートによって決 まります ● どのテンプレートにどの条件が使えるのはドキュメン テーションで確認できます
  • 25. 条件オーバーライドブロック ブロックタイトル [full_article] 要求テンプレート Source=node/view/full.tpl 利用テンプレート MatchFile=full/article.tpl テンプレートフォルダー Subdir=templates テンプレート条件 Match[class_identifier]=article このオーバーライドブロックの意味は: 「 node/view/full.tpl 」が要求されて、コンテンツのクラスは「 article 」の場合に 「 templates 」フォルダーの下にある「 full/article.tpl 」テンプレートを利用します。 従えて、この条件は利用された場合は下記の様なパスのテンプレートを読み込みます。 extension/myext/design/mydesign/override/templates/full/article.tpl
  • 26. オーバーライド・フォルダー ● 条件オーバーライドで利用されるテンプレート はデザインの「 override 」フォルダーの下に入 ります 例: extension/myext/design/mydesign/override/templates/page/top.tpl ● 標準オーバーライドの場合はデザインの 「 templates 」フォルダーに入ります 例: extension/myext/design/mydesign/templates/pagelayout.tpl
  • 27. 条件オーバーライドブロックの特徴 ● ブロックタイトルは独特で設定する必要があり ます ● ブロックに複数の条件を入れる事ができます、 その場合、条件は論理積で適用されます ● 二つの条件を論理和で適用したい場合は各条件 を含めたブロックを作る事が必要
  • 28. override.ini の特徴 ● override.ini のブロック順はとても大事です ● override.ini のブロックは記載順で確認されま す、最初に条件が満たされたブロックは利用さ れます ● そのため、 override.ini 内のブロックは詳しい 条件から一般的な条件の順で並ぶ事が必要とな ります
  • 29. ビューモード ● ノードテンプレートが要求された場合には必ず [node/view/full.tpl] ● 標準として、 full ビューモードが利用されます ● ただし、テンプレートから他のテンプレートを 呼び出す際 (node_view_gui オペーレーター ) にビューモードを自由に設定できます ● そのために同じコンテンツは複数なビューモー ドで見れます
  • 30. ビューモードの追加 ● ビューモードの追加はとても簡単にできます、 テンプレートから他コンテンツを表示する際 node_view_gui オペレーターに view パラメー ターを足します 例: {node_view_gui content_node=$node  view=headline} ● この場合の要求されたテンプレートは node/view/headline.tpl となって、さら条件オー バーライドを設定できます
  • 32. 注意点 ● eZ Publish の柔軟性でもありますが、設定ファ イル、テンプレートファイル等は複数な場所に 散らかっています ● 特に設定ファイルは場所によって利用順番は決 まりますので要注意 ● 混乱する場合 ● サイトアクセス毎で適用される設定は管理画面で確 認できます ● 利用されるテンプレートはデバッグで確認できます
  • 33. ベストプラクティス:鉄則 ● eZ Publish の標準テンプレートは絶対変更しま せん ● 必ずデザインエクステンションを作って、カス タムデザインを作ります ● 標準テンプレートの微調整したい場合は、その テンプレートをカスタムデザインにコピーし て、微調整をします
  • 34. ベストプラクティス ● 条件オーバーライドの「 MatchFile 」は条件、 ビューモード、属性等でフォルダーを作った方 が管理しやすい ● override/ – page/ ページ名 .tpl 特定なページのテンプレート 例 : page/top.tpl – クラス名 /view/ ビューモード名 .tpl ビューモードのテンプレート 例 :article/view/list.tpl – クラス名 /layout/ レイアウト名 .tpl レイアウトのテンプレート 例 :article/layout/rss.tpl – クラス名 /attribute/ 属性名 .tpl 属性テンプレート 例 :article/attribute/title.tpl
  • 36. 多ビューモードで簡単に ニュース一覧・概念 ● ニュース一覧リストを下記のようにしたい ● 最新のニュースはタイトル、画像と概要全文 ● 次の 4 ニュースはタイトルと概要全文 ● その次のニュースはタイトルのみです ● ビューモードは3つ利用します: ● headline ● detailed ● line
  • 37. 多ビューモードで簡単に ニュース一覧・テンプレート ニュース一覧テンプレート {foreach $news_item in $index => $news_list max 10} {if lt($index,1)} {$node_view_gui content_node=$news_item view=headline} {elseif lt($index,5)} {$node_view_gui content_node=$news_item view=detailed} {else} {$node_view_gui content_node=$news_item view=line} {/if} {/foreach}
  • 38. 多ビューモードで簡単に ニュース一覧・テンプレート headline テンプレート <div class="news"> <h3><a href={$node.url_alias|ezurl}> {attribute_view_gui attribute=$node.data_map.title} </a></h3> <p>{attribute_view_gui attribute=$node.data_map.photo image_class=thumbnail} {attribute_view_gui attribute=$node.data_map.short_text}</p> </div> detailed テンプレート <div class="news"> <h3><a href={$node.url_alias|ezurl}> {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|ezurl}> {attribute_view_gui attribute=$node.data_map.title} </a></p> </div>
  • 39. デザインの抽象・概念 ● 医療関係プロジェクトが多い ● 歯科 ● 皮膚科 ● 眼科 ● 作業の効率を上げるためにできるだけ再利用し たい
  • 40. デザインの抽象・図 病院 抽象デザイン 皮膚科 眼科 歯科 抽象デザイン 抽象デザイン 抽象デザイン 皮膚科 A 眼科 B 眼科 C
  • 41. デザインの抽象・構造 ● extension/abstract_medical/design ● abstract_hospital/ 基本の病院テンプレート ● abstract_ophthalmologist/ 眼科の一般テンプレート ● abstract_dermatologist/ 皮膚科の一般テンプレート ● abstract_dentist/ ● 歯科の一般テンプレート ● extension/dermatologist_a/design 皮膚科 A 特定の画像やテンプレート
  • 42. デザインの抽象・メリット ● メリット ● 横展開は楽 ● マルチサイト・ SAAS に向いています ● テンプレートの数はかなり少ない ● 上階層の抽象デザインに機能を追加した場合、下階 層もすぐ利用できます ● 注意点 ● override.ini の管理はデザインほど柔軟でないこと
  • 44. まとめ ● テンプレートオーバーライドは作業効率の最強 の味方です ● ただし、ファイル配置と設定関係は複雑です、 気をつけないと絶対落とし穴になります ● テンプレート設計はプロジェクトを作りながら 行うでなく、データベース設計と同様に事前に 心掛けて行うべき ● 抽象化はできるだけ行うべき ● 抽象化デザインを準備すれば、横展開は楽
  • 45. まとめ ● テンプレートオーバーライドは今回紹介した以 上の可能性があります ● 例えば、 wysiwyg エディターで利用するタグ一 つ一つは条件オーバーライドできます ● カスタムモジュールではカスタムブロック条件 も簡単に足せます ● 抽象デザインとカスタムテンプレートオペレー ターの組み合わせで自分だけの eZ Publish が作 れます