Magento Checkout страница успеха цена продукта и получение SKU - PullRequest
5 голосов
/ 14 октября 2010

Я хочу добавить комиссионный переход на мой клиентский сайт, чтобы они запрашивали артикулы каждого продукта и цену. Только после страницы подтверждения / страницы успеха нам нужно передать эти значения. Но вот как я могу получить все детали продукта. В том числе sku, цена, которую я должен пройти. Есть ли способ получить детали каждого продукта отдельно.

Спасибо Суреш

Ответы [ 3 ]

7 голосов
/ 15 октября 2010

Да, ты прав @ 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 -->

Работает отлично.

6 голосов
/ 14 октября 2010

Наблюдайте за событием , например:

<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>

Далее вам нужно что-то для обработки события.

app / code / local / Ваша компания / Ваш модуль / Модель / 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();
0 голосов
/ 15 октября 2010

Примечание: Это НЕ лучший метод! Для этого вы должны создать новый блок / шаблон и передать данные другим способом. Вам также никогда не следует создавать экземпляр подключения Db в представлении / шаблоне.

С учетом вышесказанного - вот как я реализовал Commission Junction в магазине Magento задолго до того, как научился переопределять модули / шаблоны / и т.д.

приложение \ дизайн \ интерфейс \ предприятия \ умолчанию \ шаблон \ Checkout \ 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 -->
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...