Magento 获取某类别下的产品

来源:互联网 发布:抗风设计软件 编辑:程序博客网 时间:2024/05/22 08:27

<?
require_once 'app/Mage.php';
   Mage::app('default');
 
   $category = Mage::getModel('catalog/category')->load(3);
 
    $productCollections = $category->getProductCollection();
 $productCollections->addAttributeToSelect('name');


  foreach($productCollections AS $productCollection) {
   echo $productCollection->getName();
      echo "<br/>";
   }

?>

 


magento的首页是通过cms实现的静态页,我想如果我们去修改magento的routers应该是可以不让magento默认进入cms页面,而直接进入产品页面。不过目前我还没去试。我们也可以直接在cms页面中直接添加block实现在cms页面显示产品的目的:

首先,登陆后台,进入到cms --- manage page

然后,编辑当前启用的home page页

{{block type = "catalog/product_list" category_id="xx" template = "catalog/product/homepage.phtml" }}
这样是可以将某一类产品放到首页上去,然而经常碰到用户说他想要挑几个特定的产品放到首页上去。一直也没去想,因为以前就知道这样做肯定是可以的,而且总是从编程的角度去思考,总是想我只需要在magento的product/list block中加一点过滤条件就可以,而且确实是可以的,实现步骤如下:

1,在用户添加产品之前,为用户所使用的attributte set添加一个属性(如,show_on_homepage,名称可自定),这个属性类型设置为yesno类型,当值为yes时在首页显示,即如果用户想在首页显示这个产品就把这个设置成yes.

2.创建一个自己的module,它只包含一个block。然后在block中添加代码对product collection进行筛选。当然也可以直接将这个block放到catalog模块的相应目录下,把模板放到相关的主题目录模板下。

$products   = $product->setStoreId($storeId)->getCollection()
            ->addAttributeToFilter('show_on_homepage', array('yes'=>true))

显然,上面的方面必须是在用户末添加产品时就得做,万一用户已经添加完很多产品什么办?还是有办法的。因为product list block可以显示某一类的产品,所以我们如果不想修改代码,可以设置一个新的子类,注意不要将它设置为active(除非你想在首页的菜单中看到这个类)。然后将这个子类的id传递给product list block,之后,就让用户选择他要放在首页的产品了,并把这些产品指定到这个类下面,这可是利用了magento 的一个产品可以指定给多个分类的特点。