আপনার যদি একটি নতুন এক্সটেনশন তৈরি করতে হবে যা চেক করে, দ্রুত অনুসন্ধান (বা উন্নত অনুসন্ধান) পৃষ্ঠাটি রেন্ডার করার আগে, যদি পণ্য সংগ্রহের মধ্যে সঠিকভাবে একটি পণ্য থাকে।
এর জন্য আসুন একটি নতুন এক্সটেনশন তৈরি করা যাক 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
}
}
}
}
}
ক্যাশে সাফ করুন, সক্ষম করা থাকলে সংকলন অক্ষম করুন এবং এটিকে যান।
দ্রষ্টব্য: যখন অনুসন্ধান (এবং উন্নত অনুসন্ধান) পৃষ্ঠাটি কেবলমাত্র পণ্যটিতে ফিরে আসবে তখন সন্ধানের পরে বা স্তরযুক্ত নেভিগেশন ফিল্টার প্রয়োগ করার পরেও যদি এই এক্সটেনশনটি পণ্য পৃষ্ঠাতে পুনঃনির্দেশ করে।