XOOPSやWordPressなど、他人が作ったデザインに対してもう少し「こうしたい!」と思うことが多々あります。Smartyのテーマで作られたデザインであれば、Smartyをちょっと変更したり、CSSを変更したりして見た目は変えられます。

ただ、やりたいことが動的な項目の場合、どうしてもプログラムを組む必要があります。システムを改変するより、Smartyにプログラムをちょっと書いて対応させてみましょう。

Smartyとは
Smartyで使用するテンプレートでは、単に値をはめ込むだけでなく、if文による条件分岐やforeachによるループ処理など、必要最低限の制御構造や組み込み関数が利用可能です。もちろんこうした機能の利用は必須ではなく、HTMLテキストと単純な変数のみでテンプレートをまとめることもできます。

 またSmartyは動作速度の面でも秀でています。最初にリクエストが発生した際に、テンプレートファイルを実行可能なPHPスクリプトにコンパイルし、その後のリクエストではコンパイルされたPHPスクリプトを再利用します。テンプレートに変更が加えられたときにのみコンパイルを再実行するなど効率面でも優れています。

 ほかにも、キャッシュ機能を搭載するなど、PHP本来のパフォーマンスを損なうことなく、ロジックとデザインを分離することができます。

XOOPSを例にすると、theme.htmlに次のように直接PHPを記述できます。

<{php}> ~~ <{/php}>


例1) XOOPSの登録者数をテーマ内で表示させる

登録者数:
<{php}>
        $member_handler =&xoops_gethandler('member');
        echo $member_handler->getUserCount(new Criteria('level', 0, '>'));
<{/php}>
名

※上記は取り付けて動くことだけ確認しましょう?中身はXOOPSの知識が必要であり、PHPの練習には向きません。

例2)サーバ内のテキストファイルを表示する。

<{php}>
$ff=XOOPS_ROOT_PATH.'ファイル名';
$data = file($ff);
for($i=0; $i<count($data); $i++) {
echo $data[$i];
}
<{/php}>

PHPマスター関連記事