Google Analytics のトラッキングコードで E コマーストランザクションを収集する方法(Universal Analaytics)

Universal Analytics を適用し、新しいトラッキングコードになってから、E コマースのトランザクションデータが収集できなくなったので調査してみました。

ほとんどのことが Ecommerce Tracking - Web Tracking (analytics.js) - Google Analytics — Google Developers に載っていることです。

新しいトラッキングコードは以下のようになっています。(※ 2013/08/19 22:00 時点)

<script>
  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');

  ga('create', 'UA-XXXXXX-YY');
  ga('send', 'pageview');

</script>

上記コードをみるとわかりますが、以前のバージョンでは _gaq オブジェクトの push メソッドに全て突っ込んでいたので、このトラッキングコードでは今までカスタマイズしていたイベントトラッキングなどは動かなくなります。 当然、E コマースのトランザクションデータも収集できなくなります。

以前の E コマーストラッキングコードは以下のようなサンプルが用意されていました。
※下記例は 1 トランザクションで 2 商品購入した例です。

つづきをみる

jQuery を使ったテキストのコピー防止 JavaScript, CSS

昔、unselectable なんて属性があった気がしましたが、使えなかったので、今風のコピー防止対処の仕方はどうなのか調べてみました。

コピーイベントを無効化 : コピーショートカットキーが押下されたら return false を返し無効化する。

$('.prevent-copy').on('copy', function() {
    return false;
});

コンテキストメニューを無効化 : Windows だとマウスの右クリックで出現するコンテキストメニューを return false を返し無効化する。

$('.prevent-copy').on('contextmenu', function() {
    return false;
});

貼り付けイベント無効化 : コピー不可能なエリアというと、大体は書き換え不可能な readonly な箇所だと思うので、ペーストイベントも殺しておく。

$('.prevent-copy').on('paste', function() {
    return false;
});

テキスト選択を無効化(CSS) : 最後に CSS レベルでテキスト選択を無効化する。

.prevent-copy {
    -webkit-user-select: none;
    user-select: none;
}

まとめるとこんな感じ

つづきをみる

maillog で @yahoo.co.jp の 250 ok dirdel

サーバー上で maillog みてたら 250 ok dirdel というステータスが返ってきている行を発見。

何かと思ってググったら ここ に以下のように書いてありました。

なお、「250 ok dirdel」というSMTP確認コードが表示されている場合は、正常にメールが送信されたことを意味しています。

ほほーう。

参考 URL

Heroku に push するとエラー “fatal: ‘heroku’ does not appear to be a git repository”

久しぶりに Heroku で運用しているサービスを修正しようとしたらプッシュするときにエラーが発生したのでメモ。

まずは clone。

$ git clone [email protected]:{repos-name}.git

もろもろ修正したあと、push。

$ git push heroku master
fatal: 'heroku' does not appear to be a git repository 
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

怒られる。

.git/config を確認してみる。

[[MORE]]

$ vim .git/config
[remote "origin"]
    url = [email protected]:{repos-name}.git
    fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
    remote = origin
    merge = refs/heads/master
    rebase = true

originheroku に変えてみる。

[remote "heroku"]
    url = [email protected]:{repos-name}.git
    fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
    remote = heroku
    merge = refs/heads/master
    rebase = true

再び push。

$ git push heroku master
Counting objects: 16, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (9/9), done.
Writing objects: 100% (10/10), 2.59 KiB, done.
Total 10 (delta 2), reused 0 (delta 0)
remote: xxxx
...
remote: xxxx
To [email protected]:{repos-name}.git
   xxxxxxx..xxxxxxx  master -> master

デプロイできた。

Smarty: テンプレート読み込みで template_dir のルートから相対指定する方法

FuelPHP で Smarty を使っていたら以下のエラーが発生したのでメモ。

SmartyException [ Error ]: Unable to read template file '../******.tpl

単純にテンプレートディレクトリーの階層を切り過ぎて、相対パスがあわなくなって、テンプレートファイルが読み込めないために起きているのだが、何かいい方法はないのか。

問題が起きた構造は以下のような感じ。

views/
 + common/
 |  |
 |  +- base.tpl
 |  |
 |  +- footer.tpl
 |  |
 |  +- header.tpl
 |
 + welcome/
    |
    +- index.tpl
    |
    +- hoge/
        |
        +- fuga.tpl

こういった構造のときに以下のように読み込んでエラーがでました。

// views/common/base.tpl
{include="./header.tpl"}
...
{include="./footer.tpl"}

// views/welcome/index.tpl
{include="../common/base.tpl"}
-> ok

// views/welcome/my/fuga.tpl
{include="../../common/base.tpl"}
-> ng (SmartyException [ Error ]: Unable to read template file '../******.tpl)

これを解消するには file: を使います。

つづきをみる