Blog

concrete5のフォームブロックでGoogle Analyticsのコンバージョンを取得する方法

Posted by admin at 19:47 日時 2011/09/06

ぼくがイチオシしているオープンソースCMS「concrete5」には、お問い合せフォームを作成するのに使える「フォームブロック」が標準で搭載されています。

参考:フォームブロックの使い方 :: concrete5日本語公式サイト

プラグインのインストールも不要で、初心者でも簡単にフォームが作成できるのでとても便利なのですが、Google Analyticsでコンバージョンを取得しようと思うと、カスタマイズが必要です。今回はその方法を解説します。

標準のフォームブロックのテンプレートを使っている場合

まず、 /concrete/blocks/form/view.php をコピーして、 /blocks/form/view.php に複製します。concrete5ではこのように、concrete5のコアファイルを変更せず、ユーザー領域に設置したファイルで上書きします。

参考:concrete5 のシステム基本構造 :: concrete5日本語公式サイト

そして、ユーザー領域に複製した view.php の完了メッセージが表示される部分に、Google Analytics用のJavascriptを1行追加します。

▼変更前

<div id="msg"><?php  echo $survey->thankyouMsg ?></div>

▼変更後

<div id="msg"><?php  echo $survey->thankyouMsg ?></div>  <script>_gaq.push(['_trackPageview','/form/thanks<?php echo intval($bID)?>']);</script>

このスクリプトの追加によって、フォームの完了メッセージが表示された際、「/form/thanks[ブロックID]」というURLに移動しました!とGoogle Analyticsに嘘を教えることができます。あとは、Google Analyticsの設定でこのURLを目標URLとして登録しておけばOKです。

ちなみに、「/form/thanks」の部分は架空のアドレスなので、何でもOKです。もし既存のページと被る場合は変えてください。また、フォームブロックの設定で、「フォーム送信の後に特定のページに移動」する様にしている場合は、そもそもそのページのURLをGoogle Analyticsに登録すればいいので、このカスタマイズは必要ありません。

「Ajax Form」アドオンを導入している場合

標準のフォームブロックは、送信時にページをリロードするので、エラーメッセージの表示が遅れて多少イライラします。そのため、ページ遷移を無くしAjax化してくれるアドオン「Ajax Form」を入れることが多いです。この場合はちょっと変わりまして、Ajaxで完了メッセージを表示する部分に手を加えます。

▼変更前

function <?php  echo $template_onsuccess_funcname; ?>(form, thanks) {  	//This js code happens after form is successfully processed...  	$(form).find('#msg').show();  	$(form).find('div.success').html(thanks).show();  	$(form).find('div.indicator').hide();  	$(form).find('div.fields').hide();  }

▼変更後

function <?php  echo $template_onsuccess_funcname; ?>(form, thanks) {  	//This js code happens after form is successfully processed...  	$(form).find('#msg').show();  	$(form).find('div.success').html(thanks).show();  	$(form).find('div.indicator').hide();  	$(form).find('div.fields').hide();  	_gaq.push(['_trackPageview','/form/thanks<?php echo intval($bID)?>']);  }

お役に立てば幸いです。


Share this entry