加载Magento属性的实际值

时间:2014-09-09 15:02:20

标签: php magento attributes product magento-1.9.1

我需要从拥有它的magento商店中的所有产品中读取一个属性(有些可能由于不同的属性设置而没有它),用它做的东西(正则表达式/替换等)然后保存新的在同一产品的不同属性中计算的值。

例如,加载产品A,识别它确实具有属性X.加载X的前端值“9000”,将其乘以2并在产品A的属性Y中保存18000。

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

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

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

基本上我需要“getData-version”。以下行由于某种原因无效。

$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;
}
?>

1 个答案:

答案 0 :(得分:0)

尝试一下,因为集合没有选择特定的属性,如果它的属性在集合中有属性过滤器,请检入admin,

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

$product->getData($attribute_code);