请帮我解决以下问题:
我的网站在选择类别时会显示相应的子类别,并显示消息“此类别中没有产品”。钻取时会发生这种情况,直到一个人到达较低级别的子类别。
我想展示其子类别的所有产品。
我该怎么办呢?
非常感谢您的建议,
史蒂文
答案 0 :(得分:3)
打开/controllers/CategoryController.php
并将以下代码添加到process()
方法,注意评论告诉您从哪里开始和结束添加代码
public function process()
{
....
}
if ($this->category->id != 1)
$this->productListAssign();
/* MODIFICATION STARTS HERE */
if(!(isset($this->cat_products) AND $this->cat_products) ){
$this->category->id=array();
foreach($subCategories as $k=>$v){
$this->category->id[]=$v['id_category'];
}
$this->productListAssign();
}
/* MODIFICATION ENDS HERE */
self::$smarty->assign(array( ...
}
然后打开classes/Category.php
并从
public function getProducts
内SQL查询的WHERE CLAUSE行
WHERE cp.`id_category` = '.(int)$this->id.($active ? ' AND p.`active` = 1' : '').'
要
WHERE cp.`id_category` '.(is_array($this->id)?" IN(".implode(',',$this->id).") ": "=".(int)$this->id).($active ? ' AND p.`active` = 1' : '').'
答案 1 :(得分:2)
您无需更改任何内容即可实现此目的。
只需将产品分配给它所在的子类别,但也要分配给父类别(在BO中的产品编辑中)。
答案 2 :(得分:2)
您也可以安装分层导航模块(blocklayered)。此模块的默认行为是显示子类别产品,即使选择器窗口小部件在页面上不可见/活动。
答案 3 :(得分:1)
在categoryController.php中,您可以找到process()
方法。这是获取类别页面上显示的所有信息的那个。你会发现一个存储所有产品的变量(我认为它是$cat_product
,如果我的记忆力很好)。您可以轻松检查它是否为空。然后从这里你只需要获得子类别(在类别类中有一个方法),然后获得这些类别的产品(还有一种方法来获取类别的产品)。这只是您必须遵循的逻辑,并且您需要的所有代码已经在框架中。
答案 4 :(得分:-1)
在主标题菜单上添加新类别非常简单,只需转到模块 - Pos Megamenu Customer并添加您想要的任何内容。
完成!!