私の意図は、サードパーティの JavaScript (Google アナリティクス、optimizely、pricegrabber など) を onepage success のフッターに挿入して、複数のチャネルを通じてコンバージョンを追跡することです。
local.xml 内のチェックアウト成功ノード内のフッター参照にブロックを追加することでこれを達成し、すべてが適切に機能します。
私の質問は、効率と拡張性に関するものです。
すべてのブロックを単一のブロック参照に結合し、さまざまな関連モデルへの単一の呼び出しに作用するさまざまなメソッドを使用して、各ブロックの JavaScript への挿入に必要なデータを提供する方がよいと思いました。コンバージョン トラッキング スクリプト。
コンバージョン トラッキングが依存する可能性のある一般的なデータの例 (疑似): Order ID 、Order Total、Order.LineItem.Name(foreach) など
現在、スクリプトごとに適切なモデルを呼び出し、顧客の最後の注文 ID を負荷値として渡し、get() を呼び出して戻り値を変数に割り当て、データを反復処理して値を一致させました。特定のサード パーティ サービスの期待と共に。
チェックアウトが完了したら、すべてのデータを 1 回プルする必要があります。
以下は、チェックアウト成功のフッターに読み込まれるコンバージョン トラッキング テンプレート ファイルの 1 つの例です。
$order = Mage::getModel('sales/order')->loadByIncrementId(Mage::getSingleton('checkout/session')->getLastRealOrderId());
$amount = number_format($order->getGrandTotal(),2);
$customer = Mage::helper('customer')->getCustomer()->getData();
?>
<script type="text/javascript">
popup_email = '<?php echo($customer['email']);?>';
popup_order_number = '<?php echo $this->getOrderId() ?>';
</script>
<!-- PriceGrabber Merchant Evaluation Code -->
<script type="text/javascript" charset="UTF-8" src="https://www.pricegrabber.com/rating_merchrevpopjs.php?retid=<something>"></script>
<noscript><a href="http://www.pricegrabber.com/rating_merchrev.php?retid=<something>" target=_blank>
<img src="https://images.pricegrabber.com/images/mr_noprize.jpg" border="0" width="272" height="238" alt="Merchant Evaluation"></a></noscript>
<!-- End PriceGrabber Code -->
このようなコードを 1 つだけ持つことは大したことではありませんが、さまざまなサードパーティ サービスで同様のことを行っています。
Pricegrabber は、より単純な例の 1 つです。より高度な追跡サービスでは、すべての製品名、ID、価格、カテゴリ、注文 ID などのコンマ区切りのリストが必要です。
すべてをより管理しやすくしたいので、次のことを行うという私の考えは次のとおりです。
- すべてのテンプレート ファイルを 1 つのファイルに結合する
- データを変換テンプレートに配信するヘルパー クラスまたはライブラリを開発する
目標に含まれるもの
- 拡張性
- 最小限のモデル呼び出し
- 最小限のメソッド呼び出し
質問 1. 魔法使いのヘルパーは最善の方法ですか? 2.「ヘルパー」クラスに推奨できるデザイン パターンはありますか? 3. 選択したデザイン パターンがこのインスタンスに最適なのはなぜですか?