2

我一直在尝试调整因销售而​​减少的库存数量,具体取决于产品的属性,我尝试了以下方法,但似乎无济于事。

Magento 版本:1.8.0.0

文件:/app/code/core/Mage/CatalogInventory/Model/Resource/Stock.php

在第 158 行之后:foreach ($productQtys as $productId => $qty)

我添加了以下代码:

$CheckLength = Mage::getModel('catalog/product')->load($_item['product_id'])->getData('length');
if ( $CheckLength == 'Per Half Metre' )
{
    $qty = $qty / 2;
}

并且还尝试了这个:

$myproduct = Mage::getModel('catalog/product');

if ($myproduct->getAttributeText('length')=='per Half Metre')
{
    $qty = $qty / 2;
}

还有这个:

$storeId = Mage::app()->getStore()->getId(); // return current store id
$CheckLength = Mage::getResourceModel('catalog/product')->getAttributeRawValue($productId, 'length', $storeId);

if ( $CheckLength == 'Per Half Metre' )
{
    $qty = $qty / 2;
}

以上似乎都不起作用。如果没有检查,数量会根据我的需要很好地除以 2,但是如果产品属性是“每半米”,我只需要它来执行此操作。

PS:此属性与其他 2 个选项位于下拉列表中。

希望有人能帮忙!提前致谢。

4

2 回答 2

4

终于弄清楚了,以下作品 - 在此之前我必须尝试过 15 种不同的变体。

$myproduct = Mage::getModel('catalog/product')->load($productId);
$mylength = $myproduct->getAttributeText('length');

感谢 BuzzJoe 为我指明了正确的方向,我最终使用了:

Mage::Log('$productId: '.$productId, null, 'mylogfile.log');
Mage::Log('$mylength: '.$mylength, null, 'mylogfile.log');

对事情进行检查。无法让 var_dump 工作。

于 2013-11-28T21:31:34.713 回答
0

您是否尝试过 var_dump($CheckLength)?也许价值并没有像你想象的那样出现。

而且,顺便说一句:编辑核心文件从来都不是一个好主意。你应该开发一个扩展。

于 2013-11-27T14:10:57.600 回答