あまり知られていない(?)Smartyフィルターの利用法(4)
Date
2006-07-12 05:03:13 |
Category:
XOOPS
一応最終回。
Modifierに使える関数は、PHPのビルトイン関数だけではありません。function_exists()で確認しているだけなので、ユーザ定義関数であってももちろん利用できます。
ただし、Smartyがコンパイルを行う時と、実際にレンダリングをする時の両方について、その関数が定義されている必要がある点に注意が必要です。
後者で問題になるようなら、単なる設計ミスですが、前者が意外と困難です。tplsadminなどでテンプレートを編集する場合、該当モジュールが読み込まれているわけではないので、モジュールが定義した関数を利用する、というのはかなり難しいのです。(必要に応じて、altsysやtplsadminが読み込んであげる、なんてのも手なんでしょうが)
mainfile.php あたりに1行追加して読み込む、なんて手もありますが、それくらいなら、素直にプラグインを作ってしまった方が良いでしょう。
逆に、include/functions.php 内に定義された関数であれば、コンパイル時にも読み込まれていることが確実であるため、安心して利用できます。マルチバイト言語圏でもっとも有効なのは、xoops_substr()でしょうか。
<{$news.title|xoops_substr:"0":"20"}>
これならマルチバイトの境界も認識し、... の処理も加わるので、mb_strcut()よりも使いやすいでしょう。
以上、全4回に渡った連載でしたが、これら関数Modifierの利用法を身につけることで、「ちょっとだけテンプレートをいじれば、すぐに思い通りの出力を得られる」、という究極のカスタマイズ職人に一歩近づけることでしょう。
You can read more news at PEAK XOOPS.
http://xoops.peak.ne.jp
The URL for this story is:
http://xoops.peak.ne.jp/md/news/index.php?page=article&storyid=135