Magento - 如何在无结果页面下方显示产品?

时间:2014-03-07 02:00:28

标签: php html magento magento-1.8

基本上,如果用户搜索产品并且搜索返回emtpy,我希望能够在“没有与您的搜索匹配的结果”文本下显示特定类别。

我尝试了不同的方法,但似乎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

谢谢,感谢这个问题的任何答案: - )

1 个答案:

答案 0 :(得分:0)

您可以按如下方式创建自定义块,并设置here

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

<强>更新

  • 创建模块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>
  • 创建
  

应用程序/代码/本地/客户/产品/块/ 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');
?>

检查它是否适合您。