加载Magento属性';s的实际值


Loading a Magento attribute's actual value

我需要从magento商店中所有拥有它的产品中读取一个属性(有些产品可能由于属性集不同而没有),用它做一些事情(regex/replace等),然后将新计算的值保存在同一产品的另一个属性中

例如,加载产品A,确认它确实具有属性X。加载X的前端值"9000",乘以2,将18000保存在产品A的属性Y中。

在完成了这里的一些帖子后,我想出了这段代码。它允许我列出我们商店中一些产品的属性ID(此处为制造商)。

问题:这只是制造商的ID,而不是他们的实际名称(我需要实际名称)。我该怎么拿到这些。我在另一篇文章中发现了这个片段:

$product = Mage::getModel('catalog/product')->load($_product->getEntityId());
$product->setData('add_ten_pence', 1)->getResource()->saveAttribute($product, 'add_ten_pence');

基本上我需要它的"getData版本"。由于某种原因,下面的行不起作用

$value = $product->getAttributeText($attribute_code);

非常感谢对此事的任何意见。如果有任何变化,我要查找的属性值都是前端类型的"下拉列表"

到目前为止我的代码:

umask(0);
Mage::app('default');
Mage::app ()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID);
$productCollection = Mage::getModel('catalog/product')->getCollection();
$i = 0;
$storeId = 1;
foreach($productCollection as $_product) 
{
    echo "Updating SKU:".$_product->getSku()."'tID:".$_product->getEntityId()." ";
    $manufacturer = Mage::getResourceModel('catalog/product')->getAttributeRawValue($_product->getEntityId(), 'manufacturer', $storeId);
    echo "'tManufacturer: ".$manufacturer."<br>";
    $i++; //(DEBUG break loop early to reduce loading time)
    if($i>10) break;
}
?>

试试吧,因为集合没有选择特定的属性,如果它的属性在集合中有属性过滤器,请在管理员中检查

$product=Mage::getModel('catalog/product')->load($id);
$product->getData($attribute_code);