EC-CUBE3 拡張eコマース設定

今回はEC-CUBE3での拡張eコマース設定をしたのですが、かなりわけわからない感じだったので誰かの助けになればよいと思い書き留めておきます。
お金がある人はEC-CUBE3の有料プラグインで拡張eコマース設定が簡単にできるやつがあるらしいので、それを使うことをお勧めします。

###前提として
ある程度EC-CUBEソースをいじれる人対象です。
よくわからない人はプラグインを購入したほうが間違いないです。

###やること
設定しないといけないことは大きく分けて３つぐらいだと思います。
1. Googleアナリティクスでの設定
2. EC-CUBEでの設定（テンプレートソースをいじります）
3. Googleタグマネージャでの設定

###参考サイト
https://sem-technology.info/ja/google-analytics/enhanced-ecommerce-implements-best-practice
https://support.google.com/tagmanager/answer/6107169?hl=ja&ref_topic=6333310
他にも色々みましたが上記２サイトにだいぶ助けられました。

##1. Googleアナリティクス設定
以下のようにeコマース設定を有効にして、拡張eコマースもオンにします。
チェックアウトのラベルは決済ステップを設定します。
![アナリティクス.png](https://qiita-image-store.s3.amazonaws.com/0/32957/584856b0-6e50-8f1f-c0b7-b7fb9c91cb4e.png)

アナリティクスではこれだけ！

##2. EC-CUBEでの設定
dataLayerを使用するための設定です。
(dataLayerっていう変数をjsで用意してそこに商品情報をどんどん追加して、Googleになげるっていうやり方だと解釈してます。）
https://sem-technology.info/ja/google-analytics/enhanced-ecommerce-implements-best-practice
を参考にして、必要な箇所のソースを修正していきます。

参考として自分が設定した商品一覧のソースは以下の通りです。
新商品を表示させるブロック（独自で作成してます。デフォルトではありません。）があり、それをトップページで表示しているのでそこに拡張eコマース設定をしました。

```twig:新商品ブロック
    <div class="row new-product" data-list-name="新商品ブロック">
        <div class="col-sm-12">
            {% for p in Product | slice(0, 4) %}
                <div class="col-sm-3 col-xs-6 no-padding">
                    <div class="pickup_item product-box" data-id="{{ p.getId() }}" data-name="{{ p.name }}" data-price="{{ p.getPrice02Max() }}">
                        <a href="{{  url('product_detail', {id : p.getId()} ) }}" class="product-link">
                            <div class="item_photo"><img src="{{ app.config.image_save_urlpath }}/{{p.getMainListImage()}}"></div>
                            <p class="item_comment text-warning">{{p.note}}</p>
                            <dl>
                                <dt class="item_name">{{p.name}}</dt>
                                <dd class="item_price">¥{{p.getPrice02IncTaxMax()|number_format}}</dd>
                            </dl>
                        </a>
                    </div>
                </div>
            {% endfor %}
        </div>
    </div>
```

あとは、参考URLをもとに商品詳細、カテゴリ検索後の商品一覧、各決済ステップページなどに設定を仕込んでいきます。

> 2017年2月22日追記
商品購入時のshopping/complete.twigでは商品情報が取得できないと思いますので、Controllerにフックを仕込んで商品情報を取得してあげる必要があります。
記述例としては以下の通りです。

```complete.twigから抜粋
        <div id="purchase-data" style="display: none;">
            <ul>
                {% for detail in Order.OrderDetails %}
                <li class="purchase-product" data-name="{{detail.productName}}" data-price="{{detail.price}}" data-quantity="{{detail.quantity}}">&nbsp;</li>
                {% endfor %}
            </ul>
            <p class="purchase-information" data-step="complete" data-transaction-id="{{orderId}}" />
        </div>
```

##3. Googleタグマネージャ設定
ここがだいぶ謎でしたw

まずはアカウントがなかったのでアカウント作成からやりました。
アカウント作成したらこんな画面になると思います。
隠してある部分は個人情報ですw

![Google タグマネージャ３.png](https://qiita-image-store.s3.amazonaws.com/0/32957/0b800038-a9c2-9961-2374-f78bc6ae2722.png)

####dataLayerへ商品情報追加スクリプトのタグ追加
参考URL(https://sem-technology.info/ja/google-analytics/enhanced-ecommerce-implements-best-practice) にありますdataLayerへ商品情報を追加してくれるスクリプトを追加します。

1. 「新しいタグを追加」を選択
2. 名前を設定（私は拡張Eコマースデータ取得スクリプトとしました。なんでもいいです。）
3. タグの設定をクリックすると右側にメニューが開きます。
4. カスタムHTMLを選択
5. HTMLの枠に[こちらのgithub](https://gist.github.com/1987yama3/ef3b2f0857d7f023c1a4)からスクリプトを取得して貼り付けます。
6. トリガーでAllPagesを選択して、保存します。

####eコマースタグ追加
Product Clicked（商品クリックしたとき）, Add to Cart（商品をカートにいれたとき）, Checkout（決済ステップ）, Purchase（購入完了）, Impressions（商品閲覧）, Product Detail（商品詳細閲覧）のトリガーを作成し、タグを設定していきます。
参考URLではclickもpageviewも同じイベントでやっているっぽい？ですが自分は分けて設定してみました。

1. 「新しいタグを追加」を選択
2. 名前を設定（私はEC-Clickと設定しましたが、なんでもいいです。）
3. タグの設定で「ユニバーサルアナリティクス」を選択。トラッキングIDをGoogleAnalyticsからコピーして貼り付けます。
4. トラッキングタイプを「イベント」、カテゴリに「Ecommerce」、アクションは「クリック」としました。
5. 詳細設定にてeコマース->「拡張eコマースを有効にする」にチェック->「データレイヤーを使用する」にチェック
6. トリガーを設定
7. 多分、今回初めてタグマネージャ使うよって方はAllPagesぐらいしかないと思いますので＋ボタンから新規追加します。
8. トリガーの名前を、Product Clickedと入力します。ここの名前はスクリプトの中で設定されているので、それと同じものを設定しました。
9. ~~トリガーの種類「クリック - すべての要素」を選択しました。そのままトリガー新規追加でAdd to Cart, Checkout, Purchaseを追加。~~

> 2017/2/22追記
9. トリガーの種類「クリック - すべての要素」を選択しました。そのままトリガー新規追加でAdd to Cart, Checkoutを追加。
Purchaseをクリックで取得しようと設定していましたが、色々試して取得できなかったのでPageViewのほうにいれました。

全部設定するとこんな画面になると思います。
![Google タグマネージャ４.png](https://qiita-image-store.s3.amazonaws.com/0/32957/c86f79f1-6474-a8f6-6b84-2399d3147a4f.png)

これでclickの設定は完了です。

次にpageviewです。
1. 「新しいタグを追加」を選択
2. 名前を設定（私はEC-Pageviewと設定しましたが、なんでもいいです。）
3. タグの設定で「ユニバーサルアナリティクス」を選択。トラッキングIDをGoogleAnalyticsからコピーして貼り付けます。
4. トラッキングタイプを「ページビュー」に設定。
5. 詳細設定にてeコマース->「拡張eコマースを有効にする」にチェック->「データレイヤーを使用する」にチェック
6. トリガーを設定
7. トリガーの名前を、Impressionsと入力します。
8. トリガーの種類「ページビュー」を選択しました。そのままトリガー新規追加でProduct Detailを追加。

設定完了するとこんな画面になると思います。
![Google タグマネージャ５.png](https://qiita-image-store.s3.amazonaws.com/0/32957/09404a68-d1fd-c2f2-0cc8-48cd037ec16c.png)

これで設定完了！

あとは公開して、動作確認です。
お疲れ様でした！

ちなみに、これで設定はいいかなーと思うんですが、いまいちアナリティクスの見方を把握していないのでどこかで設定が間違っているかもしれません。
もしここはこうしたほうがいいなじゃないかとかいう意見があればいつでもコメントください！

####注意点
・eコマースの計測に関してはリアルタイムでは行われません。今日クリックや閲覧したものは明日に反映されます。