Magento展示了制造商的最新产品

时间:2013-03-12 15:47:07

标签: php magento magento-1.7

我正在尝试从特定制造商处获取最新的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; ?>
谢谢。

3 个答案:

答案 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; ?>