我的目的是通过将第三方 javascript(例如 google analytics、optimizely、pricegrabber 等)插入到 onepage success 的页脚中来跟踪通过多个渠道的转化。
我通过在 local.xml 中的结帐成功节点内的页脚引用中添加一个块来完成此操作,并且一切正常。
我的问题更多是关于效率和可扩展性。
我突然想到,最好将所有块组合成一个块引用,然后使用各种方法对各种相关模型进行一次调用,以提供插入到每个 javascript 中所需的数据转化跟踪脚本。
转化跟踪可能依赖的一些常见数据示例(伪):Order ID、Order Total、Order.LineItem.Name(foreach) 等
目前,对于每个脚本,我已经调用了适当的模型,将客户最后的订单 id 作为负载值传递,并调用 get() 将返回值分配给变量,然后遍历数据以匹配值符合给定第三方服务的期望。
结帐完成后,所有数据都应提取一次,每个第三方服务可能期望不同格式的不同数据
这是在结帐成功的页脚加载的转换跟踪模板文件之一的示例。
$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 -->
像这样只有一段代码并不是什么大不了的事,但我们正在使用许多不同的第三方服务做类似的事情。
Pricegrabber 是比较简单的例子之一。更复杂的跟踪服务需要以逗号分隔的所有产品名称、ID、价格、类别、订单 ID 等列表。
我想让这一切更易于管理,所以我的想法是执行以下操作:
- 将所有模板文件合并到一个文件中
- 开发帮助类或库以将数据传递到转换模板
目标包括
- 可扩展性
- 最少的模型调用
- 最少的方法调用
问题 1. 法师助手是最好的选择吗?2. 对于“帮助”类,您有什么可以推荐的设计模式吗?3. 为什么你选择的设计模式最适合这个实例?