OpenCart 3.0.3.7如何修改分类URL实现自定义跳转
OpenCart修改分类跳转URL操作指南
以下两种方案可实现自定义分类跳转链接的需求,可根据你的使用场景选择:
方案1:直接修改menu.twig模板(快速生效,适合固定分类场景)
这是最适配你当前需求的方案,直接修改你提供的menu.twig代码即可,操作步骤如下:
- 进入OpenCart后台,路径为「设计 → 主题编辑器」,找到
common/menu.twig文件;也可通过FTP直接修改站点目录下catalog/view/theme/[你的主题名]/template/common/menu.twig文件 - 将原有代码替换为下方修改后的代码,可直接适配你当前的4个分类跳转需求:
{% if categories %} <div class="container"> <nav id="menu" class="navbar"> <div class="navbar-header"><span id="category" class="visible-xs">{{ text_category }}</span> <button type="button" class="btn btn-navbar navbar-toggle" data-toggle="collapse" data-target=".navbar-ex1-collapse"><i class="fa fa-bars"></i></button> </div> <div class="collapse navbar-collapse navbar-ex1-collapse"> <ul class="nav navbar-nav"> {% for category in categories %} {# 自定义分类跳转逻辑 - 可根据需求增删判断条件 #} {% set output_href = category.href %} {% if category.name == 'Home' %} {% set output_href = home %} {% elseif category.name == 'About' %} {# 可替换为你实际的About页路由/完整链接 #} {% set output_href = 'index.php?route=information/information&information_id=4' %} {% elseif category.name == 'Contact' %} {% set output_href = contact %} {% elseif category.name == 'Shop' %} {# 可替换为你需要的Shop分类跳转地址 #} {% set output_href = '你的Shop页对应链接' %} {% endif %} {# 自定义逻辑结束 #} {% if category.children %} <li class="dropdown"><a href="{{ output_href }}" class="dropdown-toggle" data-toggle="dropdown">{{ category.name }}</a> <div class="dropdown-menu"> <div class="dropdown-inner"> {% for children in category.children|batch(category.children|length / category.column|round(1, 'ceil')) %} <ul class="list-unstyled"> {% for child in children %} <li><a href="{{ child.href }}">{{ child.name }}</a></li> {% endfor %} </ul> {% endfor %}</div> <a href="{{ output_href }}" class="see-all">{{ text_all }} {{ category.name }}</a> </div> </li> {% else %} <li><a href="{{ output_href }}">{{ category.name }}</a></li> {% endif %} {% endfor %} </ul> </div> </nav> </div> {% endif %}
- 代码说明:
- 这里直接使用OpenCart原生全局变量
home、contact作为跳转地址,无需硬写域名,更换站点域名也不需要修改代码 - 如果你是多语言站点,建议使用分类ID作为判断条件,避免不同语言下分类名称不一致导致判断失效,示例:
{% if category.category_id == '2' %},分类ID可在后台分类列表中查看
- 修改完成后保存文件,进入OpenCart后台「系统 → 维护 → 缓存管理」清除所有缓存,刷新前端即可生效
方案2:修改分类管理逻辑(适合需后台灵活配置的场景)
如果后续需要经常调整分类跳转地址,不想每次修改模板代码,可以选择此方案:
- 给分类数据表增加
custom_redirect_url字段,用于存储自定义跳转地址 - 修改后台分类编辑页面,新增该字段的输入框
- 修改
catalog/controller/common/menu.php中的分类查询逻辑,读取该字段值,若存在自定义地址则覆盖原分类的href属性,不存在则使用原分类地址
该方案无需修改前端模板,所有配置可直接在后台完成,适合多站点、运营人员频繁调整跳转规则的场景
注意事项
- 所有修改操作前请提前备份原文件和数据库,避免修改错误无法回滚
- 若站点使用CDN或主题自带缓存,修改后需同步清除对应缓存才能看到效果
内容的提问来源于stack exchange,提问作者mmm000
相关产品推荐
相关产品推荐

