本サイトtaobao.jpはsmartyを使って開発された。Smarty初心者のため、勉強しながら開発した。
もちろん開発の際、さまざまな問題をあって、いろいろ調べて何とか乗り越えるようにした。いい経験だと思う。
その中の
タオバオ掲示板を開発した時、ユーザ記事中のURLを自動的にリンクされることも考えました。インタネットで沢山の資料があり、その中のsmartyのpluginを使ってオートリンクされる方法は一番良いと思う。
function smarty_modifier_auto_link($string, $type = 'url', $text = 'URL')
{
$regstr = "https?://[a-zA-Z0-9.-]{2,}(:[0-9]+)?(/[_.!~*a-zA-Z0-9;/?:@&=+$,%#-]+)?/?";
switch ($type) {
case 'url':
return ereg_replace($regstr,"<a href=\"\\0\" target=\"_blank\" title=\"\\0\">\\0</a>", $string);
break;
case 'text':
return ereg_replace($regstr,"[ <a href=\"\\0\" target=\"_blank\" title=\"\\0\">{$text}</a> ]", $string);
break;
default:
return $string;
}
}
コーディングの知識があれば、いくらでもカスタマイズできる。
例えば、auto linkさせたいけど、直接のリンクを附きたくない場合もありますね。自分のサイトのあるリダイレクトページを通ってURL先に飛ばせるようにします。
先ほど、カスタマイズしたのauto linkプラグインを作成した、下記の通りです。
function smarty_modifier_auto_link($string, $type = 'url', $text = 'URL')
{
$regstr = "https?://[a-zA-Z0-9.-]{2,}(:[0-9]+)?(/[_.!~*a-zA-Z0-9;/?:@&=+$,%#-]+)?/?";
$rd = "http://taobao.jp/rd.php";
switch ($type) {
case 'url':
return ereg_replace($regstr,"<a href=\"".$rd."?url=\\0\" target=\"_blank\" title=\"\\0\">\\0</a>", $string);
break;
case 'text':
return ereg_replace($regstr,"[ <a href=\"".$rd."?url=\\0\" target=\"_blank\" title=\"\\0\">{$text}</a> ]", $string);
break;
default:
return $string;
}
}
それでは、auto linkの使い方も紹介いたします。
上述のソースをmodifier.auto_link.phpとして保存し、Smartyフォルダ配下のpluginsに入れる。
使い方はこの様に、PHP側で
$smarty->assign('bbs_text, 'タオバオ記事内容です、 http://taobao.jp/');
ってな感じにassignして、テンプレート側で
{$bbs_text|auto_link}
とすることで、
タオバオ記事内容です、 http://taobao.jp/
の様に表示される。また、オートリンクのtextもカスタマイズしたい方もいらっしゃっていると思う。
こんな感じで、
{$bbs_text|auto_link:"text":"タオバオへようこそ!"}
とすると、
タオバオ記事内容です、 タオバオへようこそ!
以上、メモー
♪ 当記事がお役に立ちましたらシェアして頂ければ嬉しいです。
コメントする