IT女子のお気に入りフォルダ

管理人の備忘録と実践を兼ねた(出来るだけ)役に立つ情報を配信するブログです。

[EC-CUBE2.13] 注文完了画面に注文番号と小計を表示(アフィリエイトコンバージョンタグ)

アフィリエイト広告を出している場合、注文完了画面にアフィリエイトのコンバージョンタグを埋め込む必要があります。大手のアフィリエイト会社であればプラグインもありますが、そうでない場合も多いのでその方法。

注文完了画面で注文番号と小計を表示したい

LC_Page_Shopping_Completeをカスタマイズ

アフィリエイトのコンバージョンタグに必要となるパラメーターは多くが「注文番号」と「小計(税抜)」です。
注文完了画面にこれらの値を受け渡したいのでLC_Page_Shopping_Completeをカスタマイズします。

data/class_extends/page_extends/shopping/LC_Page_Shopping_Complete_Ex.php

public function action()
{
	$this->arrInfo = SC_Helper_DB_Ex::sfGetBasisData();

	// 注文情報を取得
	$objPurchase = new SC_Helper_Purchase();
	$arrOrder = $objPurchase->getOrder($_SESSION['order_id']);

	// 必要な値を完了画面に引き渡す
	$this->arrMyOrder = array(
		'order_id' 	=> $arrOrder['order_id'], // 注文番号
		'price' 	=> $arrOrder['subtotal'] - $arrOrder['tax'], // 小計-消費税
		);
}

小計は、税込の金額から消費税を引いています。
取得した注文情報を配列ごと完了画面に渡し、完了画面で必要な値を抜き出す方法もありますが、ここでは必要な値だけを渡すようにしてみました。

complete.tplを編集

以下で表示することができます。

data/Smarty/templates/default/shopping/complete.tpl

<!--{$arrMyOrder.order_id}--> // 注文番号
<!--{$arrMyOrder.price}--> // 小計(税抜)

他デバイスのテンプレートでも同じです。

例)イークリック

<img src="http://www.e-click.jp/applications/applicate/任意のコード/<!--{$arrMyOrder.price}-->/<!--{$arrMyOrder.order_id}-->" width="1" height="1">

商品番号や商品単価、購入個数なども表示したい

アフィリエイト会社によっては、商品番号や商品単価、購入個数などもパラメータに含める必要とされる場合もあります。
例として、moba8とアフィリエイトBのコンバージョンタグでやってみます。
(各社タグは、広告プログラムによって異なるタグが数種類あるので、あくまでも例として参考にしてください。)

LC_Page_Shopping_Completeをカスタマイズ

同じく、data/class_extends/page_extends/shopping/LC_Page_Shopping_Complete_Ex.php

public function action()
{
	$this->arrInfo = SC_Helper_DB_Ex::sfGetBasisData();

	// 注文情報を取得
	$objPurchase = new SC_Helper_Purchase();
	$arrOrder = $objPurchase->getOrder($_SESSION['order_id']);
	$arrOrderDetail = $objPurchase->getOrderDetail($_SESSION['order_id']);

	$moba8 = ''; 		// moba8用のタグ
	$affiliateB = ''; 	// アフィリエイトB用のタグ
	$accesstrade = ''; 	// アクセストレード
	foreach ($arrOrderDetail as $value) {
		$moba8 .= '&SI='. $value['price'] . '.' . $value['quantity'] . '.' . $value['price']*$value['quantity'] . '.' . $value['product_id'];
		$affiliateB .= $value['product_id'] . '.' . $value['quantity'] . '.' . $value['price'] . ':';
		$accesstrade .= '&vi=' . $value['product_id'] . '.' . $value['quantity'] . '.' . $value['price'];
	}

	// 必要な値を完了画面に引き渡す
	$this->arrMyOrder = array(
		'order_id' 	=> $arrOrder['order_id'], // 注文番号
		'price' 	=> $arrOrder['subtotal'] - $arrOrder['tax'], // 小計-消費税
		'moba8' 	=> $moba8,
		'affiliateB' 	=> substr($affiliateB, 0, -1),
		'accesstrade'	=> $accesstrade,
		);
}

アフィリエイトBのタグは、引き渡し用の配列にセットするときに最後の「:」を削除しています。

先ほどと同じく注文詳細の配列を丸ごと渡す方法もありますが、ここでタグを生成した方がテンプレートがすっきりするのでこのようにしてみました。

complete.tplを編集

data/Smarty/templates/default/shopping/complete.tpl

例)moba8

<img src="https://px.moba8.net/svt/sales?async=1&PID=プログラムID&SO=<!--{$arrMyOrder.order_id}--><!--{$arrMyOrder.moba8}-->" width="1" height="1" />
例)アフィリエイトB

<img src="https://track.affiliate-b.com/commit/プロモーションID/<!--{$arrMyOrder.order_id}-->/<!--{$arrMyOrder.affiliateB}-->" width="1" height="1" />
例)アクセストレード

<img src="https://is.accesstrade.net/cgi-bin/isatV2/マーチャント名/isatWeaselV2.cgi?result_id=成果対象ID&verify=<!--{$arrMyOrder.order_id}-->&value=<!--{$arrMyOrder.price}--><!--{$arrMyOrder.accesstrade}-->" width="1" height="1">

先に長いタグを生成して変数にセットしているので、テンプレートでの記述は実にすっきりして我ながらいい感じです。