2016-04-09 21 views
1

Magentoインストールの管理領域でカタログ検索の拡張機能を使用して検索結果を改善しました。Magento管理者によるカタログ検索任意の順序で検索結果から検索結果

「Logitech Wireless USB keyboard and mouse」という製品名で「wireless mouse」を検索した場合、製品が表示されますが、「usb mouse keyboard」を検索すると表示されません。その順序で出現しない。私が現在の検索を変更するために使用したコードは以下の通りです。

protected function _addColumnFilterToCollection($column){ 

    $cond = $column->getFilter()->getCondition(); 

    if ($column->getId() == "name" && isset($cond)) { 

     $filterOrig = $cond['like']; 
     $filterReplaced = str_replace(" ", "%", $filterOrig); 
     $newZendDbExpr = new Zend_Db_Expr($filterReplaced); 
     $modifCond = array('like'=>$newZendDbExpr); 
     $this->getCollection()->addFieldToFilter($column->getId() , $modifCond); 

    }elseif ($column->getId() == 'websites') { 
     $this->getCollection()->joinField('websites', 
     'catalog/product_website', 
     'website_id', 
     'product_id=entity_id', 
     null, 
     'left'); 
    }else{ 
     parent::_addColumnFilterToCollection($column); 
    } 

    return $this; 

} 

答えて

0

あなたは条件をループはすべきであり、毎期のためようを追加します。私はこのような何かをしたでしょう:

if ($column->getId() == "name" && isset($cond)) { 

    $filtersOrig = explode(' ', $cond['like']); 

    foreach ($filtersOrig as $filterOrig) { 
     $filterReplaced = '%' . $filterOrig . '%'; 
     $newZendDbExpr = new Zend_Db_Expr($filterReplaced); 
     $modifCond = array('like'=>$newZendDbExpr); 
     $this->getCollection()->addAttributeToFilter($column->getId() , $modifCond); 
    } 

} 
+0

こんにちは、返信ありがとうございます。それはうまくいくはずですが、私はコードを修正して、結果には影響しませんでした。私はどのようなアイデアをキャッシュなどをクリアしましたか?ありがとうございました。 – Shaun

+0

誰もこれについてこれ以上アイデアを持っていますか?上記は違いがないようですが、そうすべきです。 – Shaun

+0

これは私のプロジェクトの1つですでに行っているもので、うまくいきます。唯一の違いは、 'カタログ/製品'が** EAV **モデルであるため、私は 'addAttributeToFilter()'を使用したことです。私は私のポストでそれを修正しました。 –