从Magento中选择多选属性,从类别加载所有产品并过滤

时间:2017-02-06 10:27:08

标签: php magento

我的Magento 1.9安装中有两个多选属性(带有各自的选项),如下所示:

  • 制造商A
  • 制造商B
  • 制造商C

模型

  • A型
  • B型
  • C型

我有一些产品有多个产品" make"和"模型"。

如何加载特定类别的所有产品,并按照Magento中具有特定选定多选属性选项的产品进行过滤?

我正在尝试加载存在这种情况的产品:

root_path

这是我到目前为止所尝试的:

# reproducible example
root_path <- "temp"

dirs <- file.path(root_path, c(paste('V', 1:20, sep = '')))

for(fpath in dirs)
{
  dir.create(path = fpath, recursive = TRUE )

  sub_dirs <- file.path(fpath, c(paste('sim_types', 1:2, sep = '')))
  for( sfpath in sub_dirs){
    dir.create(path = sfpath, recursive = TRUE )
    file.create(file.path(sfpath, 'Calc.txt'))
  }
}

如果产品只有一个&#34; make&#34;和&#34;模型&#34;选择的选项,它似乎显示。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我已经解决了这个问题:

// Load category products having selected "Make" & "Model"
$products = Mage::getModel('catalog/category')
    ->load($load_from_category)
    ->getProductCollection()
    ->addAttributeToSelect('*')
    ->addAttributeToFilter(array(array('attribute' => $make_attribute_code, 'finset' => array($make_option_id))))
    ->addAttributeToFilter(array(array('attribute' => $model_attribute_code, 'finset' => array($model_option_id))))
    ->joinField(
        'qty',
        'cataloginventory/stock_item',
        'qty',
        'product_id=entity_id',
        '{{table}}.stock_id=1',
        'left'
    );