2014-10-16 2 views
1

Я использую karavan autosearch extention для magento1.7. и я хочу изменить метод поиска. В этой технике поиска, если мы предоставляем полное или частичное имя, поисковая система работает отлично. но я хочу, чтобы он работал для обратного имени. Я имею в виду, что если точное имя является «тестовым продуктом», то, если я использую «тест продукта», этот результат отобразит тот же продукт в раскрывающемся списке продуктов, что теперь стало пустым. Я отлаживаю его и обнаружил, что эта поисковая система также использует метод поиска по умолчанию magento. Любого вида идеи является acceptable.Please помочь мне .. Заранее спасибо ..Обратный поиск имени с использованием Kanavan Autosearch в Magento 1.7

ответ

1

расширения Karavan использует по умолчанию Magento модели поиска в качестве остова

приложения \ код \ Local \ Mage \ CatalogSearch \ Model \ Resource \ Search \ collection.php

Найти метод _getSearchEntityIdsSql() и изменить его как и нужно.

$words = array(); 
    if(str_word_count($this->_searchQuery)>1){ 
      $words = explode(" ",$this->_searchQuery); 
    } 
    $ifValueId = $this->getConnection()->getCheckSql('t2.value_id > 0', 't2.value', 't1.value'); 
    foreach ($tables as $table => $attributeIds) { 
     foreach($words as $word){ 
      $selects[] = $this->getConnection()->select() 
         ->from(array('t1' => $table), 'entity_id') 
         ->joinLeft(
          array('t2' => $table), 
          $this->getConnection()->quoteInto(
           't1.entity_id = t2.entity_id AND t1.attribute_id = t2.attribute_id AND t2.store_id = ?', 
           $this->getStoreId()), 
          array() 
         ) 
        ->where('t1.attribute_id IN (?)', $attributeIds) 
        ->where('t1.store_id = ?', 0) 
        ->where($resHelper->getCILike($ifValueId, $word, $likeOptions)); 
     } 
     if ($selects) { 
      $likeCond = '(' . join(' and ', $selects) . ')'; 
     } 

    } 

Некоторые, что нравится.

Примечание: НЕ переписывайте класс BAse

Смежные вопросы