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

+1

显然是foreach():endforeach;是合法的语法。谁知道!我仍然不会使用它 – DeveloperChris 2010-01-04 03:01:33

+1

感谢您尝试DeveloperChris。这个语法几乎是我看到用于Magento的。它工作正常,你认为你的方法会加快加载,如果实施网站范围内?我主要需要帮助的过滤选项。如果您熟悉Magento,我很感激任何帮助。 – monocat 2010-01-04 07:12:18

+0

不,它不会对速度产生任何影响,编译时间可能会提高一小部分,但仅此而已。使用像eaccelerator这样的PHP加速器是一个不错的选择。对不起,我根本不知道magento。 要找到您的原始问题的来源,我会启用查询日志记录在MySQL(假设),然后看看发送到数据库的实际查询。如果返回正确的结果,那么你需要遍历代码来找到错误。 – DeveloperChris 2010-01-05 01:52:40

<?php 
$_productCollection=$this->getLoadedProductCollection(); 
$_productCollection->clear() 
->addAttributeToSelect('*') 
->addAttributeToFilter('type_id', array('eq' => 'simple')) 
->addAttributeToSort('name', 'ASC') 
->addAttributeToSort('created_at', 'ASC') 
->load();?> 

列表页面上,请使用此类型的过滤器收集它的正常工作。