Soumettre la recherche
Mettre en ligne
eZ Publish勉強会9月〜テンプレート言語〜
•
1 j'aime
•
2,038 vues
E
ericsagnes
Suivre
eZ Publishのテンプレート言語の紹介
Lire moins
Lire la suite
Technologie
Signaler
Partager
Signaler
Partager
1 sur 61
Télécharger maintenant
Télécharger pour lire hors ligne
Recommandé
電子商務:第三方支付
電子商務:第三方支付
志堅 汪
CNA Presentation
CNA Presentation
MeganSimpson27
Melnick Even Day 2015 - imóveis com até 36% de desconto - confira a apresenta...
Melnick Even Day 2015 - imóveis com até 36% de desconto - confira a apresenta...
Ulisses Stum Grandemagne
Resistenza al gelo coperture in laterizio
Resistenza al gelo coperture in laterizio
CertiMaC
História do porto - Os judeus e as judiarias do porto - artur filipe dos santos
História do porto - Os judeus e as judiarias do porto - artur filipe dos santos
Artur Filipe dos Santos
Catálogo Gorras Publicitarias 2020
Catálogo Gorras Publicitarias 2020
LANDETTA PRODUCCIONES
eZ Publish 2012年8月勉強会 - テンプレートオーバーライド
eZ Publish 2012年8月勉強会 - テンプレートオーバーライド
ericsagnes
eZ Publish 2012年4月勉強会 - eZ Publish設計ベストプラクティス
eZ Publish 2012年4月勉強会 - eZ Publish設計ベストプラクティス
ericsagnes
Recommandé
電子商務:第三方支付
電子商務:第三方支付
志堅 汪
CNA Presentation
CNA Presentation
MeganSimpson27
Melnick Even Day 2015 - imóveis com até 36% de desconto - confira a apresenta...
Melnick Even Day 2015 - imóveis com até 36% de desconto - confira a apresenta...
Ulisses Stum Grandemagne
Resistenza al gelo coperture in laterizio
Resistenza al gelo coperture in laterizio
CertiMaC
História do porto - Os judeus e as judiarias do porto - artur filipe dos santos
História do porto - Os judeus e as judiarias do porto - artur filipe dos santos
Artur Filipe dos Santos
Catálogo Gorras Publicitarias 2020
Catálogo Gorras Publicitarias 2020
LANDETTA PRODUCCIONES
eZ Publish 2012年8月勉強会 - テンプレートオーバーライド
eZ Publish 2012年8月勉強会 - テンプレートオーバーライド
ericsagnes
eZ Publish 2012年4月勉強会 - eZ Publish設計ベストプラクティス
eZ Publish 2012年4月勉強会 - eZ Publish設計ベストプラクティス
ericsagnes
Clojure programming-chapter-2
Clojure programming-chapter-2
Masao Kato
知って得する標準関数の使い方
知って得する標準関数の使い方
Soudai Sone
Lisp Tutorial for Pythonista : Day 3
Lisp Tutorial for Pythonista : Day 3
Ransui Iso
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)
Hiroaki KOBAYASHI
コードビュー中心で開発するDreamweaverテンプレート
コードビュー中心で開発するDreamweaverテンプレート
Akira Maruyama
GNU awk (gawk) を用いた Apache ログ解析方法
GNU awk (gawk) を用いた Apache ログ解析方法
博文 斉藤
初心者講習会資料(Osaka.R#7)
初心者講習会資料(Osaka.R#7)
Masahiro Hayashi
Django boodoo
Django boodoo
泰 増田
PHPフレームワーク入門
PHPフレームワーク入門
Sho A
Gen-Template-for-Perl
Gen-Template-for-Perl
nasneg
CodeIgniter入門
CodeIgniter入門
Sho A
Form libraries
Form libraries
Atsushi Odagiri
Form libraries
Form libraries
Atsushi Odagiri
20170923 excelユーザーのためのr入門
20170923 excelユーザーのためのr入門
Takashi Kitano
Perl勉強会#2資料
Perl勉強会#2資料
Kiyo Tsunezumi
Rails3.1rc4を試してみた
Rails3.1rc4を試してみた
Takahiro Hidaka
ビギナーだから使いたいO/Rマッパー ~Tengを使った開発~
ビギナーだから使いたいO/Rマッパー ~Tengを使った開発~
Akabane Hiroyuki
Scala on Hadoop
Scala on Hadoop
Shinji Tanaka
MapReduce入門
MapReduce入門
Satoshi Noto
Parse.comと始めるBackbone.js入門(jscafe7)
Parse.comと始めるBackbone.js入門(jscafe7)
Ryuma Tsukano
eZ publish勉強会2013年9月「ez publish効率入門」
eZ publish勉強会2013年9月「ez publish効率入門」
ericsagnes
eZ publish勉強会2013年7月「実装ケーススタディ」
eZ publish勉強会2013年7月「実装ケーススタディ」
ericsagnes
Contenu connexe
Similaire à eZ Publish勉強会9月〜テンプレート言語〜
Clojure programming-chapter-2
Clojure programming-chapter-2
Masao Kato
知って得する標準関数の使い方
知って得する標準関数の使い方
Soudai Sone
Lisp Tutorial for Pythonista : Day 3
Lisp Tutorial for Pythonista : Day 3
Ransui Iso
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)
Hiroaki KOBAYASHI
コードビュー中心で開発するDreamweaverテンプレート
コードビュー中心で開発するDreamweaverテンプレート
Akira Maruyama
GNU awk (gawk) を用いた Apache ログ解析方法
GNU awk (gawk) を用いた Apache ログ解析方法
博文 斉藤
初心者講習会資料(Osaka.R#7)
初心者講習会資料(Osaka.R#7)
Masahiro Hayashi
Django boodoo
Django boodoo
泰 増田
PHPフレームワーク入門
PHPフレームワーク入門
Sho A
Gen-Template-for-Perl
Gen-Template-for-Perl
nasneg
CodeIgniter入門
CodeIgniter入門
Sho A
Form libraries
Form libraries
Atsushi Odagiri
Form libraries
Form libraries
Atsushi Odagiri
20170923 excelユーザーのためのr入門
20170923 excelユーザーのためのr入門
Takashi Kitano
Perl勉強会#2資料
Perl勉強会#2資料
Kiyo Tsunezumi
Rails3.1rc4を試してみた
Rails3.1rc4を試してみた
Takahiro Hidaka
ビギナーだから使いたいO/Rマッパー ~Tengを使った開発~
ビギナーだから使いたいO/Rマッパー ~Tengを使った開発~
Akabane Hiroyuki
Scala on Hadoop
Scala on Hadoop
Shinji Tanaka
MapReduce入門
MapReduce入門
Satoshi Noto
Parse.comと始めるBackbone.js入門(jscafe7)
Parse.comと始めるBackbone.js入門(jscafe7)
Ryuma Tsukano
Similaire à eZ Publish勉強会9月〜テンプレート言語〜
(20)
Clojure programming-chapter-2
Clojure programming-chapter-2
知って得する標準関数の使い方
知って得する標準関数の使い方
Lisp Tutorial for Pythonista : Day 3
Lisp Tutorial for Pythonista : Day 3
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)
コードビュー中心で開発するDreamweaverテンプレート
コードビュー中心で開発するDreamweaverテンプレート
GNU awk (gawk) を用いた Apache ログ解析方法
GNU awk (gawk) を用いた Apache ログ解析方法
初心者講習会資料(Osaka.R#7)
初心者講習会資料(Osaka.R#7)
Django boodoo
Django boodoo
PHPフレームワーク入門
PHPフレームワーク入門
Gen-Template-for-Perl
Gen-Template-for-Perl
CodeIgniter入門
CodeIgniter入門
Form libraries
Form libraries
Form libraries
Form libraries
20170923 excelユーザーのためのr入門
20170923 excelユーザーのためのr入門
Perl勉強会#2資料
Perl勉強会#2資料
Rails3.1rc4を試してみた
Rails3.1rc4を試してみた
ビギナーだから使いたいO/Rマッパー ~Tengを使った開発~
ビギナーだから使いたいO/Rマッパー ~Tengを使った開発~
Scala on Hadoop
Scala on Hadoop
MapReduce入門
MapReduce入門
Parse.comと始めるBackbone.js入門(jscafe7)
Parse.comと始めるBackbone.js入門(jscafe7)
Plus de ericsagnes
eZ publish勉強会2013年9月「ez publish効率入門」
eZ publish勉強会2013年9月「ez publish効率入門」
ericsagnes
eZ publish勉強会2013年7月「実装ケーススタディ」
eZ publish勉強会2013年7月「実装ケーススタディ」
ericsagnes
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エクステンションの紹介」
ericsagnes
eZ Publish勉強会5月「eZ Find」
eZ Publish勉強会5月「eZ Find」
ericsagnes
eZ Publish勉強会2013年3月「eZ Publishの構築を簡単に!」
eZ Publish勉強会2013年3月「eZ Publishの構築を簡単に!」
ericsagnes
eZ Publish勉強会10月〜Wysiwygエディター〜
eZ Publish勉強会10月〜Wysiwygエディター〜
ericsagnes
個人ブログから大規模まで! 多機能 CMS 「 eZ Publish コミュニティエディション」の活用法
個人ブログから大規模まで! 多機能 CMS 「 eZ Publish コミュニティエディション」の活用法
ericsagnes
eZ Publish 2012年5月勉強会 - サイトアクセス
eZ Publish 2012年5月勉強会 - サイトアクセス
ericsagnes
eZ Publish 2012年7月勉強会 - 権限システム
eZ Publish 2012年7月勉強会 - 権限システム
ericsagnes
Plus de ericsagnes
(10)
eZ publish勉強会2013年9月「ez publish効率入門」
eZ publish勉強会2013年9月「ez publish効率入門」
eZ publish勉強会2013年7月「実装ケーススタディ」
eZ publish勉強会2013年7月「実装ケーススタディ」
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勉強会5月「eZ Find」
eZ Publish勉強会5月「eZ Find」
eZ Publish勉強会2013年3月「eZ Publishの構築を簡単に!」
eZ Publish勉強会2013年3月「eZ Publishの構築を簡単に!」
eZ Publish勉強会10月〜Wysiwygエディター〜
eZ Publish勉強会10月〜Wysiwygエディター〜
個人ブログから大規模まで! 多機能 CMS 「 eZ Publish コミュニティエディション」の活用法
個人ブログから大規模まで! 多機能 CMS 「 eZ Publish コミュニティエディション」の活用法
eZ Publish 2012年5月勉強会 - サイトアクセス
eZ Publish 2012年5月勉強会 - サイトアクセス
eZ Publish 2012年7月勉強会 - 権限システム
eZ Publish 2012年7月勉強会 - 権限システム
Dernier
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
博三 太田
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
sugiuralab
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
FumieNakayama
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
UEHARA, Tetsutaro
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
FumieNakayama
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
akihisamiyanaga1
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
Yuki Kikuchi
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
Hiroshi Tomioka
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NTT DATA Technology & Innovation
Dernier
(9)
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
eZ Publish勉強会9月〜テンプレート言語〜
1.
eZ Publish 勉強会~ 9
月~ テンプレート言語
2.
ご挨拶
● サニエ エリック ● twitter/identica : @ericsagnes ● サイト http://clina.jp/
3.
eZ Publish CE 2012.8
● 2012.7 がなかったため、変更が多く ● eZ Publish 5 に向けてコードの修正はメインで した
4.
eZ Publish 5
● 2012.9 は eZ Publish の初めてリリースとなる ● メージャーバージョンなので、多くの機能が変 わります ● Symfony 2 ベースになります ● テンプレートエンジンは twig になります
5.
テンプレート言語
6.
用語定義
7.
デザイン
● エクステンションの design/ フォルダー直下の フォルダー一個とその下のファイル一式 ● 標準デザインは eZ Publish のルートフォルダー 直下の design/ に入ります ● 一つのデザインはテンプレート、 CSS 、 JS 、 コンテンツでない静的ファイル等を含めます
8.
テンプレート
● デザインフォルダー内に、ファイル拡張は .tpl のファイル ● 中身は HTML 、 eZ Publish テンプレート言語 とカスタムテンプレート言語の組み合わせ ● 2種類あります ● システムテンプレート ● ノードテンプレート
9.
オーバーライド
● 標準デザインのテンプレートの代わりに独自な テンプレートを利用する仕組み ● 2種類があります ● 標準オーバーライド ● 条件付きオーバーライド ● テンプレート以外にもデザインの各コンテンツ をオーバーライドできます
10.
ページ
● ユーザが見る、 CMS の WEB ページ ● 複数のテンプレートを組み合わせて作られてい ます ● ノードを見る場合は必ず「 full 」ビューモード が利用されます
11.
テンプレート言語
● HTML と eZ Publish 独自のコードが使える言語 ● smarty によくにています ● eZ Publish のコードは波括弧 {} に入ります ● オペレーター、ファンクション、ブロックを利 用できます ● 独自オペレーターで拡張できます
12.
テンプレート変数
● テンプレートで利用できる変数 ● 「 $ 」で始まる ● 2種類あります ● モジュールが提供する変数 $node など ● 独自で作る変数
13.
テンプレートオペーレーター
● テンプレート内でロジックを実行できる特別な キーワード ● 基本的はインプットに対してアウトプットを生 成する {10|inc()} => 11 ● 「 | 」で連続できる {10|inc()|dec()} => 10 ● PHP で独自のオペレーターが作れる
14.
テンプレートブロック
● テンプレート内でロジックブロックを実行でき る特別なキーワード ● 主に ● 条件ブロック {if}{elsif}{else}{/if} ● ループ {foreach}{/foreach} ● 閉じタグが必ず付く {/tag}
15.
テンプレートファンクション
● テンプレート内でロジックを実行できる特別な キーワード ● オペレーターとの違いはインプットをとらない 事 {fetch} など ● 一般的は独自ファンクションのを作らない
16.
テンプレート言語
17.
MVC と eZ Publish
● eZ Publish は MVC デザインパータンを利用し ています ● モデル( M )はコンテンツクラス ● コントローラ( C )はモジュール・ビュー ● ビュー( V )はテンプレート ● ただし、 eZ Publish の場合はコントローラを変 更できないため、ビューにコントローラ的なロ ジックが入ります
18.
変数
19.
テンプレート変数
● 2種類あります ● eZ (モジュール)が提供する変数 ● 独自で作る変数 ● 変数には複数な種類があります ● 数字 {def $var = 1234} ● 文字 {def $var = “ 変数” } ● ブーリアン {def $var = true()} ● 配列 {def $var = array('a','b','c')} ● ハッシュ {def $ var = hash('name', 'bob', 'age', 24)} ● オブジェクト(テンプレートでは作れない)
20.
テンプレート変数
● 変数に関わる主なファンクション ● {def} で変数を作る {def $a = 1} ● {set} で変数の値を変更する {set $a = 2} ● {undef} で変数を破棄する ● 注意 ● 既に存在する変数に {def} をするとエラーが出ます ● {undef} はテンプレートの終わりに自動的にされます ● {def} で作られてない変数に {set} をかけるとエラーが出ます
21.
テンプレート変数 {def $weather = " 晴れ "} <p>
本日の天気は {$weather}</p> {set $weather = " 雨 "} <p> 明日の天気は {$weather}</p> {undef}
22.
文字列
● 設定の際に「””」又は「 '' 」で囲まれた変数 は文字列として扱われる {def $weather = " 晴れ "} <p> 今日の天気は {$weather}</p> {set $weather = " 雨 "} <p> 明日の天気は {$weather}</p> {undef}
23.
文字列 代表的オペレーター
● concat() 複数の文字列を合体する {concat(' 東京都 ',' 新宿区 ')} => 東京都新宿区 ● contains() 文字列が含まれてるを確認する {' 東京都新宿区 '|contains(' 東京都 ')} => true ● explode() 文字列を配列に分散する {' 青、赤、緑 '|explode(' 、 ')} => [' 青 ',' 赤 ',' 緑 '] ● wash() HTML にセーフ文字列を戻す {'<p> テスト <p>'|wash} => '<p> テスト <p>'
24.
配列
● 配列は {array( 値 )} で作れる ● 配列の項目は「 [ 数 ] 」と「 . 数」でアクセス できる {def $fruits = array(' りんご ', ' バナナ ', ' みかん ')} {$fruits.0} => ' りんご ' {$fruits[1]} => ' バナナ ' {set $fruits = $fruits|replace(0,1,' 桃 ')} {$fruits} => [' 桃 ', ' バナナ ', ' みかん ']
25.
配列 代表的オペレーター
● append() 配列に項目を追加 {array('a','b')|append('c','d')} => ['a','b','c','d'] ● contains() 配列の中身の確認 {array('a', 'b')|contains('a')} => true ● implode() 配列を文字列に合体させる {array('a','b')|implode('&')} => 'a&b' ● merge() 二つの配列を合体する {array('a','b')|merge(array('c','d'))} => ['a','b','c','d'] ● reverse() 配列を逆の順番にする {array('a','b','c')|reverse()} => ['c','b','a'] ● count() 配列のサイズを戻します {array('a', 'b', 'c')|count} => 3
26.
ハッシュ
● 特別な配列、キーとバリューを結びます ● 配列と同じオペレーターを利用できます {def $user = hash('name', 'bob', 'age', 24)} {$user['name']} => 'bob' {$user.age} => 24 {set $user = $user|merge(hash('id', 'bob24'))} {$user['id']} => 'bob24'
27.
数字
● 数字をする {def $a = 1} ● フロート数字 {def $a = 3.14159}
28.
数字 代表的オペレーター
● ceil() floor() round() 少数をなくす {3.1415|ceil()} => 4 {3.1415|floor()} => 3 {3.1415|round} => 3 ● inc() dec() 1 を足す・引く {1|inc()} => 2 {2|dec()} => 1 ● sum() sub() mul() div() 計算をする {2|sum(3,4)} => 9 {2|sub(1)} => 1 {2|mul(10)} => 20 {10|div(5)} => 2
29.
数字 代表的オペレーター
● gt() lt() ge() le() eq() 比較オペーレーター ● gt() greater than > {2|gt(1)} => true() ● lt() lesser than < {2|lt(1)} => false() ● ge() greater or equal >= {2|ge(2)} => true() ● le() lesser or equal <= {2|le(2.1)} => true() ● eq() equal = {2|eq(2)} = true
30.
ブーリアン
● true() か false オペーレーターで設定 {def $a = true()} ● 注意:数字の 0 と空文字列 '' は false() として扱 われます
31.
$node
32.
$node
● ビューテンプレートで利用できる ● [eZContentObjectTreeNode] のインスタンス ● 現ノードの情報を幅広くもっています ● $node の情報を確認したい場合は {$node|attribute('show',1)}
33.
$node 代表的な変数
● $node.parent – 親ノード [eZContentObjectTreeNode] ● $node.children 子ノード [ 配列 ] ● $node.data_map ノードの属性 [ 配列 ] ● $node.url_alias ノードの相対 URL[ 文字列 ] ● $node.name ノードの名前 ● $node.sort_array 子ノードのソート順 ● $node.object ノードの元オブジェクト
34.
$node 注意
● 「 . 」で結ぶサブ変数はデフォルトで生成されてい ない物もあります、必要な時にモジュールが生成し ます ● そのために「 .children 」のような変数はデータベー スにリクエストを増やします ● 「 .children[0].children[1].children 」のような書き方 はパフォーマンスに影響をします ● そういう場合はピンポイントで fetch したほうがパ フォーマンスあがります
35.
一般オペレーター
36.
URL 関係
● ezurl() url を整理する(サイトアクセスなど) <a href={$node.url_alias|ezurl()}> リンク </a> ● ezimage() 画像の URL を生成する(デザインの images フォルダーを利用する) <img src={'image.jpg'|ezimage()} /> ● ezdesign() デザインリソースの URL を生成する(デザ インフォルダーを利用する) @import url({'stylesheets/style.css'|ezdesign('no')})
37.
テンプレートブロック
38.
if – elseif – else
{if eq($word, ' しりとり ')} <p> りんご </p> {elseif eq($word,' ゴリラ ')} <p> ラムネ </p> {else} <p> 。。。 </p> {/if}
39.
ループ
● ループ形式は複数ありますが、ほとんどのケースに使われるのは 「 foreach 」です ● 配列・ハッシュに使えます ● 基本の書き方は {foreach $array as $item } <p>{$item}</p> {/foreach} ● キー付ける事はできます(配列の場合は位置の数字となる) {foreach $array as $key => $item } <p>{$key} {$item}</p> {/foreach}
40.
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}
41.
foreach – 特別キーワード
● {foreach} ループ内で特別なキーワードが使えます ● {delimiter}{/delimiter} ループの間に入れるブロク {delimiter}<br />{delimiter} ● {skip} 次のイテレーションに行きます、 {delimiter} を利用しない ● {continue} 次のイテレーションに行きます、 {delimiter} を利用する ● {breaks} 次のイテレーションを実行せず、 {foreach} から出る
42.
テンプレートファンクション
43.
fetch ファンクション
● fetch ファンクションでモデルにクエリーを送れま す ● fetch ファンクションはモジュール毎に複数設定さ れています ● 公式ドキュメンテーションにドキュメントされてい ます ● 書き方は {fetch(' モジュール ',' ファンクション ', [ パラメー ター ])}
44.
代表的な fetch ファンクション
● ほとんどのプロジェクトでは 3 つの fetch で対 応できます ● 一つのノードをフェッチ fetch('content', 'node', hash( 'node_id', 2 )) ● 複数のノードをフェッチ fetch('content','list', hash('parent_node_id', 2)) ● 現ユーザをフェッチ fetch('user','current_user')
45.
fetch – content, node
● 単独のノードをフェッチする ● ノードオブジェクト [eZContentObjectTreeNode] を戻す ● 書き方 {def $a = fetch('content', 'node', hash( 'node_id', ノード ID ))} ● 追加パラメーター ● 'languagecode' 特定な言語でコンテンツをフェチする
46.
fetch – content, list
● 複数のノードをフェッチする ● ノードオブジェクト [eZContentObjectTreeNode] の配列を戻す ● 書き方 {def $a = fetch('content', 'list', hash( 'parent_node_id', ノード ID ))} ● 代表的な追加パラメーター ● 'sort_by' ソート順の設定 [ 配列 ] ● 'limit' 戻すノードの数 [ 数字 ] ● 'offset' 結果のスタート位置 [ 数字 ] ● 'class_filter_type' クラス絞り込みロジック ['include'|'exclude'] ● 'class_filter_array' クラスの絞り込み [ クラスの配列 ] ● 'attribute_filter' 属性の値で結果を絞り込む
47.
fetch – content, list トリック
● 簡単なページネーション実装 {def $a = fetch('content', 'list', hash( 'parent_node_id', ノード ID, 'offset', mul($page_nb|dec(), $items_per_page), 'limit', $items_per_page ))} ● フォルダークラスだけのノードをフェッチ {def $a = fetch('content', 'list', hash( 'parent_node_id', ノード ID, 'class_filter_type', 'include', 'class_filter_array', array('folder') ))}
48.
fetch – user, current_user
● ログインユーザをフェッチします ● [eZUser] を戻す ● 書き方 {def $user = fetch('user', 'current_user')} ● {$user.contentobject.main_node} でユーザの eZContentObjectTreeNode を選択することがで きます
49.
テンプレート呼び出し
ファンクション
50.
テンプレート呼び出し
ファンクション ● テンプレート内からテンプレートオーバーライ ドルールに従って、テンプレートを呼び出す事 を可能にするファンクション ● 最も使われますのは下記の二つ ● ノードテンプレートを呼び出す {node_view_gui} ● 属性テンプレートを呼び出す {attribute_view_gui}
51.
node_view_gui
● ノードをオーバーライドルールにマッチしたテンプレートで表示する ● パラメター ● content_node 表示したいノードオブジェクト [eZContentObjectTreeNode] content_node = $some_node ● view ノードを表示するように利用するビューモード [ 文字列 ] view = 'full' ● 独自パラメーター (任意) my_param = ' あいうえお ' ● 例 {node_view_gui content_node = $some_node view = full} {node_view_gui content_node = $some_node view = full my_param = ' あいうえお '}
52.
node_view_gui
● 例、現ノードの子ノードをビューモードで表示 する {foreach $node.children as $children} {node_view_gui content_node=$children view='line'} {/foreach}
53.
attribute_view_gui
● 属性をオーバーライドルールにマッチしたテンプレートで 表示する ● パラメター ● attribute 表示したい属性オブジェクト [eZContentObjectAttribute] attribute = $node.data_map.title ● 独自パラメーター (任意) my_param = ' あいうえお ' ● 例 {attribute_view_gui attribute = $node.data_map.image} {attribute_view_gui attribute = $node.data_map.image image_class='thumbnail'}
54.
attribute_view_gui
● 例、現ノードの属性を全て適切なテンプレート で表示する {foreach $node.data_map as $attribute} {attribute_view_gui attribute = $attribute} {/foreach}
55.
テンプレートファンクション
56.
デバッグ
● 配列、ハッシュやオブジェクトの中身を確認したい場合は attribute() オペレーターを利用します ● パラメーターを2渡す事ができます ● attribute( 値フラグ , 階層 ) ● 「値フラグ」を 'show' にすると値が表示されます ● 「階層」はどの階層まで表示するのを決める、デ フォルトは2、1にするのはわかりやすい ● おすすめな使い方は {$var|attribute('show',1)}
57.
カスタムオペレーター
58.
カスタムオペレーター
● テンプレートに多数のロジックを入れると次の問 題が発生します ● デバッグは複雑になります ● パーフォーマンスに影響が出ます ● さらにテンプレート言語でできる事は限られてい ます ● 一つの結果を出すために5行以上のロジックを書 くと、カスタムオペレーターを書いたをがおすす めです
59.
カスタムオペレーター
● カスタムオペーレーターはエクステンションに入る ● PHP ベース ● 管理画面の「システム設定」「アプリ開発ツール」 で PHP ファイルのテンプレートを作れます ● PHP では直接 eZ Publish の API を利用できます http://pubsvn.ez.no/doxygen/trunk/html/index.html ● さらに、 eZComponents の API も使えます。グラ フの生成やメールの送信・受信にお勧めです。 http://ezcomponents.org/docs
60.
ドキュメンテーション
● テンプレート言語のメインなドキュメンテーションはリファレンスで確 認できます http://doc.ez.no/eZPublish/Technicalmanual/4.x/Reference/ ● オペーレーター http://doc.ez.no/eZPublish/Technicalmanual/4.x/Reference/Templateope rators ● ファンクション http://doc.ez.no/eZPublish/Technicalmanual/4.x/Reference/Templatefun ctions ● ブロック http://doc.ez.no/eZPublish/Technicalmanual/4.x/Reference/Templatecont rolstructures ● オブジェクトタイプ http://doc.ez.no/eZPublish/Technicalmanual/4.x/Reference/Objects ● フェッチファンクション http://doc.ez.no/eZPublish/Technicalmanual/4.x/Reference/Objects
61.
質問タイム
Télécharger maintenant