代码之家  ›  专栏  ›  技术社区  ›  Castro Roy

Magento搜索结果到我的方式

  •  1
  • Castro Roy  · 技术社区  · 14 年前

    我知道用这个我可以得到所有的分类和它的产品集合,

    $categories = Mage::getModel('catalog/category')
    ->getCollection()
    ->addAttributeToSelect('*');    
    
    foreach($categories as $category)
    {
        $array = $category->getParentIds();
        $children = explode(',',$category->getChildren());
        $products = $category->getProductCollection();
    }
    

    但我需要按产品名称过滤,我要显示的结果如下

    Category I  
        - Product I  
        - Product II  
    Category II  
        - Product III  
        - Product IV  
    
    1 回复  |  直到 14 年前
        1
  •  1
  •   bahrep Jeff Fohl    11 年前

    经过几天的编码,我得到了一个包含子产品的分类列表,我将分享我的代码,也许它会帮助某些人:

    public function getProducts(){
        $categories=Mage::getModel('catalog/category')->getCollection();
        $result;
        foreach($categories as $cat)
        {
            $temp = null;
            $_temp = null;
            $are = false;
            $_cat = $cat->load();
            $temp['category'] = $_cat->getName();
            $prod = $_cat->getProductCollection()
                         ->addAttributeToFilter('name', array('like'=>'%'.$this->getRequest()->getParam('q').'%'));
            foreach($prod as $p){
                //die(print_r($p->load()));
                $_temp[] = $p->load();
                $are = true;
            }
            if($are){
                $temp[] = $_temp;
                $result[] = $temp;
            }
        }
        return $result;
    }
    

    我把这个函数放在自定义模块的一个块中,这个函数返回一个数组,每个位置有另一个数组,然后在 .phtml

    <?php $productsResult = $this->getProducts();
    if(count($productsResult)+count($prodnorelatedResult)>0){ ?>
        <h2>Products</h2>
            <?php foreach($productsResult as $p){ ?>
        <h3><?php echo $p['category'] ?></h3>
        <?php foreach($p[0] as $_p){ ?>
            <div><a href="<?php echo $_p->getProductUrl()?>"><?php echo $_p->getName() ?></a></div><br/>
        <?php } ?>
        <br/>
    <?php } } ?>
    

    下面是一个示例,说明如何使用产品名称显示类别的名称,并将其作为指向产品详细信息页面的链接