OpenCart 2.1.0.2默认视图改为列表视图并禁用网格视图求助
如何在OpenCart 2.1.0.2中永久设置商品列表视图并禁用网格视图
嘿,我来帮你搞定这个视图设置问题!要让所有商品列表默认显示为列表视图,并且彻底禁用网格视图的切换功能,咱们分几步来操作,都是直接修改核心文件和模板,不用额外装插件:
1. 强制控制器使用列表视图(从根源上锁定)
OpenCart里负责展示商品列表的有几个控制器文件,咱们需要修改它们,让它们不管什么情况都只加载列表视图:
分类页面控制器 (catalog/controller/product/category.php)
打开这个文件,找到这段判断视图模式的代码:
if (isset($this->request->get['view'])) { $view = $this->request->get['view']; } else { $view = $this->config->get('config_product_view'); }
直接把它替换成下面的代码,强制锁定为列表视图:
// 永久强制使用列表视图,忽略用户URL参数和系统配置 $view = 'list';
搜索结果页面控制器 (catalog/controller/product/search.php)
同样找到上述相同的代码块,替换成一样的强制设置代码,确保搜索结果也只会显示列表视图。
品牌页面控制器 (catalog/controller/product/manufacturer.php)
重复相同的替换操作,覆盖所有展示商品列表的场景。
2. 移除前端的网格视图切换按钮(让用户看不到切换选项)
接下来要修改模板文件,把页面上的网格视图切换按钮删掉,彻底断了用户切换的念头:
分类页面模板 (catalog/view/theme/[你的主题名称]/template/product/category.tpl)
找到视图切换相关的代码块,大概长这样:
<div class="view-mode"> <a href="<?php echo $grid; ?>" id="grid-view" class="btn btn-default <?php echo $view == 'grid' ? 'active' : ''; ?>"><i class="fa fa-th"></i></a> <a href="<?php echo $list; ?>" id="list-view" class="btn btn-default <?php echo $view == 'list' ? 'active' : ''; ?>"><i class="fa fa-list"></i></a> </div>
删掉包含id="grid-view"的那一行(网格视图的按钮),如果觉得切换容器留着没用,也可以直接改成只显示激活状态的列表按钮:
<!-- 已移除网格视图切换选项,仅保留列表视图 --> <div class="view-mode"> <a href="<?php echo $list; ?>" id="list-view" class="btn btn-default active"><i class="fa fa-list"></i></a> </div>
搜索结果页面模板 (catalog/view/theme/[你的主题名称]/template/product/search.tpl)
对这个模板做同样的修改,移除网格视图切换按钮。
品牌页面模板 (catalog/view/theme/[你的主题名称]/template/product/manufacturer.tpl)
重复相同操作,确保所有商品列表页面都没有网格视图的入口。
3. 可选:同步后台系统配置(让设置更统一)
如果你希望后台的默认配置也和前端保持一致,可以登录OpenCart后台:
- 进入系统 > 设置 > 编辑你的商店 > 选项标签页
- 找到商品默认视图选项,选择列表然后保存
这一步不是必须的,但能避免后续可能的配置冲突,让整个系统的设置更统一。
验证修改效果
完成以上步骤后,你可以测试一下:
- 不管是进入分类页、搜索页还是品牌页,都会直接显示列表视图
- 用户没法通过切换按钮或者手动在URL里加
?view=grid来切换到网格视图 - 就算用新浏览器或者清除缓存访问,也只会看到列表视图
内容的提问来源于stack exchange,提问作者Reena Olaniyi
相关产品推荐
相关产品推荐

