Поиск по названию категории - PullRequest
3 голосов
/ 27 августа 2010

Когда я пытаюсь выполнить поиск по названию категории, он ничего не возвращает. Например, у меня есть категории «Органический», «Уникальный», «Бобовые» и т. Д., И в поиске я набираю «Уникальный». Но я не получаю результатов.

Ответы [ 3 ]

7 голосов
/ 11 сентября 2010

К сожалению, поисковая система Magento по умолчанию является поиском по продукту и ограничена этой областью.При поиске «Уникальный» он ищет название продукта и, возможно, описание в зависимости от вашей конфигурации.

Быстрое решение состоит в отображении списка соответствующих категорий вместе с результатами продукта.

<?php
    $searchTerm = $this->helper('catalogSearch')->getEscapedQueryText();
    $categories = $this->helper('catalog/category')->getStoreCategories(false, true);
    $count = 0;
    foreach ($categories as $count_category) {
        if ($this->helper('catalog/category')->canShow($count_category) && stripos($count_category->getName(), $searchTerm) !== false) 
               $count++;
    }

    if ($count > 0):

    echo "<div class=\"search-term-notice\">";
    echo "The following product categories matched your search:";

    foreach ($categories as $category) {
        if ($this->helper('catalog/category')->canShow($category) && stripos($category->getName(), $searchTerm) !== false) 
            echo "<h3> > <a href='".$category->getUrl()."'>".$category->getName()."</a></h3></p>";
    }
    echo "</div>";
    endif;?>

Источник: http://www.magentocommerce.com/boards/viewthread/74632/

0 голосов
/ 03 января 2017

Вы можете искать категории, используя фильтр LIKE, как показано ниже

 $categories = Mage::getModel('catalog/category')->getCollection()
    ->addAttributeToSelect('url')
    ->addAttributeToSelect('name')
    ->addAttributeToFilter('name',array(array('like' => '%'. $searchvariable.'%')));

Вывод результатов

foreach ($categories as $cat) {
  echo '<div><a href="'.$cat->getUrl().'">' . $cat->getName() . '</a></div>';
}
0 голосов
/ 05 мая 2013

Возможно, вы ищете метод addAttributeToFilter. например,

$categories = Mage::getModel('catalog/category')->getCollection()
->addAttributeToSelect('id')
->addAttributeToSelect('name')
->addAttributeToFilter('name',$name);

Затем вы можете работать с возвращенной коллекцией, например,

foreach ($categories as $cat) {
  echo 'Name: ' . $cat->getName() . "<br />";
  echo 'Category ID: ' . $cat->getId() . "<br />";
}

Это работает как минимум в Magento CE 1.7.0.1.

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