[Smarty]デフォルトテンプレートパスを指定

ずいぶん久々のメモ。
Smarty使用時にphpファイルとtplファイルを同じディレクトリ構成にしておいて、下記を実装するための方法。
※もっと一般的な別の方法があるのかもしれません。

  1. デフォルト→同じディレクトリのtplファイルを参照
  2. 個別指定→指定tplファイル参照

ディレクトリ構成(/news/というディレクトリを想定)

  1. /smarty/template/news/*.tpl
  2. /html/news/*.php

MySmarty.class.php

require_once(”Smarty.class.php”);

class MySmarty extends Smarty {
public function __construct() {
$this -> Smarty();
$this -> template_dir = “/path/smarty/templates/”;
$this -> compile_dir = “/path/smarty/templates_c/”;
$this -> config_dir = “/path/smarty/configs/”;
$this -> cache_dir = “/path/smarty/cache/”;
}
}

// default template path
$tpl = preg_replace( “/^\/(.*).php$/”, “$1.tpl”, $_SERVER[’PHP_SELF’] );

/news/index.php から /news/index.tpl

require_once( “/path/smarty/libs/MySmarty.class.php” );
$smarty = new MySmarty();
$smarty -> assign( array(
……..
tpl => $tpl
) );
$smarty -> display( “***.tpl” );

/news/index.php から /news/custom.tpl

require_once( “/path/smarty/libs/MySmarty.class.php” );
$smarty = new MySmarty();
$tpl = “news/custom.tpl”;
$smarty -> assign( array(
……..
tpl => $tpl
) );
$smarty -> display( “***.tpl” );

特に大した話でもありませんが、自分用のメモ。


Tags:

Popularity: 18%