कैटलॉग सर्च: यदि केवल एक परिणाम, सूची दृश्य के उत्पाद दृश्य पृष्ठ दिखाएं


14

मेरा लक्ष्य Magento कैटलॉग खोज में निम्नलिखित संशोधन को प्राप्त करना है।

जब मैं किसी उत्पाद की खोज करता हूं और परिणाम संग्रह में केवल एक उत्पाद लौटाया जाता है, तो मैं उत्पाद सूची पृष्ठ के बजाय उत्पाद दृश्य पृष्ठ पर प्रदर्शित करना चाहता हूं।

क्या आप मुझे एक सलाह दे सकते हैं कि मुझे इस संशोधन को करने के लिए कैसे और कहां खोज शुरू करनी चाहिए?

फिलहाल मैं इस पूरे कोड में वास्तव में खो गया हूं।

Magento 1.9.0.1 का उपयोग करना

जवाबों:


21

यदि उत्पाद संग्रह में ठीक एक उत्पाद हो, तो त्वरित खोज (या उन्नत खोज) पृष्ठ को रेंडर करने से पहले आपको एक नया एक्सटेंशन बनाना होगा।
इसके लिए आइए एक नया एक्सटेंशन बनाएं जिसका नाम है StackExchange_CatalogSearch
आपको निम्न फ़ाइलों की आवश्यकता होगी:

app/etc/modules/StackExchange_CatalogSearch.xml - घोषणा फ़ाइल

<?xml version="1.0"?>
<config>
    <modules>
        <StackExchange_CatalogSearch>
            <codePool>local</codePool>
            <active>true</active>
            <depends>
                <Mage_CatalogSearch />
            </depends>
        </StackExchange_CatalogSearch>
    </modules>
</config>

app/code/local/StackExchange/CatalogSearch/etc/config.xml - कॉन्फ़िगरेशन फ़ाइल:

<?xml version="1.0"?>
<config>
    <modules>
        <StackExchange_CatalogSearch>
            <version>1.0.0</version>
        </StackExchange_CatalogSearch>
    </modules>
    <global>
        <models>
            <stackexchange_catalogsearch>
                <class>StackExchange_CatalogSearch_Model</class>
            </stackexchange_catalogsearch>
        </models>
    </global>
    <frontend>
        <events>
            <controller_action_layout_render_before_catalogsearch_result_index><!-- for the quick search-->
                <observers>
                    <stackexchange_catalogsearch>
                        <model>stackexchange_catalogsearch/observer</model>
                        <method>redirectToProduct</method>
                    </stackexchange_catalogsearch>
                </observers>
            </controller_action_layout_render_before_catalogsearch_result_index>
            <controller_action_layout_render_before_catalogsearch_advanced_result><!-- for the advanced search-->
                <observers>
                    <stackexchange_catalogsearch>
                        <model>stackexchange_catalogsearch/observer</model>
                        <method>redirectToProduct</method>
                    </stackexchange_catalogsearch>
                </observers>
            </controller_action_layout_render_before_catalogsearch_advanced_result>
        </events>
    </frontend>
</config>

app/code/local/StackExchange/CatalogSearch/Model/Observer.php - पर्यवेक्षक जो सभी काम करता है।

<?php
class StackExchange_CatalogSearch_Model_Observer
{
    //the product list block name in layout
    const RESULT_BLOCK_NAME = 'search_result_list';
    public function redirectToProduct($observer)
    {
        /** @var Mage_Catalog_Block_Product_List $block */
        $block = Mage::app()->getLayout()->getBlock(self::RESULT_BLOCK_NAME);
        if ($block) {
            $collection = $block->getLoadedProductCollection();
            if ($collection && $collection->getSize() == 1) {
                /** @var Mage_Catalog_Model_Product $product */
                $product = $collection->getFirstItem();
                $url = $product->getProductUrl();
                if ($url){
                    Mage::app()->getResponse()->setRedirect($url);
                    Mage::app()->getResponse()->sendResponse();
                    exit; //stop everything else
                }
            }
        }
    }
}

सक्षम होने पर संचय को अक्षम करें, संकलित करें और इसे छोड़ दें।

नोट: यह एक्सटेंशन उत्पाद पृष्ठ पर पुनर्निर्देशित करता है जब खोज (और उन्नत खोज) पृष्ठ केवल उत्पाद पर वापस आ जाना चाहिए, भले ही यह खोज के बाद या एक स्तरित नेविगेशन फ़िल्टर लागू करने के बाद हो।


वाह महान, यह एक आकर्षण की तरह काम करता है! आपका बहुत बहुत धन्यवाद!
मार्को

1
आलसी लोगों के लिए, यहाँ डाउनलोड करें: github.com/sreichel/magento-StackExchange_CatalogSearch
sv3n
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.