Устанавливайте цену продукта с помощью нескольких веб-сайтов
Я настроил свой Magento на 2 веб-сайта с идентификаторами 1 и 4 и по одному магазину для каждого веб-сайта.
Веб-сайт по умолчанию равен 1.
Мой продукт имеет цену по умолчанию.
Как я могу программно установить цену для веб-сайта 4, не касаясь веб-сайта 1?
Посмотрите, что я пробовал до сих пор:
$product = Mage::getModel('catalog/product')->loadByAttribute('sku', $sku);
$product->setWebsiteId(4)->setPrice($newPrice)->save();
К сожалению, приведенный выше код оставляет неизменной цену для веб-сайта 4 и переопределяет цену по умолчанию для веб-сайта 1 с $newPrice
!
3 answers
Я должен был установить идентификатор магазина, а не идентификатор веб-сайта. Просто нужно было выбрать магазин, принадлежащий нужному сайту:
$product = Mage::getModel('catalog/product') -> loadByAttribute('sku', $sku);
$product->setStoreId(1) -> setPrice($price1) ->save() ;
$product->setStoreId(9) -> setPrice($price9) ->save();
Для этого вам понадобится приведенный ниже код
<?php
$product = Mage::getModel('catalog/product')
->setStoreId($storeId)
->load($Id);
$product->setPrice('Yor price');
$product->save();
unset($product);
?>
Я делал именно это в последней версии (1.9.3.1), и единственный способ заставить ее работать - установить и отменить идентификатор магазина, как показано ниже, это было сделано для того, чтобы я мог опубликовать другую цену в магазине 2 по сравнению со всеми другими магазинами (10 в этой системе)
Mage::app()->setCurrentStore(2);
$product = Mage::getModel('catalog/product')->loadByAttribute('sku', $this->p_sku);
if ($product) {
$product->setData('price', 19.99);
$product->save();
}
Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID);