Magento - >如何列出具有相同的多选属性的产品?
问题描述:
我试图检索携带相同属性的产品。具体多选类型。看来基本的方法不起作用。只选择“名称”属性,我会列出所有产品。当我尝试过滤“shop_by_color”时,它会过滤掉,但不完全。不知道为什么它删除了一些并且留下了一些,即使它们是错误的。任何提示赞赏。Magento - >如何列出具有相同的多选属性的产品?
<?php
$model = Mage::getModel('catalog/product');
$collection = $model->getCollection();
$collection->addAttributeToSelect('name');
$collection->addAttributeToFilter('shop_by_color'); // multiple select attribute
$collection->addFieldToFilter(array(array('attribute'=>'shop_by_color','finset'=>array('Yellow, White'),
)));
$collection->load();
?>
<ul>
<?php foreach($collection as $product) : ?>
<li><a href="<?php echo $product->getProductUrl() ?>"><?php echo $product->getName() ?></a></li>
<?php endforeach; ?>
</ul>
答
嗨我不知道你的语法我从来没有见过这样的事情。
<ul>
<?php foreach($collection as $product) : ?>
<li><a href="<?php echo $product->getProductUrl() ?>"><?php echo $product->getName()
?></a></li>
<?php endforeach; ?>
</ul>
难道不应该是...
<ul>
<?php foreach($collection as $product) { ?>
<li><a href="<?php echo $product->getProductUrl() ?>"><?php echo $product->getName()
?></a></li>
<?php } ?>
</ul>
DC
答
<?php
$_productCollection=$this->getLoadedProductCollection();
$_productCollection->clear()
->addAttributeToSelect('*')
->addAttributeToFilter('type_id', array('eq' => 'simple'))
->addAttributeToSort('name', 'ASC')
->addAttributeToSort('created_at', 'ASC')
->load();?>
列表页面上,请使用此类型的过滤器收集它的正常工作。
显然是foreach():endforeach;是合法的语法。谁知道!我仍然不会使用它 – DeveloperChris 2010-01-04 03:01:33
感谢您尝试DeveloperChris。这个语法几乎是我看到用于Magento的。它工作正常,你认为你的方法会加快加载,如果实施网站范围内?我主要需要帮助的过滤选项。如果您熟悉Magento,我很感激任何帮助。 – monocat 2010-01-04 07:12:18
不,它不会对速度产生任何影响,编译时间可能会提高一小部分,但仅此而已。使用像eaccelerator这样的PHP加速器是一个不错的选择。对不起,我根本不知道magento。 要找到您的原始问题的来源,我会启用查询日志记录在MySQL(假设),然后看看发送到数据库的实际查询。如果返回正确的结果,那么你需要遍历代码来找到错误。 – DeveloperChris 2010-01-05 01:52:40