注文完了画面に、Google Analyticsのイーコマースタグや広告、アフィリエイト等の計測タグを導入したい場合の方法をご紹介いたします。
EC-CUBE4系の場合
Shopping/complete.twig
EC-CUBE4では非常に簡単に、注文情報に関する変数がテンプレートで使用できます。
カスタマイズをしなくても「Order」という注文情報をあらわす変数が必ずtwigテンプレートへ渡されるのでIF文さえ特段必要ありません。
個別の商品情報もOrder.MergedProductOrderItemsから取得してタグなどに利用することができます。MergedProductOrderItemsというプロパティは同じ商品の明細があれば合算したデータになるので、合算しない方がいい場合は代わりにOrder.ProductOrderItemsを使用してください。
{% for OrderItem in Order.MergedProductOrderItems %}
商品コード:{{ OrderItem.product_code }}
商品名:{{ OrderItem.product_name }} {{ OrderItem.classcategory_name1 }} {{ OrderItem.classcategory_name2 }}
単価:{{ OrderItem.price_inctax|price }}
数量:{{ OrderItem.quantity|number_format }}
{% endfor %}
EC-CUBE3系の基本的な考え方・テンプレート上の変数
コンバージョンタグには必ず注文の詳細情報が必要になると思いますが、EC-CUBE3系の場合は注文完了画面で詳細情報を取得できません。
そこで一工夫することとなります。注文完了画面では受注ID($orderId)をセッションより取得しています。この情報からOrderエンティティを取得してやれば、注文の詳細な内容を得ることが可能です。
ただし、注文完了画面では受注IDのセッションから削除していますので、一度しか取得することはできません。(画面リロード時には取得できません)
そのことを考慮して、$orderIdがNULLである可能性を考慮した上でOrderエンティティをデータベースから検索します。
ShoppingController::complete
$Order = null; if (!empty($orderId)) { $Order = $app['eccube.repository.order']->find($orderId); } return $app->render('Shopping/complete.twig', array( 'orderId' => $orderId, 'Order' => $Order, // Order変数を追加 ));
これでテンプレートへ注文の詳細情報を渡すことができます。
注文金額であれば、{{ Order.total }}
氏名であれば、{{ Order.name01 }}{{ Order.name02 }}のようになります。
注文した商品の情報であれば、Order.OrderDetailをループで参照することとなります。
Shopping/complete.twig
{% if Order %} {% for OrderDetail in Order.OrderDetails %} {{ OrderDetail.price }} {#商品価格#} {{ OrderDetail.product_code }} {#商品コード#} {{ OrderDetail.quantity }} {#商品個数#} {% endfor %} {% endif %}
このカスタマイズにより、注文完了画面へ広告・アフィリエイトのコンバージョンタグを設置することが可能です。
ディスプレイ広告やアフィリエイトを実施している方は受注情報を用いたCVタグをぜひご設置ください。
EC-CUBEに関するお問い合わせ
[重要]現在公式にセキュリティサポートが切れていないPHPは8.1以上、MySQLは8.0以上で、対応しているEC-CUBEバージョンは4.2以上です。古いEC-CUBEを使っている方は適切なタイミングでバージョンアップをご検討ください。