Результаты поиска Magento на моем пути - PullRequest
1 голос
/ 12 августа 2010

Я пытался изменить страницу результатов по умолчанию в magento, я хочу, чтобы товары группировались по категориям, они не включают в себя подкатегории, но товары, критерии поиска - это название товара, поэтому я былиспользуйте дефолтный простой поиск magento, пока нет результата, возможно, мне придется переопределить поиск и создать новый, я знаю, что с этим я могу получить все категории и его коллекцию товаров,

$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 Ответ

1 голос
/ 15 сентября 2010

После нескольких дней написания кода мне удалось получить список категорий с дочерними продуктами, я собираюсь поделиться своим кодом, может быть, это кому-нибудь поможет:

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 } } ?>

Вот пример того, как я показываюназвание категории с названием его товара в виде ссылки на страницу с описанием товара

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...