我正在尝试将类别路径限制为仅4个级别,并且在进入4个级别后不让目录显示任何子类别。我已在产品/类别控制器中将零件代码更改为以下代码,但它似乎没有更新页面。
$parts = explode('_', (string)$this->request->get['path']);
//print_r($parts);
echo "<script>console.log( 'Debug Objects: here21' );</script>";
if(count($parts) < 4){
echo "<script>console.log( 'Debug Objects: here2' );</script>";
$category_id = (int)array_pop($parts);
foreach ($parts as $path_id) {
if (!$path) {
$path = (int)$path_id;
} else {
$path .= '_' . (int)$path_id;
}
$category_info = $this->model_catalog_category->getCategory($path_id);
if ($category_info) {
$data['breadcrumbs'][] = array(
'text' => $category_info['name'],
'href' => $this->url->link('product/category', 'path=' . $path . $url)
);
}
}
}
} else {
$category_id = 0;
}
我已经清除了仪表板中的缓存,也清除了system\storage\cache
文件夹,但仍未更新。任何帮助表示赞赏。谢谢
答案 0 :(得分:0)
因此,如果我正确地理解了任务,则希望不要出现这样的面包屑
home > category 1 > sub category 2 > sub category 3 > sub category 4 > sub cateogry 5
看起来像这样
home > category 1 > sub category 2 > sub category 3 > sub category 5
是这样,那么解决方案非常简单:
$parts = explode('_', (string)$this->request->get['path']);
$category_id = (int)array_pop($parts);
//add this code - it will slice the parts array to only 3 items, leaving the 4th as the current category_id
$parts = array_slice($parts, 0, 3);
foreach ($parts as $path_id) {
如果您不想看到最后一个面包屑项目,则需要向下滚动到第103行以找到此代码
// Set the last category breadcrumb
$data['breadcrumbs'][] = array(
'text' => $category_info['name'],
'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'])
);
您可以计算部件数组中的总项目数,并决定是否显示此面包屑。随时提出问题,我将相应地纠正我的答案。
我不会删除第一个答案,因为它可能会对某人有所帮助。但是这里是从作者那里获得更多细节之后的答案。
因此,如果您希望限制精细搜索以使其不显示在第四级和以下级别,则需要执行两个步骤:
$level = count($parts);
$results = $this->model_catalog_category->getCategories($category_id);
与
if($level < 4){
$results = $this->model_catalog_category->getCategories($category_id);
}else{
$results = array();
}