2012-06-16 2 views
1

При чтении всех продуктов magento для расширения экспорта я столкнулся с проблемой: при попытке получить имя продукта с помощью getName() на загруженной модели, вы получаете только имя активного языка или если это не задано по умолчанию для продукта. Но мне нужно получить все названия продуктов по умолчанию, на английском, немецком, французском и т. Д. У кого-нибудь есть решение этой проблемы или идея, как ее решить?Magento - Получить название продукта для всех языков

$model  = Mage::getModel('catalog/product'); 
$collection = $model->getCollection(); 
foreach ($collection as $product) { 
    $id = $product->getId(); 
    $model->load($id); 
    $name = $model->getName(); // gives you only the active language name/default name 
} 

ответ

3

Поскольку вы также хотите default магазин, я знаю только одного рабочего пути:

$aStoreHash = Mage::getModel('core/store') 
    ->getCollection() 
    ->setLoadDefault(true) 
    ->toOptionHash(); 

$aName = array(); 

foreach ($aStoreHash as $iStoreId => $sStoreName) { 
    Mage::app()->setCurrentStore($iStoreId); 
    $oCollection = Mage::getModel('catalog/product') 
     ->getCollection() 
     // Uncomment next line for testing if you have thousands of products 
     // ->addFieldToFilter('entity_id', array('from' => 1, 'to' => 5)) 
     ->addAttributeToSelect('name'); 
    foreach ($oCollection as $oProduct) { 
     $aName[$oProduct->getId()][$iStoreId] = $oProduct->getName(); 
    } 
} 
var_dump($aName); 

Если вы не нуждаетесь в default магазине, вы можете упасть Mage::app()->setCurrentStore($iStoreId); и использовать ->addStoreFilter($iStoreId) на вместо коллекции.

+0

Спасибо, это именно то, что я искал. – Nightmares

Смежные вопросы