【问题标题】:Magento: How to search for products in category by name in mini searchMagento:如何在迷你搜索中按名称搜索类别中的产品
【发布时间】:2015-11-25 10:28:07
【问题描述】:

我想在 Magento 的迷你搜索表单中搜索类别。

但不是带有类别列表的下拉列表。 就在我在迷你搜索表单中输入一个类别的名称时,它应该会显示该类别之外的产品。

例子:

我搜索“pullover”,即使搜索字符串(“pullover”)与标题和描述不匹配,结果也应包括任何具有类别 pullover 的产品,以及与正常搜索过滤器匹配的所有产品并且不在套头衫类别中


更新 1

我想我必须挂钩Mage_CatalogSearch_Model_Resource_Fulltext的方法prepareResult()

有一个块,其中定义了一个 $select 对象:

$select = $adapter->select()
            ->from(array($mainTableAlias => $this->getMainTable()), $fields)
            ->joinInner(array('e' => $this->getTable('catalog/product')),
                'e.entity_id = s.product_id',
                array())
            ->where($mainTableAlias.'.store_id = ?', (int)$query->getStoreId());

有谁知道我也可以搜索类别吗?

这是正确的方法吗?

【问题讨论】:

  • 你的问题不够清楚。您想删除 magento 的默认功能,然后按类别名称添加您的搜索产品吗?您需要覆盖目录搜索模块的 ResultController 并添加您的代码。在您的代码加载类别集合中并获取它的产品并附加到搜索集合中。
  • 我在我的问题中添加了一个示例
  • 您在寻找类别和产品搜索吗?如果只有类别搜索,则创建您自己的模块,否则覆盖目录搜索核心模块。
  • 我想重写catalogsearch核心模块,但是我没有找到我必须挂钩的方法...

标签: php magento search zend-framework


【解决方案1】:

为了实现这一点,我做了很多努力。 这是我的问题的第一个“hacky”解决方案:

我覆盖Mage_CatalogSearch_Model_Resource_Fulltext->_prepareProductIndex()

在对 in_stock 的测试和我插入的退货之间,我插入了类似的内容:

    $query = "
        SELECT `cv`.`value`
        FROM `catalog_category_entity_varchar` AS `cv`
        LEFT JOIN `catalog_category_product` AS `ccp`
        ON (`ccp`.`category_id` = `cv`.`entity_id`)
        WHERE `ccp`.`product_id` = " . $this->_getReadAdapter()->quote($productData['entity_id']) . "
        AND `cv`.`store_id` = " . $this->_getReadAdapter()->quote($queryStoreId) . "
        AND `cv`.`attribute_id` = (
            SELECT `attribute_id` FROM `eav_attribute` WHERE `attribute_code` = 'name' AND `entity_type_id` = 3
        );
    ";

    $categories = array();

    foreach ($this->_getReadAdapter()->fetchAll($query) as $result)
        $categories[] = html_entity_decode($result['value']); // HACK!!!

    $index['categories'] = $categories;

下一步是将其放入辅助函数并抽象表名。

也许会有人觉得这很有帮助:-)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-16
    • 1970-01-01
    • 2014-10-04
    • 1970-01-01
    • 2014-06-22
    • 2021-12-31
    • 1970-01-01
    相关资源
    最近更新 更多