header image

Ryuzeeの他サイト

mixi Twitter Twitter

Categories

携帯対応

QRコード

RING

人気ブログランキング



新着記事

追記。うまくいかない場合は
・php.iniのmbstring.language=japaneseの行を有効にすること
・もしくはソース先頭でmb_language(’Japanese’);を挿入すること。
上記が完了したら、template_cディレクトリを空にして画面に再アクセスする。

Smartyにおいては、テンプレートのコンパイル前の処理に割り込むようなユーザ定義関数の作成が可能なので、以下のような変換のための関数をまず作成する。
これをpre-filterという。

function convert_encoding_to_euc_jp
($template_source, &$smart) {
  if (function_exists("mb_convert_encoding")) {
    $enc = mb_detect_encoding($template_source, "auto");
    if ($enc != "EUC-JP") {
      return mb_convert_encoding(
        $template_source, "EUC-JP", $enc);
    }
  }
  return $template_source;
}

このような関数を作っておき、Smartyを呼び出している側のソースにおいて、

$smarty->register_prefilter("convert_encoding_to_euc_jp");

と呼び出す。

また一方で、post-filterといって、画面がコンパイルされた後の処理で割り込みをかけることも可能で、その場合は、

$smarty->register_postfilter("関数名");

とすれば良い。これは例えば、iモードサイトなどのように出力がShift_JISでなければならないような場合、画面出力前にShift_JISに変換してあげるために利用する。

pre-filterとpost-filterは同時に動作させることが可能で、登録した順に上から実行される。

※サンプルソースはこちら

Ratings

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading ... Loading ...

“SmartyのテンプレートをShift_JISで作成する”へのコメントはありません。

コメントはありません。是非コメントしてください。

コメントする

XHTML: 以下のタグが利用可能です: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Trackback

 

add to hatena hatena.comment (0) add to del.icio.us (0) add to livedoor.clip (0) add to Yahoo!Bookmark (0) Total: 0