Как получить ценовую область "все виды магазинов" для продукта
У меня есть 3 веб-сайта, каждый с одним магазином и одним видом магазина.
У меня есть коллекции всех продуктов, основанные на магазине, я изменяю цены для каждого продукта, используя API magento в скрипте, но для этого мне нужно использовать цену, хранящуюся в области "все виды магазинов" для расчета.
Я получаю всю коллекцию товаров из каждого магазина с помощью следующей функции:
protected function getProductCollectionByStoreId($storeId)
{
$productCollection = $this->objectManager
->create('Magento\Catalog\Model\ResourceModel\Product\CollectionFactory');
$collection = $productCollection->create()
->addAttributeToSelect('*')
->addStoreFilter($storeId)
->load();
return $collection;
}
А затем я обновляю цены на каждую коллекцию продуктов на основе магазина:
protected function setProductPricesBasedOnStoreWithoutRest($stores){
foreach($stores as $storeData){
$storeId = $storeData[0];
$storeCode = $storeData[1];
$multiplier = $storeData[3];
$currencyRate = $storeData[4];
$productCollection = $this->getProductCollectionByStoreId($storeId);
foreach($productCollection as $product){
// ...
$price = $product->getPrice();
$newPrice = round(ceil(($price * $multiplier) / $currencyRate), 2);
// ...
}
}
}
$price
необходимо получить значение, сохраненное в цене "все просмотры магазина" (показано на изображении), а не цену в области просмотра магазина продукта. Какой самый простой способ получить это значение?
1 answers
Вы можете получить цену магазина или базового магазина (обычно магазин 0 [Идентификатор магазина]) с помощью ресурса:
$resource = $product->getResource();
$priceBaseStore = $resource->getAttributeRawValue($product->getId(),'price', 0 );
$SpecialPriceBaseStore = $resource->getAttributeRawValue($product->getId(),'special_price', 0 );
$priceStore1 = $resource->getAttributeRawValue($product->getId(),'price', 1 );
$specialPriceStore1 = $resource->getAttributeRawValue($product->getId(),'special_price', 1 );