Устанавливайте цену продукта с помощью нескольких веб-сайтов


Я настроил свой Magento на 2 веб-сайта с идентификаторами 1 и 4 и по одному магазину для каждого веб-сайта.

Веб-сайт по умолчанию равен 1.

Мой продукт имеет цену по умолчанию.

Как я могу программно установить цену для веб-сайта 4, не касаясь веб-сайта 1?

Посмотрите, что я пробовал до сих пор:

$product = Mage::getModel('catalog/product')->loadByAttribute('sku', $sku);
$product->setWebsiteId(4)->setPrice($newPrice)->save();   

К сожалению, приведенный выше код оставляет неизменной цену для веб-сайта 4 и переопределяет цену по умолчанию для веб-сайта 1 с $newPrice!

Author: perissf, 2014-01-19

3 answers

Я должен был установить идентификатор магазина, а не идентификатор веб-сайта. Просто нужно было выбрать магазин, принадлежащий нужному сайту:

$product = Mage::getModel('catalog/product') -> loadByAttribute('sku', $sku);
$product->setStoreId(1) -> setPrice($price1) ->save() ;
$product->setStoreId(9) -> setPrice($price9) ->save();
 2
Author: perissf, 2014-01-19 09:52:12

Для этого вам понадобится приведенный ниже код

<?php
 $product = Mage::getModel('catalog/product')
        ->setStoreId($storeId)
        ->load($Id); 

 $product->setPrice('Yor price');
 $product->save();
 unset($product);
 ?>
 1
Author: Keyul Shah, 2014-01-19 09:52:24

Я делал именно это в последней версии (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);
 1
Author: pweightman, 2017-01-14 13:20:26