読者です 読者をやめる 読者になる 読者になる

ログマニアックス

日々学んだこと、気づいたことをメモ代わりに残していければ。カバー範囲は割と広めです。

クリックマップ(Clickmap)機能をより使いやすく

1242081_14029728.jpeg

Increase SiteCatalyst Clickmap Functionality with Dynamic Object IDs Plug-in | Web Analytics Land

より、クリックマップを利用する際に便利なプラグインを紹介。

SiteCatalystにはクリックマップという便利な昨日があり、

ページのどこがクリックされたのかを簡単に分析することができます。

一方で、この機能には致命的な欠点があり、

同一の飛び先へのリンクが複数ある場合、混同されて計測されてしまうことがあります。

プラグインでその欠点を抑えることが(一部できます)

201104032002.jpg

クリックマップの裏側では、

すべてのリンクに対して、oid(ObjectID)というフラグを立てているのですが、

ここで紹介するプラグインはそのoidに対して、動的に番号を付与してくれます。

201104032004.jpg

こんな感じ。

導入の仕方

まずはdo_plugin関数の前に

/* DynamicObjectIDs config */

function s_getObjectID(o) {

var ID=o.href;

return ID;

}

s.getObjectID=s_getObjectID

こちらを記述します。

そして、

do_pluginの中に

/* To setup Dynamic Object IDs */

s.setupDynamicObjectIDs();

を追加し、最後にpluginパートに

/*

* DynamicObjectIDs

*/

s.setupDynamicObjectIDs=new Function(""

+"var s=this;if(!s.doi){s.doi=1;if(s.apv>3&&(!s.isie||!s.ismac||s.apv"

+">=5)){if(s.wd.attachEvent)s.wd.attachEvent('onload',s.setOIDs);else"

+" if(s.wd.addEventListener)s.wd.addEventListener('load',s.setOIDs,fa"

+"lse);else{s.doiol=s.wd.onload;s.wd.onload=s.setOIDs}}s.wd.s_semapho"

+"re=1}");

s.setOIDs=new Function("e",""

+"var s=s_c_il["+s._in+"],b=s.eh(s.wd,'onload'),o='onclick',x,l,u,c,i"

+",a=new Array;if(s.doiol){if(b)s[b]=s.wd[b];s.doiol(e)}if(s.d.links)"

+"{for(i=0;i<s.d.links.length;i++){l=s.d.links[i];c=l[o]?''+l[o]:'';b"

+"=s.eh(l,o);z=l[b]?''+l[b]:'';u=s.getObjectID(l);if(u&&c.indexOf('s_"

+"objectID')<0&&z.indexOf('s_objectID')<0){u=s.repl(u,'\"','');u=s.re"

+"pl(u,'\\n','').substring(0,97);l.s_oc=l[o];a[u]=a[u]?a[u]+1:1;x='';"

+"if(c.indexOf('.t(')>=0||c.indexOf('.tl(')>=0||c.indexOf('s_gs(')>=0"

+")x='var x=\".tl(\";';x+='s_objectID=\"'+u+'_'+a[u]+'\";return this."

+"s_oc?this.s_oc(e):true';if(s.isns&&s.apv>=5)l.setAttribute(o,x);l[o"

+"]=new Function('e',x)}}}s.wd.s_semaphore=0;return true");

上記を仕込めば出来上がり。

変数取得の際には

上記の関数だけでクリックマップ自体は改良され、

すべてのリンク先にIDがふられるようになるのですが、

通常の管理画面で分析できるようにするには一工夫必要です。

s.prop20=s.eVar20="D=oid";

s.prop22=s.eVar22="D=pid";

上記のようにダイナミック変数を利用して取得するのがよいでしょう。

クリックマップは非常に強力な機能ですが、

上述したエラーのせいもあり、誤った判断のきっかけにもなりかねません。

本実装でより正確な取得ができるようになるのではないでしょうか。