2014-03-07 118 views
1

基本上,如果用戶搜索產品並且搜索返回了emtpy,我希望能夠在文本「沒有與您的搜索匹配的結果」下顯示特定類別。Magento - 如何在沒有結果頁面下顯示產品?

我已經嘗試過不同的方法,但它似乎results.phtml排序搜索查詢字符串中的每個不匹配的產品。字符串是否與某組產品匹配並不重要 - 它只會顯示這些產品。

我試圖用一個簡單的代碼:

<?php echo $this->getLayout()->createBlock('catalog/product_list')->setCategoryId(4)->setTemplate('catalog/product/list.phtml')->toHtml() ?> 

這段代碼工作的模板頁面的任何地方,除了因爲搜索功能,阻止所有非匹配產品results.phtml。 (如果它與使用此代碼塊的搜索相匹配,它將顯示一個產品)。

類似的問題在這裏,但沒有辦法解決:Display specific category products on no results search page

感謝,感謝任何回答這個問題:-)

回答

0

可以創建自定義塊如下,並設置分頁像here

<?php echo $this->getLayout()->createBlock('yourmodule/product_customlist')->setTemplate('catalog/product/list.phtml')->toHtml() ?> 

UPDATE

  • 創建模塊xml文件

應用的/ etc /模塊/ Custom_Products.xml

如下

<config> 
    <modules> 
     <Custom_Products> 
      <active>true</active> 
      <codePool>local</codePool> 
     </Custom_Products> 
    </modules> 
</config> 
  • 創建

應用程序/代碼/本地/自定義/產品的/ etc/config.xml中

文件如下

<config> 
    <global> 
     <blocks> 
      <customproducts> 
       <class>Custom_Products_Block</class> 
      </customproducts> 
     </blocks> 
    </global> 
</config> 
  • 創建

應用程序/代碼/本地/ Custom/Products/Block/Customlist.php

文件如下

<?php 
class Custom_Products_Block_Customlist extends Mage_Core_Block_Template 
{ 

    protected function _construct() 
    { 
     parent::_construct(); 

     // We get our collection through our model 
     $this->_collection = Mage::getModel('catalog/category')->load($category_id) 
     ->getProductCollection() 
     ->addAttributeToSelect('*') // add all attributes - optional 
     ->addAttributeToFilter('status', 1) // enabled 
     ->addAttributeToFilter('visibility', 4) //visibility in catalog,search 
     ->setOrder('price', 'ASC'); //sets the order by price 

     // Instantiate a new Pager block 
     $pager = new Mage_Page_Block_Html_Pager(); 


     // We set our limit (here an integer store in configuration). 
     // /!\ The limit must be set before the collection 
     $pager 
     ->setLimit(5) 
     ->setCollection($this->_collection); 

     // Add our Pager block to our current list block 
     $this->setChild('pager', $pager); 
    } 

} 
?> 
  • 創建

應用程序/設計/ YOUR_PACKAGE/YOUR_THEME /模板/目錄/產品/ customlist。PHTML

如下

<?php  
    $_productCollection=$this->_collection; 
    ... 
    your products code here 
    ...  

?> 

<?php 
    echo $this->getChildHtml('pager'); 
?> 

檢查,如果它是爲你工作。

+0

你好Dushyant,這種方法會有道理,但因爲我不完全是一個magento專家,你可以幫助我通過這個或給我看一些簡單的步驟如何做到這一點? – vikingen

+0

檢查我更新的答案 –

相關問題