« YouTube埋め込みコード置換「以前の埋め込みコード」から「新しい埋め込みコード」へ | トップページ | Twitterで検索に出てこない話 »

2013年9月19日 (木曜日)

サイドバー用スクリプトでリンクシェアからPHG用に置換 iTunesアフィリエイトリンク

LinkShare to PHG

 iTunesアフィリエイトがリンクシェアからPHGに移行するタイミングが迫ってきております。みなさん、対応はお済みでしょうか?

 WordPress用とかMovableType用のプラグインとかテンプレートでやる方法とかいろいろあるわけですが、そうでない場合はどうすればいいんだ? と迷っている方もまだいるかもしれません。というわけで対応策としてスクリプトを作ってみました。

 ここで利用するのはJavaScript。HTMLを表示するタイミングで置換してしまおうというものです。さまざまなアプローチがあるなかで一番手間がないのがこれです(という話は前にここでしました)。

 headタグの中にスクリプトを仕込む方法もありますが、

  • 利用しているサービスがテンプレートの改変不可
  • テンプレートの書き換え方がむずかしくてわからない
 といった場合にはお手上げとなってしまいます。

 もっとカンタンな方法はないか?

 ということで考えたのが今回紹介する方法=「サイドバーにJavaScriptを仕込む」になります。

 これならテンプレートの書き換えができないココログBasicとかFreeといったコースの方でもいけると思います。FC2ブログとかlivedoorブログでも大丈夫。もちろん、WordPressでもOKです。JavaScriptが貼り付けられるならなんでもいけるはず。WordPressユーザーで、「プラグインなんてわかんないよ!」という方にも。

サイドバーに置くだけですべてのリンクを置換

 ブログサービスによって、「サイドバー」に表示するコンテンツとして「プラグイン」(FC2ブログ、livedoorブログなど)とか「ウィジェット」(WordPress)とかいろいろ言い方はあるわけですが、今回使うのはその、記事コンテンツ以外の、ブログの両サイドに表示される部分にさまざまなものを表示できるあれです(おおざっぱ)。

 当ブログが利用しているココログでは、「マイリスト」を編集することで、サイドバーに表示するコンテンツをいろいろできたりします。

 そこにJavaScriptのコードを書き込むことで、置換が行われます。注意が必要なのは、JavaScriptのコードが、置換すべき対象より後にこなければいけないということ。ということで、右サイドバーの一番下などに配置するのがベストだと思います(うまいこと説明できない)。

 では、いよいよ肝心のコード。

スクリプト

<script type="text/javascript">
(function(){
    var affiliateID = "●●●";
    //●●●の部分を書き換えてください。
    var addString="";
    if (affiliateID){
            addString = "&at=" + affiliateID;
    }
    var w = window;
    var reg = /http:\/\/click.linksynergy.*?PARM1=https{0,1}(.*?itunes\.apple\.com.*)/g;
    replaceLink();

    function replaceLink(){
        var d = document.getElementsByTagName("a");
        for(var i=0; i<d.length; i++){
            var codeIn = d[i].href;
            if(codeIn.match("itunes.apple.com")){
               var codeOut = codeIn.replace(reg, rep);
               d[i].href = codeOut;
            }
        }
    }

    function rep(whole, p1){
        return "https" + decodeURIComponent(decodeURIComponent(p1)).replace(/&partnerId=30/,"") + addString;
    }
})();
</script>

コード記述時の注意

 IEで上記をそのままコピペすると、各行の頭に行番号がつきます。それは削除してください。

 「プラグイン」や「マイリスト」に上記コードを加える際に注意が必要なのは、「自動的に改行を追加」「自動的に段落を追加」というオプションをOFFにすること。これをしないと、正常にJavaScriptが動作しません。ブログサービス名と「サイドバー」「JavaScript」といったキーワードで検索するとだいたい解決策で出てくると思います。

参考にした記事など

 今回のコードおよび記事作成のきっかけは、以下の記事(ありがとうございます!)。

 リンクシェアを使ったiTunesアフィリエイトのURLをPHGに置換するJavaScript | MaciPhone活用紀

 リンク先の記事はheadタグに仕込む方法ですが、今回は、bodyタグ内に仕込むということでいろいろ試行錯誤。さらに置換ロジックについても、より多くのパターンに合うように考えました。もちろん、当方が作っているiTunes リンク作成サービス「Sticky iTunes Link Maker」で作成したリンクにも対応するようにしました。

 置換に利用した正規表現については、以下を参考にしました(ありがとうございます!)。

 Electronic Genome - JavascriptのString.replaceに無名関数を渡して複雑な置換

 Javascriptの正規表現置換で後方参照を使いたい - 名もないテクノ手

 あと、ちょっと前にこんなのも書きました。1つ1つ記事を置換する方法です。

 iTunesアフィリエイト PHGへのURL置換を力技でやったよ! リンクシェア用160件分をPHG用に変換

 一応、WindowsのIEとChromeとiOSのSafari、Chromeで動作を確認しています。まれにStoreがちゃんと表示されないようですが、これはAppleのサーバーのせいじゃないかと思ってます(再度リンクをクリックすると何事もなかったように表示されるので。違うかもしれませんが)。

 ということで、いろいろさっくりした説明になりましたが、自己責任でお楽しみください。

 よろしくお願いしまーす。

 

|

« YouTube埋め込みコード置換「以前の埋め込みコード」から「新しい埋め込みコード」へ | トップページ | Twitterで検索に出てこない話 »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/35726/58225209

この記事へのトラックバック一覧です: サイドバー用スクリプトでリンクシェアからPHG用に置換 iTunesアフィリエイトリンク:

« YouTube埋め込みコード置換「以前の埋め込みコード」から「新しい埋め込みコード」へ | トップページ | Twitterで検索に出てこない話 »