2015-05-07 40 views
1

我想在搜索网址中添加结果数。默认的URL就像是domain.com/catalogsearch/result/?q=queries 但我想在URL中添加类似结果计数,magento目录搜索在网址中添加结果数

`domain.com/catalogsearch/result/?q=queries&count=50` 

我试着用下面的事件观察

controller_action_layout_render_before_catalogsearch_result_index 

Observer.php

<?php 
    class PackgeName_ModuleName_Model_Observer { 
     // the product list block name in layout 
     const RESULT_BLOCK_NAME = 'search_result_list'; 
     public function loadResult(Varien_Event_Observer $observer) { 
      $currentUrl = Mage::helper ('core/url')->getCurrentUrl(); 

      $block = Mage::app()->getLayout()->getBlock (self::RESULT_BLOCK_NAME); 
      if ($block) { 

       $collection = $block->getLoadedProductCollection(); 

       /** 
       * @var Mage_Catalog_Model_Product $product 
       */ 
       $count = $collection->getSize(); 

       $resultUrl = $currentUrl . '&count=' . $count; 

       if ($resultUrl) { 

        Mage::app()->getResponse()->setRedirect ($resultUrl); 
        exit(); // stop everything else 
       } 
      } 
     } 
    } 

但问题是它再次触发。所以它进入无限循环。任何想法来解决这个问题或有什么办法来实现这一目标?请帮我..

回答

0

只需添加一个检查计数不是在请求URI:

public function loadResult(Varien_Event_Observer $observer) { 

     $count = Mage::app()->getRequest()->getParam('count'); 

     if (!$count){ 

      $currentUrl = Mage::helper ('core/url')->getCurrentUrl(); 

      $block = Mage::app()->getLayout()->getBlock (self::RESULT_BLOCK_NAME); 
+0

它会再次击中结果页面,并再次触发相同的观察者。所以它进入无尽的循环.. – Elavarasan

0

我不知道这是否是正确的答案,因为我是新来的Magento为好。 。 但我在form.mini.phtml添加文本框,并把它下面的“q”文本框这样

<input type="text" id="abc" name="abc" value="" > 

而且会导致: domain.com/catalogsearch/result/?q=queries & abc =