OPENCART按类别搜索问题

时间:2015-08-14 23:34:03

标签: php search opencart2.x

我正在使用OPENCART 2.0,我需要弄清楚如何使搜索功能能够按类别搜索。现在它只允许按产品搜索。该网站是墨水和碳粉电子商务网站。许多客户不知道他们需要什么墨水,因此他们使用他们的打印机型号名称进行搜索。打印机型号名称是类别,因此我需要在搜索特定打印机时显示所有相应的墨盒。该网站是www.1stclassink.com

我一直在使用common.js文件,并且能够进行产品搜索,也可以使用产品描述进行搜索。但我不知道如何进入类别。任何帮助将不胜感激。

我一直在搞乱这段代码:

/* Search */
$('#search input[name=\'search\']').parent().find('button').on('click', function() {
    url = $('base').attr('href') + 'index.php?route=product/search';

    var value = $('header input[name=\'search\']').val();

    if (value) {

        url += '&search=' + encodeURIComponent(value) + '&description=true';  //search parameters

    }

    location = url;
});

2 个答案:

答案 0 :(得分:0)

我是php开发人员但是我还没有使用opencart。但是当我看到你的代码时,似乎对我有所了解。我认为这可行。试试这个:

$('#search input[name=\'search\']').parent().find('button').on('click', function() {
        url = $('base').attr('href') + 'index.php?route=product/search';

        var filter_name = $('input[name=\'filter_name\']').attr('value');

        if (filter_name) {
            url += '&filter_name=' + encodeURIComponent(filter_name);
        }

        location = url;
    });

    $('#header input[name=\'filter_name\']').bind('keydown', function(e) {
        if (e.keyCode == 13) {
            url = $('base').attr('href') + 'index.php?route=product/search';

            var filter_name = $('input[name=\'filter_name\']').attr('value');

            if (filter_name) {
                url += '&filter_name=' + encodeURIComponent(filter_name);
            }

            location = url;
        }
    });

,您的头文件将如下所示:

<div id="search">
    <div class="button-search"></div>
    <?php if ($filter_name) { ?>
    <input type="text" name="filter_name" value="<?php echo $filter_name; ?>" />
    <?php } else { ?>
    <input type="text" name="filter_name" value="<?php echo $text_search; ?>" onclick="this.value = '';" onkeydown="this.style.color = '#000000';" />
    <?php } ?>
  </div>
</div>

答案 1 :(得分:0)

您无法按名称搜索类别。 您可以做的是获取特定类别下的所有产品,因为您需要类别的ID (例如:category_id = 20下的所有产品):

index.php?route=product/search&search=&category_id=20

你需要做的是找到一种从搜索输入中获取类别ID的方法,我现在找不到一种简单的方法来做到这一点但你可以:

  • <强> 1。通过在catalog/model/catalog/category.php

    中添加一个函数来修改类别模型
    public function getCategoryByName($category_name) {
        $query = $this->db->query("SELECT category_id FROM ". DB_PREFIX . "category_description WHERE name LIKE '%".$category_name."%'");
    
        if(isset($query->row[0]['category_id'])) return $query->row[0]['category_id'];
        return false;
    }
    
  • <强> 2。修改index()内的catalog/contoller/product/search.php函数以查找Get参数 你会发送(例如&category=true),然后调用你的函数 getCategoryByName() [加载类别模型后]获取 category_id然后将其与index()的重新整合 功能。

  • <强> 2 即可。或者,创建一个控制器来处理AJAX请求,获取category_id并通过JQuery将其插入您的网址:

    “index.php?route = product / search&amp; search =&amp; category_id =”+ category_id

N.B:这是一个简单的代码,我没有对其进行测试,因此请确保它已为您的生产环境做好准备。