यदि उत्पाद संग्रह में ठीक एक उत्पाद हो, तो त्वरित खोज (या उन्नत खोज) पृष्ठ को रेंडर करने से पहले आपको एक नया एक्सटेंशन बनाना होगा।
इसके लिए आइए एक नया एक्सटेंशन बनाएं जिसका नाम है 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
}
}
}
}
}
सक्षम होने पर संचय को अक्षम करें, संकलित करें और इसे छोड़ दें।
नोट: यह एक्सटेंशन उत्पाद पृष्ठ पर पुनर्निर्देशित करता है जब खोज (और उन्नत खोज) पृष्ठ केवल उत्पाद पर वापस आ जाना चाहिए, भले ही यह खोज के बाद या एक स्तरित नेविगेशन फ़िल्टर लागू करने के बाद हो।