ホーム » ブログ » Smartyでurlのauto linkプラグインを作成しました
このエントリーをはてなブックマークに追加
@2012/08/09
本サイト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":"タオバオへようこそ!"} 
とすると、 タオバオ記事内容です、 タオバオへようこそ! 以上、メモー

♪ 当記事がお役に立ちましたらシェアして頂ければ嬉しいです。
0人
このエントリーをはてなブックマークに追加


◎zanmai.netサイト記事の転載・複製(コピー)は、zanmai.netへのリンクであることを明記してください!
◎本記事URL: http://www.zanmai.net/blog/data/62.html

コメント@2012年09月04日
Gravatar-グローバルに認識されるアバター_zanmai.net
ほんとうにいい勉強になりました

お名前:

 

EMAIL:

 

URL:

 

認証コード:

zanmai.net-safecode

 


※会員の方は認証コードを要らないから、新規登録をオススメ!

アーカイブ @zanmai.net
check