分类页面产品过滤器

时间:2017-09-04 07:20:07

标签: prestashop prestashop-1.6

我是prestashop的新手,我正在尝试创建一个简单的产品过滤器,以显示在类别页面上。 我设法使用hookDisplayLeftColumn方法的钩子在页面上输出我的过滤器,但是我有几个问题。 现在我挂钩到leftColumn但过滤器将显示在任何有它的页面上。我想只在类别页面上显示它。

public function hookDisplayLeftColumn($params)
    {

        $data = array(
            'bar' => 'foo'
        );

        $this->context->smarty->assign($data);
        return $this->display(__FILE__, 'categoryfilter.tpl');
    }

这是一个棘手的部分。我如何过滤产品。 有什么方法可以挂钩并过滤结果吗?

2 个答案:

答案 0 :(得分:1)

如果您只想在类别页面中包含您的代码,请使用以下内容:

public function hookDisplayLeftColumn($params)
{
    if (!isset($this->context->controller->php_self) or $this->context->controller->php_self != 'category')
         return false;

     $data = array(
         'bar' => 'foo'
     );

     $this->context->smarty->assign($data);
     return $this->display(__FILE__, 'categoryfilter.tpl');
}

答案 1 :(得分:1)

您可以挂钩actionProductListOverride

Hook在CategoryController

中执行

正如您所看到的,您在params数组中获得了三个属性。因为它们是通过引用传递的,所以您可以为它们分配自己的过滤产品列表,CategoryController将包含您的过滤数据。

确保将hookExecuted设置为true,同时catProducts的数据结构应与CategoryController通常生成的nbProductsget('href')应该具有的数据结构相匹配已过滤产品的次数。

对于你问题的第一部分,sadlyblue给了你答案。