Прежде всего, извините за длинный пост. Я просто не могу работать после этого.Magento checkout success observer не работает правильно
Я пытаюсь отобразить код отслеживания с помощью наблюдателя, который смотрит на событие успеха. Я включил журналы систем и исключений, и я не вижу никаких ошибок. У меня может быть ошибка с заглавностью/синтаксисом в моей конфигурации. Это мой первый модуль, и косые черты назад, потому что я копирую и вставляю их с рабочего стола. Here is a zip of the files (only 6) Вот код:
\ приложение \ и т.д. \ модули \ Capps_Cact.xml
<?xml version="1.0"?>
<config>
<modules>
<Capps_Cact>
<active>true</active>
<codePool>local</codePool>
</Capps_Cact>
</modules>
</config>
приложение \ код \ Local \ Капс \ CACT \ и т.д. \ config.xml
<?xml version="1.0"?>
<config>
<modules>
<Capps_Cact>
<version>1.0.0</version>
</Capps_Cact>
</modules>
<frontend>
<layout>
<updates>
<Capps>
<file>cact.xml</file>
</Capps>
</updates>
</layout>
</frontend>
<global>
<blocks>
<cappscact>
<class>Capps_Cact_Block</class>
</cappscact>
</blocks>
<models>
<cappscact>
<class>Capps_Cact_Model</class>
</cappscact>
</models>
</global>
<events>
<checkout_onepage_controller_success_action>
<observers>
<Capps_Cact_order_success>
<class>capps_cact/observer</class>
<method>setCappsCactOnOrderSuccessPageView</method>
</Capps_Cact_order_success>
</observers>
</checkout_onepage_controller_success_action>
<checkout_multishipping_controller_success_action>
<observers>
<Capps_Cact_order_success>
<class>capps_cact/observer</class>
<method>setCappsCactOnOrderSuccessPageView</method>
</Capps_Cact_order_success>
</observers>
</checkout_multishipping_controller_success_action>
</events>
</config>
приложение \ код \ Local \ Капс \ CACT \ Model \ observer.php
<?php
class Capps_Cact_Model_Observer
{
/**
* Add order information into CC block to render on checkout success pages
*
* @param Varien_Event_Observer $observer
*/
public function setCappsCactOnOrderSuccessPageView(Varien_Event_Observer $observer)
{
$orderIds = $observer->getEvent()->getOrderIds();
if (empty($orderIds) || !is_array($orderIds)) {
return;
}
$block = Mage::app()->getFrontController()->getAction()->getLayout()->getBlock('capps_cact');
if ($block) {
$block->setOrderIds($orderIds);
}
}
}
приложение \ код \ Local \ Капс \ CACT \ Block \ Track.php
<?php
class Capps_Cact_Block_Track extends Mage_Core_Block_Template
{
/**
* Render information about specified orders and their items for Channel Advisor
*
* @link http://code.google.com/apis/analytics/docs/gaJS/gaJSApiEcommerce.html#_gat.GA_Tracker_._addTrans
* @return string
*/
protected function _getCATrackingCode()
{
$orderIds = $this->getOrderIds();
if (empty($orderIds) || !is_array($orderIds)) {
echo ('It worked its');
return;
} else {
echo ('did that work');
$orderId = Mage::getSingleton('checkout/session')->getLastRealOrderId();
$order = Mage::getModel('sales/order')->loadByIncrementId($orderId);
echo ('<script type="text/javascript">
');
echo ('var _caq = _caq || [];
');
echo ('var products = [];
');
$Id = '';
$Qty = '';
$Price = '';
$items = $order->getAllItems();
foreach($items as $item){
echo ('products.push({Sku: \'');
echo $Id .= $item->getSku();
echo ("', ");
echo ('UnitPrice: \'');
echo $Price .= $item->getPrice();
echo ("', ");
echo ('Quantity: \'');
echo $Qty .= $item->getQtyOrdered();
echo ('\'});
');
$Id = '';
$Qty = '';
$Price = '';
}
$separateones = substr($separateones, 0,-1);
echo ('_caq.push(["Order", {OrderId: \'');
echo $order->getIncrementId();
echo ('\', Revenue: \'');
echo $order->getSubtotal();
echo ('\', CurrencyCode: \'USD\', Products: products}]);
');
echo ('</script>');
}
}
}
приложение \ дизайн \ интерфейс \ базы \ умолчанию \ расположение \ cact.xml
<?xml version="1.0"?>
<layout version="1.0.0">
<!--
Default layout, loads most of the pages
-->
<default>
<!-- Mage_GoogleAnalytics -->
<reference name="after_body_start">
<block type="cappscact/track" name="capps_cact" as="capps_cact" template="Capps/Cact.phtml" />
</reference>
</default>
</layout>
приложение \ дизайн \ оболочка \ базы \ умолчанию \ шаблон \ Капс \ Cact.phtml
<!-- Begin Channel Advisor Tracking Code -->
<?php echo $this->_getCATrackingCode(); ?>
<!-- End Channel Advisor Tracking Code -->
Исправлено, что спасибо! но, к сожалению, код не срабатывает правильно. Как только я разместил заказ, я подумал, что наблюдатель загрузит $ orderIds, а затем моя функция пропустит первый возврат и эхо. Это не так. –
Первое эхо справа после аргумента if и перед возвратом отображается на моем веб-сайте. Поэтому я «знаю», что функция запускается и создает выход на моем сайте. –
Отладка вашего наблюдателя, чтобы убедиться, что 'if ($ block)' is true. –