我们正在运营Magento有2家商店,1家店是零售店,另一家是批发店。他们共享一个目录,两个商店之间的分割价格。
我写的脚本只是从批发商网站获取所有定价,并且应该将当前价格更新为反映10%折扣的当前价格。我的脚本抛出以下错误:
总产品:51937
PHP致命错误:> /var/www/vhosts/mediagiantdesign.com/httpdocs/app/code/core/Mage/Core/Model/Config.php:1353
中未捕获的异常'Mage_Eav_Model_Entity_Attribute_Exception'
我一直在和这个摔跤。我知道magento非常好,而且像这样的微不足道的东西阻止我在我的轨道上有点加重。
由于堆栈跟踪没有附加异常消息,因此难以确定它是什么。它与在负载上设置storeid有关。如果我把它拿出来,或者将它更改为setWebsiteId就行了。但是,它更新两个网站的定价不仅仅是批发方面。
两个附加说明:
目前,目录中的两个网站价格都相同。这就是为什么你看到我只是从同一产品中获得同样的价格。该脚本应该在商店的批发方面应用初始减少量。
由于我正在调试,我最后有了休息条件。我确实计划将其删除以进行全面运行 - 任何发现此帖子的人都会发现有用的代码(在修复之后)可以删除它以使其运行完整目录。
这是我的代码:
<?php
ini_set("display_errors", 1);
error_reporting(E_ALL);
require_once 'app/Mage.php';
Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID);
try {
//get the magento product collection for the Vendors website products
$vendorproducts = Mage::getModel('catalog/product')->getCollection();
} catch (Exception $ex) {
echo "Exception thrown.";
echo $ex->getTraceAsString();
echo $ex->getMessage(); //no output - weird.
}
echo "Total Products: " . $vendorproducts->count() . "\r\n";
$count = 0;
foreach($vendorproducts as $product)
{
$priceupdate = Mage::getModel('catalog/product')->setStoreId(2)->load($product->getId());
$retailprice = $priceupdate->getPrice();
echo $product->getId() . " - " . ($retailprice - ($retailprice *.10)) . "\r\n";
$priceupdate->setPrice(($retailprice - ($retailprice *.10)));
$priceupdate->setUrlKey(false);
$priceupdate->save();
$count++;
if ($count > 0)
break;
}
echo $count . " products updated.\r\n";
答案 0 :(得分:0)
解决。经过一番仔细检查后,我意识到我指定了错误的StoreID。一个无效的商店ID是一个真正的好方法来跳跃magento - 魔鬼在细节。
享受剧本。