0

smaryのプラグイン作成

smartyのプラグインもMTやXOOPSのようなものを想像しててあまり考えてなかったんですが、先日初めて触って便利さ&簡単さに気付きました。
ほしかったプラグインが掲示板のコメント等でhttp://やhttps://ではじまる文字列があれば自動でaタグ(リンク)をはってくれるというやつです。しかも他のタグはちゃんとエスケープさせて。
PHPのロジック部分でやってしまうとescape:”html”とかぶってうまく処理できずに<a href=http://yahoo.com>http://yahoo.com</a>と表示されていましたが、自作プラグインでなんとか解決。
まあ、処理の順番の問題といえばそれまでだけど。

まず、smartyディレクトリの中にlibs/pluginsってディレクトリがあるのでそこに命名規則にそったファイル名でプラグインを保存しておきます。

今回つくったのはnl2brやmailto等と同じ修正子プラグインmodifier.autourl.phpです。
この下記をmodifier.autourl.phpというファイル名でプラグインディレクトリに保存します。
<?
function smarty_modifier_autourl($string)
{
return ereg_replace("(https?|ftp)(://[[:alnum:]\+\$\;\?\.%,!#~*/:@&=_-]+)","<a href=\"\\1\\2\" target=_blank>\\1\\2</a>",$string);
}
?>

で、呼び出したいテンプレートで{$com|autourl}と記述してやればOK.
$comに含まれてるhttp://かhttps://から始まるものは自動リンクされます。modifier.****.php
function smarty_****_autourlこんな感じで****を修正子を合わせるだけでいいです。
もっとはじめに気付いておけばよかった。

大阪のWEB屋です。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です