Добавление разных наименований товаров для разных сайтов программно - PullRequest
0 голосов
/ 05 апреля 2011

У меня есть два сайта для определенных видов магазина - английский и немецкий.Обычно я мог бы поддерживать 1 веб-сайт с двумя различными представлениями магазина, но это было конкретное требование моего клиента - иметь каждый веб-сайт для каждого конкретного представления магазина.

Проблема в том, что я не могу обновить / создатьразличные названия продуктов / описания, каждое для веб-сайта продукта, программно.Для этого я использую этот код, который, как мне показалось, одинаков для другой цены: -

$combinationWebsiteWithName = array('1' => 'product name 1', '2' => 'product name 2');

foreach ($combinationWebsiteWithName as $_eachWebsiteId => $_eachProductName) {
    $objWebsite = Mage::getModel('core/website')->load($_eachWebsiteId);
    $storeIds = $objWebsite->getStoreIds();
    $objProduct = Mage::getModel('catalog/product')
                  ->setStoreId(end($storeIds))
                  ->load($productId);
    $objProduct->setName($_eachProductName);
    $objProduct->save();
}

Может кто-нибудь помочь мне и найти ошибки в приведенном выше коде?Заранее спасибо.

1 Ответ

1 голос
/ 06 апреля 2011

В конце концов, я узнал, что там было не так, и вот ответ: -

Mage::app()->setCurrentStore(Mage::getModel('core/store')->load(Mage_Core_Model_App::ADMIN_STORE_ID));

foreach ($websiteWiseProductNameArray as $_eachWebsiteId => $_eachProductName) {
    $objWebsite = Mage::getModel('core/website')->load($_eachWebsiteId);
    $storeIds = $objWebsite->getStoreIds();

    foreach ($storeIds as $_eachStoreId) {
        $objProduct = Mage::getModel('catalog/product')
                            ->setStoreId($_eachStoreId)
                            ->load($productId);
        $objProduct->setData($targetAttrCode, $_eachProductName);
        $objProduct->save();

        unset($objProduct);
    }

    unset($storeIds, $objWebsite);
}

Последней неожиданной областью изменения для меня было присвоение идентификатора магазина идентификатору области администратора, используя следующий код: "Mage::app()->setCurrentStore(Mage::getModel('core/store')->load(Mage_Core_Model_App::ADMIN_STORE_ID));"

...