テンプレートまわり

用件定義

テンプレートを携帯で振り分け出力したい
テンプレートがなかった場合Warningを返すのはいやなのでなんとかしたい

基本設計

テンプレートがなかった場合表示するデフォルトテンプレートを設定する
携帯テンプレートは、以下の種類のテンプレートを準備し、存在しなかったら下位のテンプレートを利用する

  1. 端末別
  2. 設定Type別
  3. キャリア別
  4. 共通

詳細設計

デフォルトテンプレートは「_error.tpl」とする
携帯用テンプレートは以下のディレクトリをベースとする

  • /project/template/ja/mobile

SH900iでindex.tplを表示しようとした場合以下の順番で検索する

  1. /project/template/ja/mobile/docomo/foma/sh901i/index.tpl
  2. /project/template/ja/mobile/docomo/foma/index.tpl
  3. /project/template/ja/mobile/docomo/index.tpl
  4. /project/template/ja/mobile/index.tpl
  5. /project/template/ja/mobile/_error.tpl

実装

Ethna_Renderer_Smartyのpreform()は第一引数に絶対パス、または相対パスのテンプレートファイルパスを指定してあげればよい
Ethna_ViewClassのforwardでpreform($this->forward_path)と実行されているので、preforwardをオーバーライドし$this->forward_pathを変更する
うまくいかないと思ったらジェネレータのadd-viewでpreforwardをオーバーライドしててショック

そんな感じでできました

今後

ethnaジェネレータでテンプレート作成できるようにしたい