ECcube 3系にA8アフィリエイトタグを設置

ECcube
この記事は約4分で読めます。
PR

Eccube3系でアフィリエイト大手のA8を導入することになりました。
ググればいくつか情報があったので余裕だな、と内心思っていましたがかなり苦戦しました。
ITP2.2は広告運用している時に聞いていた話ですがこんなところで関わるとは…。

サブドメインの取得とCNAMEレコードの変更はいくつも情報があるため割愛。
サブドメインは2階層以上離れるとNGになるのでそこだけ注意です。

<span id="a8sales"></span>

<script src="//statics.a8.net/a8sales/a8sales.js"></script>

<script>
a8sales({
"pid": "~個人番号~",
"order_number": "注文番号",
"currency": "JPY",
"items": [
{
"code": "商品コード",
"price": 商品価格,
"quantity": 個数
},
],
"total_price": 合計金額
});
</script>

このようなテキストが担当より送られてくると思います。
商材が一つだけであれば”合計金額”の部分を省略しても問題ありませんが、
複数ある場合は必ず入れろとずっと言われますw

編集する箇所はShoppingController.phpとcomplete.twigのみです。
ECcube3は完了ページで注文者情報を消しているので、ShoppingControllerからtwigへ詳細情報を渡してあげる必要があります。

$Order = null;
if (!empty($orderId)) {
$Order = $app[‘eccube.repository.order’]->find($orderId);
}

return $app->render(‘Shopping/complete.twig’, array(
‘orderId’ => $orderId,
‘Order’ => $Order, // Order変数を追加
));

上記をShoppingControllerへ書きtwigへ注文者情報を渡せるようにし、

"order_number": "{{ orderId }}",
"currency": "JPY",
"items": [
{% for OrderDetail in Order.OrderDetails %}
{
"code": "{{ OrderDetail.product_code }}",
"price": {{ OrderDetail.price }},
"quantity": {{ OrderDetail.quantity }}
},
{% endfor %}
],
"total_price":{{Order.payment_total}}
});
</script>

担当よりもらったタグをこのように書き換えれば問題なくテストに通ります。
一部プラグインによって金額が表示されない不具合がデバッグをしてて確認できましたが、特殊な例なのでおいておきます。
このご時世にECcube3系にA8を導入するユーザーは少ないと思いますが、参考になれば幸いです。

コメント