CakePHP 3 で効率的に Google Analytics を導入するアイディア紹介

はじめに

CakePHP3 はWebシステムを構築するのにとても便利なフレームワークです。システム開発を行う際には、開発と本番で環境を分けると思います。さらに、テストやリハーサルの環境を別に設ける場合もありますね。

ところで、Webサイトには Google Analytics を導入することも多いと思います。これは本番環境だけに設置するもので、開発環境などには入れたくありません。

対応策として、本番に上げる際に追記するという方法も考えられますが、これは手間がかかります。また誤って無効のまま公開するリスクもあります。

そこで、今日はCakePHP3で、そういった手間やリスクを軽減する、効率的に Google Analytics を導入するアイディアをご紹介します。

目次
  1. トラッキングIDを調べる
  2. app.php に ID を追加
  3. AppController で ID を View に渡す
  4. default.ctp にトラッキングコード追加

1. トラッキングIDを調べる

Google Analytics のトラッキングコードの中で、下記の「●●●」の部分がIDになります。
(Google Analytics の画面でも確認できます。そちらでの確認方法は割愛します)

<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=●●●"></script>

2. app.php に ID を追加

/config/app.phpの return [ ~ ]; の中に、下記のようにトラッキングIDを追加。

/config/app.default.phpにも 'gatid' => '', を追記しておくといいと思います。

/config/app.php
return [
    /**
      * Google Analytics Tracking ID
      */
    'gatid' => '●●●',

3. AppController で ID を View に渡す

/src/Controller/AppController.php の上部に、下記のように use Cake\Core\Configure; を追加。

/src/Controller/AppController.php
namespace App\Controller;

use Cake\Controller\Controller;
use Cake\Core\Configure; // ← これを追加
use Cake\Event\Event;

そして、class AppController extends Controller { ~ } の中に、下記関数を追加。

既に beforeRender() 関数がある場合は、その中のどこかに、下記関数の中身2行を追記してください。

/src/Controller/AppController.php
/**
 * Called before the view is rendered.
 *
 * @param Event $event
 * @return void
 */
public function beforeRender(Event $event)
{
    $gatid = Configure::read('gatid');
    $this->set(compact('gatid'));
}

4. default.ctp にトラッキングコード追加

/src/Template/Layout/default.ctp の <head> の直後に、下記を追記。

/src/Template/Layout/default.ctp
<?php if ($gatid !== '') : ?>
    <!-- Global site tag (gtag.js) - Google Analytics -->
    <script async src="https://www.googletagmanager.com/gtag/js?id=<?= $gatid ?>"></script>
    <script>
        window.dataLayer = window.dataLayer || [];
        function gtag(){dataLayer.push(arguments);}
        gtag('js', new Date());

        gtag('config', '<?= $gatid ?>');
    </script>
<?php endif; ?>

あとは Google Analytics の画面で、動作を確認すれば完了です。