我是prestashop的新手,我正在尝试创建一个简单的产品过滤器,以显示在类别页面上。 我设法使用hookDisplayLeftColumn方法的钩子在页面上输出我的过滤器,但是我有几个问题。 现在我挂钩到leftColumn但过滤器将显示在任何有它的页面上。我想只在类别页面上显示它。
public function hookDisplayLeftColumn($params)
{
$data = array(
'bar' => 'foo'
);
$this->context->smarty->assign($data);
return $this->display(__FILE__, 'categoryfilter.tpl');
}
这是一个棘手的部分。我如何过滤产品。 有什么方法可以挂钩并过滤结果吗?
答案 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
通常生成的nbProducts
和get('href')
应该具有的数据结构相匹配已过滤产品的总次数。
对于你问题的第一部分,sadlyblue给了你答案。