我想将委员会联结添加到我的客户网站,因为他们要求每个产品sku和价格。在确认页面/成功页面之后,我们只需要传递值。但在这里我如何获得所有产品细节。包括sku,价格我需要通过。有没有办法单独获取每个产品的详细信息。
由于 苏雷什
答案 0 :(得分:7)
是的,你是对的@leek
但是如果你想用CJ添加高级设置,那么请遵循这个方法。
<!-- Start of CJ Integration Part -->
<?php
$_customerId = Mage::getSingleton('customer/session')->getCustomerId();
$lastOrderId = Mage::getSingleton('checkout/session')->getLastOrderId();
$order = Mage::getSingleton('sales/order');
$order->load($lastOrderId);
$_totalData =$order->getData();
$_sub = $_totalData['subtotal'];//USD ==> global_currency_code,base_currency_code order_currency_code
// Incase if it is simple do this ==> https://www.emjcd.com/u?AMOUNT= $_sub;
//print_r($order); print_r($_totalData);
$_order = $this->getOrder();
$allitems = $order->getAllItems();
$index = 1;
$cjData = "";//Needed format ==> &ITEM1=3214sku&AMT1=13.49&QTY1=1&ITEM2=6577sku&AMT2=7.99&QTY2=2&
foreach($allitems as $item)
{
$cjData.="&ITEM".$index."=".$item->getSku()."&AMT".$index."=".$item->getPrice()."&QTY".$index."=".$item->getQtyToShip();
$index++;
}
?>
<div style="display:none;">
<img src="https://www.emjcd.com/u?CID=id&OID=<?php echo $this->getOrderId(); ?>&TYPE=type<?php echo $cjData; ?>&CURRENCY=USD&METHOD=IMG" height="1" width="20">
</div>
<!-- End of CJ Integration Part -->
它工作得很好。
答案 1 :(得分:6)
注意这样的event:
<config>
<global>
<events>
<sales_order_place_after>
<observers>
<yourmodule_order_place_after>
<class>yourmodule/observer</class>
<method>onSalesOrderPlaceAfter</method>
</yourmodule_order_place_after>
</observers>
</sales_order_place_after>
</events>
</global>
</config>
接下来,您需要处理事件。
应用/代码/本地/ Yourcompany / Yourmodule /Model/Observer.php 强>
<?php
class Yourcompany_Yourmodule_Model_Observer {
public function onSalesOrderPlaceAfter($observer) {
$order = $observer->getOrder();
/* @var $item Mage_Sales_Model_Order_Item */
foreach ($order->getItemsCollection() as $item) {
// Do something with $item here...
$name = $item->getName();
$price = $item->getPrice();
$sku = $item->getSku();
}
}
}
请参阅数据库表“sales_flat_order_item”或执行var_dump($item->debug())
以查看可用的值类型。由于它是一个平面表,找到有关产品的更多信息的唯一方法是这样的:
$product = Mage:getModel('catalog/product')->load($item->getProductId());
$product->getDescription();
答案 2 :(得分:0)
注意:这不是最好的方法!您应该为此创建一个新的块/模板,并通过其他方式传递数据。您也不应该在视图/模板中实例化Db连接。
说到这里 - 在我学习如何覆盖模块/模板/等之前,我就是在Magento商店中实现Commission Junction的方法。
应用\设计\前端\企业\默认\模板\结帐\ success.phtml 强>
<?php
$orderId = $this->getOrderId();
$order = Mage::getModel('sales/order')->loadByIncrementId($orderId);
$orderTotal = $order->subtotal;
$orderEntityId = $order->entity_id;
$db = Mage::getModel('Core/Mysql4_Config')->getReadConnection();
// Retrieve ordered products
$sql = sprintf("
SELECT *
FROM `sales_flat_order_item`
WHERE (order_id = %d);",
$orderEntityId
);
$orderedProducts = $db->fetchAll($sql);
// Loop through each product in order
foreach ($orderedProducts as $orderedProduct) {
$productId = (int) $orderedProduct['product_id'];
$quantity = (int) $orderedProduct['qty_ordered'];
}
?>
<!-- Commission Junction -->
<img src="https://www.emjcd.com/u?AMOUNT=<?php echo $orderTotal; ?>&CID=<INSERT_CID_HERE>&OID=<?php echo $orderId; ?>&TYPE=339032&CURRENCY=USD&METHOD=IMG" height="1" width="20">
<!-- Commission Junction -->