Magentoクイック検索で条件付きのカスタム属性を調べますか?


8

Magentoクイック検索文字列に整数がある場合、製品のSKUとカスタム属性を検索するという要件があります。ただし、検索文字列に整数がない場合は、製品の名前と説明を検索して検索します。

クエリ文字列が含ま12345れているとしましょう。次に、製品属性SKUと他のいくつかのカスタム属性でLIKE検索を実行します。ただし、クエリ文字列に整数がない場合は、製品の名前と説明のみで全文検索を実行します。理にかなっていますか?

調べましCatalogSearch/Model/Resource/Fulltext.php -> prepareResult()たが、クエリ文字列に基づいて結果をフィルタリングする方法がわかりません。また、クイック検索はcatalogsearch/resultモデルを使用して検索しますが、ここではcatalog/product

私は道に迷っています、どんな助けでも大歓迎です!

回答:


3

新しいモジュールを作成してみてください

あなたのconfig.xmlで

...
<adminhtml>
    <global_search>
        <magepal_custom_attributes>
            <class>MagePal_GlobalAttributesSearch_Model_Search_Customattributes</class>
            <acl>magepal_globalattributessearch</acl>
        </magepal_custom_attributes>
    </global_search>
</adminhtml> 
    ...

app / code / local / MagePal / GlobalAttributesSearch / Model / Search / Customattributes.php

<?php
class MagePal_GlobalAttributesSearch_Model_Search_Customattributes extends Varien_Object
{
    /**
     * Load search results
     *
     */
    public function load() {
        $arr = array();
        $searchText = $this->getQuery();


        // move code above to your if statement and do your db lookup accordingly 
        $collection = Mage::getModel('module/name')->getCollection()

         if(is_int($searchText)){
           /* search for int in product sku and custom */
            $collection->addFieldToFilter(
                array('field_name'),
                array(
                    array('like'=>'%'.$searchText.'%'), 
                    )
                );
         }
         else{
            /* search product name and description  */
            $collection->addFieldToFilter(
                array('field_name','field_name'),
                array(
                    array('like'=>'%'.$searchText.'%'),
                    array('like'=>'%'.$searchText.'%'), 
                    )
                );
         }

        $collection->load();

        foreach ($collection as $model) {
            $arr[] = array(
                'id'            => 'path/1/'.$model->getId(),
                'type'          => Mage::helper('adminhtml')->__('Custom Attributes'),
                'name'          => $model->getId(),
                'description'   => Mage::helper('core/string')->truncate('desc', 35),
                'url' => Mage::helper('adminhtml')->getUrl('*/path/edit', array('id'=>$model->getId())),
            );
        }

        $this->setResults($arr);
        return $this;
    }
}

http://blog.mattstephens.co.uk/post/27326981315/adding-custom-module-to-magentos-admin-global-searchを参照してください

グローバル製品検索ブロックを書き換えることもできます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.