こんにちは、nojimageです。この記事は CakePHP Advent Calendar 2011 17日目の記事として書いています。前日は @BiMihoujyunさんの「BMB » CakePHP2から追加されたCakeEmailをおいしく頂く。」というエントリーでした。CakePHP2.0ではメール周りに関してかなり改善されていますので、ぜひ先の記事を参考にして試してみてください。
さて、今日はCakePHPで表示部分を作るテンプレートエンジンのお話をします。
CakePHPでは通常、生のPHPを用いて表示のためのテンプレートを記述します。
効率よくテンプレートを書くためのヘルパーやエレメントと呼ばれる機能があるため、定型の表示処理など比較的簡単に書くことができます。
また、キャッシュ機構もCakePHPで持っているため、Smartyなどのテンプレートエンジンを利用する必要はありません。
が、デザイナー(HTMLコーダー)さんとの協業や学習コストなどの面から、既に勝手知ったるSmartyなどのテンプレートエンジンを利用したい場合があります。
そこで、今日はCakePHPで利用できるテンプレートエンジンをまとめてご紹介します。
Smarty – CakeSmarty
みんなだいすき、Smarty。なんかバージョン3からテンプレートの継承ができるみたいですがよく判りません。
歴史的な理由により、個人的に使うことを避けているテンプレートエンジンですね。はい。
追記(2011/12/19):
@basukeさんがCakePHP1.3向けのSmartyプラグインを書かれています。
参考記事:
CakePHP用のSmartyプラグイン – @basuke の日記
Smarty3.0系を同梱していますしCakePHPのテーマ機能も使えるので、Smartyを利用する場合はこのプラグインを使うのがよいでしょう。ただし、CakePHP2.0への対応予定はしばらくないとのこと。
CakePHP1.2向けにはSmartyViewプラグインというものがあります。
インストール方法: https://github.com/kaz29/smartyview/blob/master/INSTALL.ja.txt
このプラグイン、CakePHP1.2の頃に開発されたものなので、1.3系、2.0系では正常に動作する保証はありません。たぶん需要はあるので、2.0対応してみるといいんじゃないかな。
Twig – TwigView
Symfony2で採用されているテンプレートエンジンですね。中括弧を使うあたりSmartyと似ています。
こちらもCakePHP向けプラグインがあります。
- CakePHP1.3向け: m3nt0r/cakephp-twig-view – GitHub
- CakePHP2.0向け: predominant/TwigView – GitHub
Twigテンプレート内で、CakePHPのヘルパーも使えるのでいい感じです。
MTML – MTCake
MTML(Movable Type Markup Language)はかの有名ブログエンジンのMovable Typeで使われているテンプレート記述言語。いわゆるMTタグですね。
MTCakeプラグインを使えば、CakePHPのテンプレートをMTタグを使って書けるようになります。
解説記事:
CakePHPのViewでMTタグを利用可能にするMTCake | Power CMS for MT ブログ
MTのテンプレートを書ける人なら取っつきやすくていいですね。なお、MTCakeは、CakePHP1.3向けとなります。
PHPTAL – CakePHP-TALTAL
PHPTALは割と古くからあるのになじみの薄い、XHTMLベースのテンプレートエンジンです。シンプルな構文と、テンプレートをそのままブラウザで表示しても崩さずに表示できるところが売りです。
CakePHP向けのプラグイン化は私がやってたりしますよ。
- CakePHP1.3向け: nojimage/CakePHP-TALTAL – GitHub
- CakePHP2.0向け: nojimage/CakePHP-TALTAL at 2.0 – GitHub
参考記事:
PHPTAL with CakePHP デザイナー向けCakePHP勉強会LT発表資料 @ php-tips
既にコーディングされたHTMLがある場合に使いやすいテンプレートエンジンですね。
以上、ざっくりとCakePHPで使えるテンプレートエンジン4種のご紹介でした。
ちなみに、ひとつのアプリケーションで複数のテンプレートエンジンを使い分けることだってできます。例えば、フロントエンド側はデザイナーさんから上がってきたHTMLを使うのでPHPTAL、バックエンド側はプログラマがゴリゴリ書くので普通のctpとか。
プロジェクトの人員や内容に応じてテンプレートエンジンを使い分け、開発を効率よく進めることができるといいですね。
さて、明日の担当は @junichi_11 さんです。ブログはこちらですね。
NetBeans用のCakePHPプラグインを改良されている方ですが、どんな記事を書かれるんでしょう。楽しみです。:D
Pingback: CakePHP Advent Calendar 2011 18日目 NetBeans環境でのCakePHP | 管理人の日記~つらつらなるままに~
Pingback: 今更だけどCakePHP Advent Calendar 2011を読んでいる | UnTrois