いまやECサイトでも広く利用されているツール「Twitter」をカラーミーショップの「商品詳細ページ」につけようという話題。
Twitterをとりあげた前回記事では「Twitterでつぶやく」とタイトルにしていましたが、Tweet(つぶやく)という言葉も前回から半年経過して、ずいぶん一般化されてきました。
今回のタイトルは「ツイートする 2」として、前回記事を見直そうと思います。
前回記事では以下ページを参照してツイートボタンを実装していましたが、
「Color Me Shop! pro - 助け合い掲示板」をみると、全角文字が文字化けするそうです。現在、ライブラリページがデッドリンクになっています
Escape Codec Library:ecl.jp のライブラリで、EUC-JP→UTF-8変換が必要とのこと。
(「EUC-JP→UTF-8変換」が必要な理由は、2バイト文字(かんたんに言い換えると日本語)が文字化けするんですね)。
現在は、こんな風にすると、OKです。
下記コードの内容は「商品名 URL」をTweetするリンクです。
<script type="text/javascript">以前使用していたライブラリの代わりに、encodeURIComponent()というJavaScriptの関数を利用しています(こんな関数、はじめて知った)。
<!--
document.write('<a href="http://twitter.com/home?status=' + encodeURIComponent("<{$product.name|strip_tags}>"+' '+location.href) + '">Tweet <img src="http://twitter-badges.s3.amazonaws.com/t_mini-b.png" alt="Tweet" style="vertical-align:middle;"></a>');
// -->
</script>
興味のあるかたは「URIとは」や「encodeURIComponent()」を検索して調べていただくとして、実装するには上記コードを該当箇所に入れれば、リンクが作成されます。
document.writeでなくても良いですし、JavaScriptのonclick イベントを使用しているページもありました。よく分からない場合は、上記コードのコピペで問題なく動作すると思います。
オレンジ部分は公式からボタンを借りています。
今回のポイントは、
・<{$product.name|strip_tags}> を””で括る(私を含めたSmarty初心者がひっかかるところ)
・strip_tags(Smartyの機能)でタグを除去する
独自タグを””で括るについては、 以前の記事「独自タグをJavaScriptの関数に渡す」を参照してください。
strip_tagsでタグ除去については、正規表現を取り扱った以前の記事「Smartyサンプル 1」を参照してください。
<{$product.name}> には、Newやオススメ画像など先頭につくことがあります(下記画像は、商品登録ページ内の一部抜粋)。
というのが復習も兼ねた、前フリ。
現在は、Twitter公式サイトでツイートボタンをかんたんに作成してくれます。
「ハブろぐ - 公式Tweet Buttonがリリースされてた」では画像付きで説明されていますのでご参考に。
コードを直接いじる方には「Paroday - Twitter 公式ツイートボタンの設置方法」 (こまかい設定が分かりやすかったです)。
Twitter公式サイトでボタンを作成する場合は、デザイン(画像など)を用意する必要もなく、文字化けもなく、短縮URLまで作ってくれます。シンプル&スムースにして完璧な機能。
ツイートボタンをよりかんたんに設置できる仕組みになっています。
カラーミーショップにも、そのままコピペすれば設置できます。
「Twitter公式サイト - プロフィールウィジェットをカスタマイズする」では、ツイートの表示をかんたんに行える機能がついている。これを利用すればショップページに表示させることもできる。
と、そんな記事を書いていたら、もっとかんたんにつくようになっていました。機能も公式仕様。
オンラインマニュアル - 【カスタム】追加タグ
Twitter以外にも、「いいね!」など流行りのボタンが多数追加されました。
<{twitter_tweet}>とするだけで、ツイートボタンを押すとページタイトルとページURLを自動で貼ってくれます。特にいじらなくても使えますが、勉強用にほとんど意味のないサンプルを作ってみました。
商品名にはHTMLタグがつくことがあるので、strip_tagsでタグ除去。商品詳細ページURLは独自タグがないので商品IDからつくる。「cat:」で文字列結合。
<{twitter_tweet text=$product.name|strip_tags url=$home_url|cat:"?pid="|cat:$product.id}>
【関連記事】
・独自タグをJavaScriptの関数に渡す
・Smartyサンプル 1
【追記】
独自タグの記事を追加