ラベル Twitter の投稿を表示しています。 すべての投稿を表示
ラベル Twitter の投稿を表示しています。 すべての投稿を表示

2015年8月20日

Twitterの投稿を「ショップからのお知らせ」にする - Twitter API編

ネットニュースを眺めていると、こんな記事をみつけました。
「minne」に出品された吉幾三さん手作りの11万円の壺、ついに売れる - ITmedia ニュース

TV CMもバンバンやっているのでご存知の方も多いと思いますが、minneとは、クリエイターにWeb上のギャラリーを貸して、ハンドメイド作品の販売を仲介するサイトです。
ハンドメイドにターゲットを絞っているところが、面白いなぁと感心します。
上の記事も、プロモーションの一環だったりしてね。




0.「ショップからのお知らせ」はどこで書く?


カラーミーショップ上の多くのお店では、お客様への告知として「お知らせ/ニュース/新着情報」などのスペースを設けています。

無料テンプレートを見ると、管理画面の「ショップ作成>ショップ情報設定」の「お知らせ」を使っています。これが一般的だと思います(HTMLタグも入りますし、枠内の文字数制限も緩そうにみえます)。

その他には、ショップ・ブログのRSSからタイトルを取得して表示させているショップもあります。
Twitterのウィジェットをサイドバーに貼っているショップも多いですよね。

Twitterのウィジェットで機能十分ですが、サイトデザインを優先してページにしっくりくる感じで埋め込みたい場合などは、Twitter APIを試してみるのも良いかもしれません。

Twitterには、カラーミーショップ同様に、APIが用意されています。
利用するための手順も、だいたい似たようなものなので、カラミーショップAPIを使ったことがあれば、それほど理解に困らないと思います。
Twitter APIを利用するための手順は、親切丁寧に解説が書かれているサイトがありましたので、下記リンクをご参考にどうぞ。

【参考】PHPでOAuth認証して自分のつぶやきを表示する [Twitter API 1.1 対応版] | webOpixel


カラーミーいじりたおし的には、すぐに試せるPHPソースコードとカラーミーショップ側のコードを置いておきます。

1. コード

1.1 twitter.php

<?php
require_once("twitteroauth.php");

$consumerKey = "xxxxxxxxxxx";
$consumerSecret = "xxxxxxxxxxx";
$accessToken = "xxxxxxxxxxx";
$accessTokenSecret = "xxxxxxxxxxx";

$twObj = new TwitterOAuth($consumerKey,$consumerSecret,$accessToken,$accessTokenSecret);
$req = $twObj->OAuthRequest("https://api.twitter.com/1.1/statuses/user_timeline.json", "GET", array("count"=>"5"));
$tw_arr = json_decode($req);
$str ="";
if (isset($tw_arr)) {
    foreach ($tw_arr as $key => $val) {
        $str = $str . '<b>' . date('Y/m/d H:i', strtotime($tw_arr[$key]->created_at)) . '</b>';
        $str = $str . '<br />';
        $str = $str . preg_replace("/(https?|ftp|news)(:\/\/[[:alnum:]\+\$\;\?\.%,!#~*\/:@&=_-]+)/","<a href=\"\\1\\2\">\\1\\2</a>",$tw_arr[$key]->text);
        $str = $str . '<br />';
        $str = $str . '<hr />';
    }
} else {
    $str = 'ニュースはありません。';
}
$str = str_replace(array("\r\n","\r","\n"), '', nl2br($str));

//出力用配列にセット
$output = array(
    'str' => $str
);

header("Content-Type: text/javascript; charset=utf-8");
echo $_GET['callback'] . '(' . json_encode($output). ')';

1.2 カラーミーショップ側の HTML+jQuery

<div id="header_list">読み込み中...</div>
<script type="text/javascript">
    $.getJSONP = function(url,callback,param) {
        return $.ajax({
            url:    url,
            dataType:"jsonp",
            success:callback
        });
    }
    $.getJSONP("http://www.hogehoge.com/twitter.php", onDataHandler)
    function onDataHandler(response) {
        $("#header_list").html(response.str);
    }
</script>

2. 簡単な説明

PHPのソースコードは、変なところに改行が入っていますので、ご注意を。
created_atが投稿日時、textがつぶやきの内容。
上述の参考サイトに詳しく解説がされています。まずはそちらからどうぞ。

2011年3月4日

ツイートする 2

前フリが長いので、お急ぎの方はこちら。

いまや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">
<!--
  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>
以前使用していたライブラリの代わりに、encodeURIComponent()というJavaScriptの関数を利用しています(こんな関数、はじめて知った)。
興味のあるかたは「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

【追記】
独自タグの記事を追加

2010年8月14日

Twitterでつぶやく

ありとあらゆる方面で流行中のTwitterですが、カラーミーショップ!プロを使っているクライアント様から、つぶやきボタンをつけてほしいと依頼がありました。
Twitter機能自体をそれほど詳しくない(そもそもほとんど使ったことがなかった)ので、どんな使われ方がされて、どんなことができるか要調査が必要かもしれません。もうしばらくはオンラインショップでも重要なツールとして使われるかもしれませんので。
ではさっそく、サンプルから。
<a href="http://twitter.com/home?status=http://www.hogehoge.com/?pid=<{$product.id}>" target="_blank"><img src="http://twitter-badges.s3.amazonaws.com/t_mini-b.png" alt="Twitterでつぶやく"></a>
Twitterボタンは、サンプルとして公式から参照しています。

現在閲覧中の商品ページのURLを貼ればOKという依頼でしたので、これで終了。さほど大層なものではありません。product.idの部分は、JavaScriptのlocation.hrefを使用しても良いかもしれません。
ただ、 これにプラスして、商品名もつけてほしいといわれると状況は変わるようです。

「Color Me Shop! pro - 助け合い掲示板」をみると、全角文字が文字化けするそうです。
 Escape Codec Library:ecl.jp のライブラリで、EUC-JP→UTF-8変換が必要とのこと。

変換なしで試してみると、「Invalid Unicode value in one or more parameters」とエラーメッセージ。Webページのソースをのぞいてみると、たしかに、TwitterがUTF-8で、カラーミーショップ!プロがEUC-JPでした。
設置方法の詳細は上記リンクにありますので、そちらをご参照下さい。


【参照リンク】
・「かぐや東京」さまのWebサイト(Twitterボタンが搭載されている家具屋さん)

【追記】
古い記事になりましたので、「ツイートする 2」 で情報更新しました。