0

我正在使用 Magento 1.9.1,并且我想在用户使用特定 SKU 产品下订单后写入自定义日志文件。我按照一些教程解释了如何创建模块,但我无法以任何方式运行它。

首先我在app/etc/modules/MyName_MyModule.xml

<?xml version="1.0"?>
<config>
  <modules>
    <MyName_MyModule>
      <active>true</active>
      <codePool>local</codePool>
      <version>1.0.0</version>
    </MyName_MyModule>
  </modules>
</config>

检查内部管理和正确激活的模块。 查看详细

之后我在app/code/local/MyName/MyModule/etc/config.xml

<?xml version="1.0"?>
<config>
    <modules>
        <MyName_MyModule>
            <version>1.0.0</version>
        </MyName_MyModule>
    </modules>
    <local>
        <models>
            <mymodule>
                <class>MyName_MyModule_Model</class>
            </mymodule>
        </models>
        <events>
            <checkout_onepage_controller_success_action>
                <observers>
                    <updatelogfile>
                        <class>mymodule/observer</class>
                        <method>updateLogFile</method>
                    </updatelogfile>
                </observers>
            </checkout_onepage_controller_success_action>
        </events>
    </local>
</config>

app/code/local/MyName/MyModule/Model/Observer.php 中的 Observer

<?php
class MyName_MyModule_Model_Observer extends Varien_Event_Observer {

    public function updateLogFile($observer) {

        $order_ids = $observer->getData('order_ids');

        if(isset($order_ids)) {
            foreach ($order_ids as $order_id) :

            $sendToMe = false;
            $order = Mage::getModel('sales/order')->load($order_id);
            if (isset($order)) {

                 $orderItems = $order->getAllItems();
                 foreach ($orderItems as $_item) {

                     $product = Mage::getModel('catalog/product')->load($item->getData('product_id'));
                     $name = $product->getName();
                     $sku = $product->getSku();
                     if($sku == ('MR002-S' || 'MR002-M' || 'MR002-L' || 'MR002-XL' || 'MR002-XXL')) { // Your SKUs
                              $sendToMe = true;
                     }

                 }
             }

             if($sendToMe) {
                 // write order data in custom log file
                 Mage::log("{$name} ({$sku}) ordered", null, 'custom_order.log');
              }

             endforeach;
        }
    }

}

var/log/和 chmod 777中上传了名为custom_order.log的自定义日志文件

之后,我清除了所有 Magento 缓存并将其禁用,但如果我尝试使用特定 $sku 签出产品,我的日志文件不会更新..

我必须再次做什么?这一切似乎都很清楚,但我想我错过了一些东西..

4

1 回答 1

0

更改此文件如下

<?php
class MyName_MyModule_Model_Observer extends Varien_Event_Observer {

    public function updateLogFile($observer) {

        $order_ids = $observer->getData('order_ids');

        if(isset($order_ids)) {
            foreach ($order_ids as $order_id) :

            $sendToMe = false;
            $order = Mage::getModel('sales/order')->load($order_id);
            if (isset($order)) {

                 $orderItems = $order->getAllItems();
                 foreach ($orderItems as $_item) {

                     $product = Mage::getModel('catalog/product')->load($item->getData('product_id'));
                     $name = $product->getName();
                     $sku = $product->getSku();
                     if($sku == ('MR002-S' || 'MR002-M' || 'MR002-L' || 'MR002-XL' || 'MR002-XXL')) { // Your SKUs
                              $sendToMe = true;
                              if($sendToMe) 
                               {
                                   // write order data in custom log file
                              Mage::log("{$name} ({$sku}) ordered", null, 'custom_order.log');
              }
                     }

                 }
             }



             endforeach;
        }
    }

}
于 2019-10-10T11:53:21.620 回答