freoをSmarty3に対応させる

龍の棲む場所さんの「freo TIPS」内「Smartyを2.x系から3.x系にバージョンアップするときのTIPS」に従ってSmarty3を導入し、テンプレートファイルの書き換えをします。詳しくは龍の棲む場所さんを熟読してください。以下は自分用覚書。

Smarty3の入手

PHP Template Engine | Smarty

  1. freo/libs/smartyフォルダをバックアップ
  2. smarty公式で入手したzipの中のlibsフォルダをsmartyにリネームし、freoのlibs/smartyフォルダと置き換え
  3. バックアップしたSmarty2.x系のフォルダ/pluginsフォルダの中身をfreoのlibs/smarty/pluginsフォルダにコピー(同名ファイルは上書き保存しないこと)

Smarty3のfreoへの組み込み

いじるファイルはバックアップを取っておくこと。

  • libs/freo/common.php
  • libs/freo/freo.php

龍の棲む場所さん「Smarty3.x系をfreo本体に組み込む」に従って書き換え

テンプレートをSmarty3の記述に書き換え

テンプレートフォルダごと正規表現使える置換ソフトで一括置換かけるのが楽。以下コピペ用。

  1. \{(foreach .+)\|smarty:nodefaults (.+?)\}

    {$1 nofilter $2}
  2. \{(if .+)\|smarty:nodefaults(\))?\}

    {$1$2}
  3. \{([^\{]+)\|smarty:nodefaults(.+?)?\}(.+?)\{([^\{]+)\|smarty:nodefaults(.+?)?\}

    {$1$2 nofilter}$3{$4$5 nofilter}
  4. \{([^\{]+)\|smarty:nodefaults(.+?)?\}

    {$1$2 nofilter}
  5. \{(\$(comment|trackback)\.text)(\|nl2p\|autolink)\}

    {$1|escape$3 nofilter}
  6. \{\$smarty\.get\.date\|cat:'0101000000'\|date_format:'%Y年'\}

    {$smarty.get.date|cat:'0101000000'|date_format:'%Y'}年
  7. \{\$smarty\.get\.date\|cat:'01000000'\|date_format:'%Y年%m月'\}

    {$smarty.get.date|cat:'01000000'|date_format:'%Y'}年{$smarty.get.date|cat:'01000000'|date_format:'%m'}月
  8. \{\$smarty\.get\.date\|cat:'000000'\|date_format:'%Y年%m月%d日'\}

    {$smarty.get.date|cat:'000000'|date_format:'%Y'}年{$smarty.get.date|cat:'000000'|date_format:'%m'}月{$smarty.get.date|cat:'000000'|date_format:'%d'}日
  9. \{([^\{]+)(\/1024)\|intval\}

    {math equation="f$2" f=$1 assign="size"}{$size|string_format:"%d"}
  10. \{(\/)?literal\}

    空欄

龍の棲む場所さんで上記の置換を施しSmarty3に対応したfreo初期セット用テンプレートファイル群がダウンロードできます。