请帮我解决以下问题:
我的网站在选择类别时显示相应的子类别,并显示“该类别中没有产品”的消息。这在向下钻取时发生,直到到达较低级别的子类别。
我想展示其子类别的所有产品。
请问我该怎么做?
非常感谢您的建议,
史蒂文
请帮我解决以下问题:
我的网站在选择类别时显示相应的子类别,并显示“该类别中没有产品”的消息。这在向下钻取时发生,直到到达较低级别的子类别。
我想展示其子类别的所有产品。
请问我该怎么做?
非常感谢您的建议,
史蒂文
打开/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
并更改 SQL 查询的 WHERE CLAUSE 行public function getProducts
从
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' : '').'
您无需更改任何内容即可实现此目的。
只需将产品不仅分配给它所在的子类别,还分配给父类别(在 BO 中的产品编辑中)。
您也可以只安装分层导航模块(blocklayered)。此模块的默认行为是显示子类别产品,即使选择器小部件在页面上不可见/不活动也是如此。
在 categoryController.php 中,您可以找到该process()
方法。那是获得类别页面上显示的所有信息的那个。$cat_product
你会找到一个存储所有产品的变量(如果我的记忆好的话,我想它会被调用)。您可以轻松检查它是否为空。然后从这里你只需要获取子类别(在类别类中有一个方法),然后获取这些类别的产品(还有一个获取类别产品的方法)。这只是您必须遵循的逻辑,毕竟您需要的所有代码都已经在框架中。
在主标题菜单上添加新类别非常简单,只需转到模块 - Pos Megamenu Customer 并添加您想要的任何内容。
完毕!!