あまり知られていない(?)Smartyフィルターの利用法(4)

Date 2006-07-12 05:03:13 | Category: XOOPS

in englishin japanese
一応最終回。
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