Получите пользовательский атрибут от продукта Magento 1.9

Я пытаюсь получить некоторые данные о продукте на основе продуктов SKU. Это работает, но мне также нужно получить добавленный атрибут добавленный одновременно, названный 'sku_supplier'. Возможно ли это?

Вот что я получил:

require $_SERVER['DOCUMENT_ROOT'] . "/app/Mage.php";
Mage::app();

$sku = '748547';

$products = Mage::getResourceModel('catalog/product_collection');
$products->addAttributeToSelect('*');
$products->addAttributeToFilter('visibility', array('neq' => 1));
$products->addAttributeToFilter('status', 1);
$products->addAttributeToFilter('sku', $sku);
$products->setCurPage(1)->setPageSize(1);
$products->load();

if ($products->getFirstItem()) {
    $product       = $products->getFirstItem();
    $strProdName   = $product->getName();
    $strProdSku    = $product->getSku();
    $strProdSkuSup = $product->getSku_Supplier(); // <= I want to show this
}else{
    $addError          = 'true';
    $addErrorMessage[] = 'Error...';    
}

Спасибо заранее,

Ответ 1

Просто снимите знак подчеркивания:

$strProdSkuSup = $product->getSkuSupplier();  
$strProdSkuSup = $product->getData('sku_supplier'); //alternative 

Magento переводит snake_case в camelCase, когда вы хотите использовать магические геттеры; то есть. атрибут с кодом атрибута cool_custom_attribute будет переведен в coolCustomAttribute, т.е. $product->getCoolCustomAttribute().

Изменить:

Возможно, вам придется загружать модель продукта, как иногда мне приходилось сталкиваться с тем, что не все пользовательские атрибуты прилагаются, когда вы вытаскиваете ее из коллекции (по соображениям производительности, я думаю). Что-то вроде:

$_product = Mage::getModel('catalog/product')->load($product->getId());
$strProdSkuSup = $_product->getSkuSupplier();  

Кроме того, вы знали, что существует выделенный сайт StackExchange для Magneto?

Ответ 2

Используйте этот

$strProdSkuSup = $product->getSkuSupplier();

Вместо

$strProdSkuSup = $product->getSku_Supplier();