Получить все идентификаторы продуктов, связанные с правилом цены каталога в Magento - PullRequest
5 голосов
/ 26 февраля 2012

Мне нужен способ получения идентификаторов продуктов, связанных с продвижением правила цены каталога (например, 50% цены всех товаров в категории ВЕЛОСИПЕДЫ). Я хотел бы сделать это без необходимости перебирать всю базу данных продукта.

Я знаю, что есть функция с именем getRuleProductIds($ruleID), которая должна возвращать массив идентификаторов продуктов по идентификатору правила, но я не знаю, где его использовать, с какой коллекцией связать его и т. Д.

У меня есть следующий код в шаблоне products_in_promotion.phtml:

<?php 
  $rules = Mage::getModel('catalogrule/rule');
  $collection = $rules->getCollection();
  $sale_items = $collection->getRuleProductIds(1); # ??????? this throws an error
?>

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

Есть идеи, что я здесь не так делаю?

Ответы [ 3 ]

7 голосов
/ 26 февраля 2012

Вам не нужно получать его как коллекцию. Просто загрузите нужное правило и используйте getMatchingProductIds, как указано в Mage_CatalogRule_Model_Rule (он же catalogrule/rule).

$catalog_rule = Mage::getModel('catalogrule/rule')->load(1);  // Rule ID
$skus = $catalog_rule->getMatchingProductIds();

var_dump($skus);

НТН

1 голос
/ 13 мая 2016

Если у вас в магазине много товаров, то это эффективный способ.Вы можете добавить website_id, custom_group_id, где класс будет более конкретным.

$resource = Mage::getSingleton('core/resource');
$connection = $resource->getConnection('core_read');
$tableName = $resource->getTableName('catalogrule_product');
$productIdList = $connection->fetchAll('SELECT product_id as product_id FROM '.$tableName.' WHERE rule_id = 1);
0 голосов
/ 01 января 2016

Это сработало для меня после добавления фильтра веб-сайта в код, предложенный seanbreeden.

$catalog_rule = Mage::getModel('catalogrule/rule')->load(1);  // Rule ID
$catalog_rule->addWebsiteFilter('1');
$skus = $catalog_rule->getMatchingProductIds();

var_dump($skus);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...