我正在使用 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 签出产品,我的日志文件不会更新..
我必须再次做什么?这一切似乎都很清楚,但我想我错过了一些东西..