Загрузить продукт для определенного store view

[16 июля 2019 г.]    Российская сборка Magento 2.52.2
Magento 2: модули и услуги
magereport.com: составление перечня необходимых для установки заплаток SUPEE
#1 Евгений Смирнов
  • Группа: Заблокирован
  • Сообщений: 81
  • Регистрация: 03.03.2011

27.04.2011 11:40

Имеется один магазин, 3 языка.
Надо изменить продукты только на 2 языках, на 3 оставить без изменений.
То есть должно получиться что-то вроде такого:


$products = Mage::getModel('catalog/product')->getCollection()
->addAttributeToSelect('*')
->addAttributeToFilter($paramName,array('in'=>array($viewIds)));;


Но что за $paramName для Store view?

#2 Евгений Смирнов
  • Группа: Заблокирован
  • Сообщений: 81
  • Регистрация: 03.03.2011

27.04.2011 12:04

Пришла в голову ещё одна идея, сейчас буду проверять: продукт-то один тот же, меняются аттрибуты от view к view.

#3 Евгений Смирнов
  • Группа: Заблокирован
  • Сообщений: 81
  • Регистрация: 03.03.2011

27.04.2011 12:27

Моя задача раскрыта тут:

http://www.magentocommerce.com/boards/viewthread/55480/


Имеем аттрибут. К примеру, имя. Нужно чтобы в сторе вью 1 имя было А, а в сторе вью 2 имя было Б.

#4 Дмитрий Федюк
  • Администратор
  • Иконка
  • Группа: Администратор
  • Сообщений: 8995
  • Регистрация: 20.02.2010

27.04.2011 12:39

Как изменить значение атрибута товара только для одной конкретной витрины

#5 Евгений Смирнов
  • Группа: Заблокирован
  • Сообщений: 81
  • Регистрация: 03.03.2011

27.04.2011 13:02

Демо магазин. 166 - HTC TOUCH DIAMOND
$frenchDemoStoreCode = 'french';
$productId = 166;
$productNameForFrenchStore = 'Petits Fours au Beurre';
$frenchDemoStore = Mage::app()->getStore ($frenchDemoStoreCode);
$product = Mage::getModel ("catalog/product");

$product->load ($productId)
    ->setData ('store_id', $frenchDemoStore->getId ())
    ->setData ('name', $productNameForFrenchStore)
    ->save ();	


Запустил код.
Результат:
Данный продукт теперь имеет в Default values $productNameForFrenchStore, поэтому English и German так как галочки стоят, то имеют такие же названия. Во френч сторе галочка убрана, и имеется значение $productNameForFrenchStore.
Проблема в том, что нужно оставить дефалт без изменения.

#6 Дмитрий Федюк
  • Администратор
  • Иконка
  • Группа: Администратор
  • Сообщений: 8995
  • Регистрация: 20.02.2010

27.04.2011 13:19

А вы попробуйте поставить setData ('store_id', $frenchDemoStore->getId ()) перед load.

#7 Евгений Смирнов
  • Группа: Заблокирован
  • Сообщений: 81
  • Регистрация: 03.03.2011

27.04.2011 13:22

На данный момент для меня сработало следующее:

$frenchDemoStoreCode = 'french';
$productId = 166;
$productNameForFrenchStore = 'Petits Fours au Beurre';
$frenchDemoStore = Mage::app()->getStore ($frenchDemoStoreCode);
$product = Mage::getModel ("catalog/product");

$product->load ($productId)
    ->setData ('store_id', $frenchDemoStore->getId ())
    ->setData ('name', $productNameForFrenchStore)
    ->save ();
	
$product->load ($productId)
    ->setData ('store_id', 1)
    ->setData ('name', 'HTC Touch Diamond')
    ->save ();		


Где 1 это дефалт стор.

Сейчас попробую ваше предложение.

#8 Евгений Смирнов
  • Группа: Заблокирован
  • Сообщений: 81
  • Регистрация: 03.03.2011

27.04.2011 13:30

$frenchDemoStoreCode = 'french';
$productId = 166;
$productNameForFrenchStore = 'Petits Fours au Beurre';
$frenchDemoStore = Mage::app()->getStore ($frenchDemoStoreCode);
$product = Mage::getModel ("catalog/product");

$product->setData ('store_id', $frenchDemoStore->getId ())
		->load ($productId)
		->setData ('name', $productNameForFrenchStore)
		->save ();


Не сработало.

Поделиться темой: