我正在尝试从特定制造商处获取最新的3种产品。我正在尝试这样做的地方是产品页面,所以我要找到与产品相关的制造商并展示最新产品。
这是我到目前为止所获得的代码,它可以正常显示随机产品取决于我放入->addAttributeToFilter()
的数字。
->addAttributeToFilter()
是否真的可以过滤制造商?如果没有,还应该用什么来使它工作?
<?php $_productCollection = Mage::getResourceModel('reports/product_collection')
->addAttributeToSelect('*')
//->addAttributeToFilter('manufacturer', 23)
->addAttributeToFilter(array(array('attribute'=> 'manufacturer', 18)))
->setVisibility(array(2,3,4))
->setOrder('created_at', 'desc')
->setPage(1, 3); ?>
<?php foreach($_productCollection as $_product) : ?>
<li class="arrowksleeper">
<div class="menugridprodcont">
<div><a href="<?php echo $_product->getProductUrl(); ?>"><img src="<?php echo $this->helper('catalog/image')->init($_product, 'small_image')->resize(170, 100); ?>" alt="" /></a></div>
<div id="menugridprodtitle"><a href="<?php echo $_product->getProductUrl(); ?>" title="<?php echo $_product->getName(); ?>"><?php echo $_product->getName(); ?></a></div>
</div>
</li>
<?php endforeach; ?>
谢谢。
答案 0 :(得分:0)
addAttributeToFilter的工作原理是传递属性名称,然后传递一个数组来描述你想要如何过滤它(除非你传递'null'
或'notnull'
而不是数组。你可能想要更像这样的东西。
addAttributeToFilter('manufacturer', array('eq' => 18));
完整的工作代码。这假定'18'是制造商的有效属性。您可以通过检查Catalog-&gt; Attributes-&gt; ManageAttributes-&gt; Manufacturer-&gt; Labels的表单来实际获得这些。
$col = Mage::getModel('catalog/product')->getCollection()
->addAttributeToSelect('*')
->addAttributeToFilter('manufacturer', array('eq'=> 18))
->setOrder('created_at', 'desc')
->setPage(1, 3);
答案 1 :(得分:0)
您为什么使用报告集?这不会加载制造商属性,使用主要产品集合......
试试这个:
$collection = Mage::getModel('catalog/product')->getCollection();
$collection->addAttributeToSelect('*');
$collection->addAttributeToSelect('manufacturer');
//$collection->addFieldToFilter(array(
// array('name' => 'manufacturer', 'eq' => 'ibm'),
//));
$collection->addAttributeToFilter('manufacturer', array('eq' => 99));
$collection->setOrder('created_at', 'desc');
$collection->setCurPage(1)->setPageSize(5); // first 5 products..
foreach($collection as $product) {
// ..
}
答案 2 :(得分:0)
非常感谢Andrew和Jared花时间试图帮助我。不幸的是,他们提供的脚本不适用于ME(这并不意味着他们的脚本不适合你)所以我也在下面发帖,我是如何管理它的。
为了工作,下面的脚本应放在app/design/frontend/default/YOUR-THEME/template/catalog/product/view.phtml
<?php
$manuId = $_product->getManufacturer(); // getting manufacturer's id
$_productCollection = Mage::getResourceModel('reports/product_collection')
->addAttributeToSelect('*')
->addAttributeToFilter('manufacturer', array('eq'=> $manuId)) // $manuId: printing manufacturer's id
->setVisibility(array(2,3,4))
->setOrder('created_at', 'desc')
->setPage(1, 3); ?>
<?php foreach($_productCollection as $_product) : ?>
<div>
<div><a href="<?php echo $_product->getProductUrl(); ?>"><img src="<?php echo $this->helper('catalog/image')->init($_product, 'small_image')->resize(170, 100); ?>" alt="" /></a></div>
<div><a href="<?php echo $_product->getProductUrl(); ?>" title="<?php echo $_product->getName(); ?>"><?php echo $_product->getName(); ?></a></div>
</div>
<?php endforeach; ?>