Помощь Поиск по тегам в Opencart 1.5.5.x

Тема в разделе "Opencart", создана пользователем Anton_Fadeev, 31 авг 2015.

Информация :
Внимание форумчане! При создании тем, или выкладывании какой-либо информации проверьте в какой ветке форума вы находитесь! Не путайте Opencart и Opencart2. При несоблюдении данного условия выносится соответствующее наказание! И потом не говорите что вас НЕ ПРЕДУПРЕЖДАЛИ! По возможности используйте обменники mail, yandex, google, dropbox, rghost Дабы избежать просьб перезалить и проблем с рекламой!
Модераторы: ZiX
  1. Anton_Fadeev

    Anton_Fadeev Постоялец

    Регистр.:
    3 фев 2014
    Сообщения:
    50
    Симпатии:
    10
    Родной поиск в опенкарте умеет искать товары по тегам, но делает это не очень хорошо. Например если указать теги у товара: "красный, желтый, зеленый" и потом в поиске ввести: "желтый, красный" или "красный желтый", то он его не найдет. А хотелось бы, чтобы он делил запрос на слова и сопоставлял с тегами в любой последовательности.

    Никто этим не заморачивался? Может модули есть, которые заменяют родной поиск и там это реализовано?

    Все - нашел решение. Тему можно закрывать!
     
    Последнее редактирование модератором: 3 сен 2015
  2. Anton_Fadeev

    Anton_Fadeev Постоялец

    Регистр.:
    3 фев 2014
    Сообщения:
    50
    Симпатии:
    10
    Файл:
    Код:
    catalog/model/catalog/product.php
    Ищем:
    Код:
    $sql .= "pd.tag LIKE '%" . $this->db->escape($data['filter_tag']) . "%'"
    Меняем ее на:
    Код:
    $implode_tag = array();
    $words_tag = explode(' ', trim(preg_replace('/\s\s+/', ' ', $data['filter_tag'])));
    foreach ($words_tag as $word_tag) {
    $implode_tag[] = "pd.tag LIKE '%" . $this->db->escape($word_tag) . "%'";
    }
    
    if ($implode_tag) {
    $sql .= " " . implode(" OR ", $implode_tag) . "";
    }