カテゴリー別アーカイブ: コードスニペット

amazonアフェリエイトリンク用ブックマークレットを作りました

こんな感じですっきりしたアフェリエイト用リンク文章を生成することができます。

javascript:(function(){var%20ele=document.createElement('textarea');var%20re=location.href.replace(/.*(/dp/|/gp/product/)/,"").replace(//.*/,"");ele.style.width='100%';var%20te=null;var%20sel=window.getSelection();if(sel==""){te=document.title.replace(/Amazon.+?%EF%BC%9A/,"").replace(/:.*/,"").replace(/(.+?)/,"").replace(/^s+/,"").replace(/s+$/,"")}else{te=sel;}ele.value=''+te+'';document.body.insertBefore(ele,document.body.firstChild);ele.focus();ele.select();ele.ondblclick=function(){ele.parentNode.removeChild(ele);};ele.oncopy=function(){setTimeout(function(){ele.parentNode.removeChild(ele);},1);return%20true;}})()

コードはこんな感じです。アドレスとタイトルを正規表現によって削り、必要な部分だけを抜き取るようにしています。また、文章を選択してブックマークレットを発動した場合は選択文章をリンクタイトルとします。

良い感じです。

このコードは私のアフェリエイトコードが入っているので適当に改変しちゃってください。

css – text-indent minus parameter – 二行目以降を字下げする

コードスニペット

#hogehoge p{
padding-left:4em;
text-indent:-4em;
}

全体をpaddingで右に寄せて、その後text-indentで一行目をマイナス方向に字下げする事で、二行目以降を字下げしているように見せる事ができる。

イレギュラーな使い方かもしれないが、シナリオや議事録などの特殊な文体では利用できる場合がある。

wordpress – InstantWidget – 即席ウィジェット

class capWidget extends WP_Widget {
function capWidget() {
parent::WP_Widget(false, $name = 'hogehogename');
}

function widget() {
?>
<div id="hogeid" class="side-widget">
<p class="widget-title">hogehogename</p>
</div>
<?php
}
add_action('widgets_init', create_function('', 'return register_widget("capWidget");'));

ちょっとしたコードなどをウィジェットにしたい場合は良くある。

しかし、wordpress標準のテキストウィジェットではphpコードを使う事は出来ないし、プラグインで使えるようにした所で、それの動作でブログ自体に負荷がかかるのは避けたい(そも、このブログも三十個ちかくのプラグインが常時稼働している)。

そういうわけで、テーマ自体にコードを書き込むわけだが、ウィジェットにするにしても、機能が決まっている場合がほとんどなので、オプションすら必要ない場合が多い。

なのでこういった定型を持っておけばとても便利だ。

wordpress – edit_post – 記事更新のタイミングで動くアクション

スニペット

function replace_post_any() {
}

add_action('edit_post', 'replace_post_any');

記事を更新する”前”のタイミングで動く。$_POSTを受け取る事ができるので、この中で投稿内容を変更する処理を挟む事で色々と出来る事が増える。

カスタムフィールドで記事内容を自動で形成していくタイプのブログで利用する事が出来るだろう。

php – amazon_assie – アマゾンAPI利用アフェリエイトコード

コード

amazon_assieにアクセスキー、シークレットアクセスキー、アソシエイトID、検索キーワードを入れると正方形にして中心に向かってズームインした形の画像リンク配列を返す。

PHP:アマゾンAPI (AWS)で検索結果を表示 その3 – アダルトを除く | マイヤーの開発ブログさんのコードを拝借。ありがとうございます。

動作は艦これ画像まとめたった~のサイドバーを確認のこと。

//RFC3986形式でURLエンコードする関数
function urlencode_rfc3986($str) {
  return str_replace('%7E', '~', rawurlencode($str));
}

function amazon_assie($access, $secret, $Tag, $ama_keywords) {
  $access_key_id     = $access;
  $secret_access_key = $secret;
  $AssociateTag      = $Tag;
  for($i = 1; $i <= 3; $i++) { //2ページ取得、ItemSearchの最大値は10まで
    $baseurl                  = 'http://ecs.amazonaws.jp/onca/xml';
    $params                   = array();
    $params['Service']        = 'AWSECommerceService';
    $params['AWSAccessKeyId'] = $access_key_id;
    $params['Version']        = '2011-08-01';
    $params['Operation']      = 'ItemSearch'; //商品名や著者名でキーワード検索
    $params['SearchIndex']    = 'All';
    $params['Keywords']       = $ama_keywords; //検索ワードを指定
    $params['AssociateTag']   = $AssociateTag;
    $params['ResponseGroup']  = 'Medium';
    $params['Condition']      = 'All'; //中古品も含める
    $params['ItemPage']       = $i; //何ページ目か
    //Timestamp パラメータを追加します
    //-時間の表記は ISO8601 形式、タイムゾーンは UTC(GMT)
    $params['Timestamp'] = gmdate('Y-m-dTH:i:sZ');
    //パラメータの順序を昇順に並び替えます
    ksort($params);
    //canonical string を作成します
    $canonical_string = '';
    foreach($params as $k => $v) {
      $canonical_string .= '&' . urlencode_rfc3986($k) . '=' . urlencode_rfc3986($v);
    }
    $canonical_string = substr($canonical_string, 1);
    //署名を作成します
    //-規定の文字列フォーマットを作成
    //-HMAC-SHA256を計算
    //-BASE64エンコード
    $parsed_url     = parse_url($baseurl);
    $string_to_sign = "GETn{$parsed_url['host']}n{$parsed_url['path']}n{$canonical_string}";
    $signature      = base64_encode(hash_hmac('sha256', $string_to_sign, $secret_access_key, true));
    //URLを作成します
    //-リクエストの末尾に署名を追加
    $url        = $baseurl . '?' . $canonical_string . '&Signature=' . urlencode_rfc3986($signature);
    $amazon_xml = simplexml_load_string(@file_get_contents($url));
    //  print_r($amazon_xml);
    foreach((object)$amazon_xml->Items->Item as $item_a => $item) {
      //アダルト対策
      $adult_dvd = $item->ItemAttributes->Format; //「アダルト」の文字
      $adult_toy = $item->ItemAttributes->IsAdultProduct; //アダルトなら「1」
      if(strpos($adult_dvd, 'アダルト') !== false) {
        continue;
      } elseif(strpos($adult_toy, '1') !== false) {
        continue;
      } elseif($item->LargeImage->URL == "") {
        continue;
      } else {
        $detail  = $item->DetailPageURL; //商品のURL
        $image_w = $item->LargeImage->Width; //画像の幅
        $image_h = $item->LargeImage->Height; //画像の高さ
        if($image_h > 250) {
          $image_h_p = $image_w / $image_h;
          $image_h_e = floor((($image_h_p * $image_h) - 250) / 2);
        }
        $image       = str_replace(".jpg", "._SX260_CR5,{$image_h_e},250,250_.jpg", $item->LargeImage->URL); //画像のURL
        $aferi_box[] = '<div class="amazonbox"><a href="' . $detail . '" target="_blank"><img src="' . $image . '" align="left" /></a></div><br />';
      }
    }

    //  print_r($aferi_box);";
    return $aferi_box;
  }
}

html – testhtml – demo用などの単発htmlファイルテンプレート

スニペット

<!DOCTYPE html>
<html>
 <head>
 <title>test</title>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <meta name="viewport" content="width=620px" />
 <style type="text/css">
 <!--
 #wrap{
 background-color: gray;
 -->
 </style>
 <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
 <script type="text/javascript">
 /* jQuery v1.3.2が読み込まれているか確認 */
 $(function(){
 /* 例1 */
 if(jQuery){
 $("#res1").html("<p>jQueryは読込まれています。"+jQuery+"</p>");
 }

/* 例2 */
 if (typeof jQuery!="undefined"){
 $("#res2").html("<p>jQueryは読込まれています。typeof jQuery="+typeof jQuery+"</p>");
 }
 });
 </script>
 </head>
 <body>
 <div id="wrap">
 <div id="res1"></div>
 <div id="res2"></div>
 </div>
 </body>
 </html>

jqueryが動作してるかのチェックも同時に行う。cssもheadに直接ぶちこむ。

php – ua_flag – スマートフォンでの処理を変える

スニペット

$ua = $_SERVER['HTTP_USER_AGENT'];
if ((strpos($ua, 'iPhone') === false) && (strpos($ua, 'iPod') === false)  && (strpos($ua, 'iPad') === false)&& (strpos($ua, 'Android') === false)) { //スマートフォンではなかった場合
}

ユーザーエージェントを取得し、その内容によってその後の処理を変更する。

cssや画像の大きさなどを差別化する場合によく使う事になる

どどんとふ – ホライゾンブレイク緊急回避用ダイスボット表

戦闘中の緊急回避を公平に行うためのダイスボット表。

移動できるまで何度もロールし直すと良いと思う。

ダイスボットの設定のしかたは↓

どどんとふに自作のダイスボット表を追加する | aoringo works

スニペット

[code]
1:上
2:右上
3:右下
4:下
5:左下
6:左上
[/code]