如何自定义Dolibarr产品卡片:拆分信息、新增表格及标签页
Dolibarr产品卡片拆分表格与新增标签页实现方案
核心思路:通过模板修改+可选钩子扩展实现
Dolibarr的产品卡片显示逻辑主要由前端模板文件控制,部分动态内容可能通过钩子加载,以下是具体操作步骤:
定位产品卡片模板文件
找到产品详情页的模板,不同版本路径略有差异:- 新版本(16+):
htdocs/product/tpl/product_view.tpl - 旧版本:
htdocs/product/tpl/product_card.tpl
直接编辑该文件即可调整页面结构。
- 新版本(16+):
拆分第二个表格为第三个表格
打开模板文件,找到第二个<table>标签块,按需求拆分内容:- 找到需要分离的行(
<tr>标签组),将其从原表格中剪切 - 在原表格下方新增一个独立的
<table>标签,把剪切的内容粘贴进去,按需调整样式(比如继承原有表格的class,保持视觉统一)
示例代码片段:
<!-- 原第二个表格 --> <table class="noborder" width="100%"> <tr class="liste_titre"> <td colspan="2">{langs->trans('ExistingTableTitle')}</td> </tr> <!-- 保留的内容行 --> <tr><td>{langs->trans('Field1')}</td><td>{$product->field1}</td></tr> </table> <!-- 新增的第三个表格 --> <table class="noborder" width="100%" style="margin-top:10px;"> <tr class="liste_titre"> <td colspan="2">{langs->trans('NewTableTitle')}</td> </tr> <!-- 拆分出来的内容行 --> <tr><td>{langs->trans('Field2')}</td><td>{$product->field2}</td></tr> </table>- 找到需要分离的行(
新增自定义标签页
Dolibarr使用tabContainer组件实现标签页,按以下步骤添加:- 添加标签栏选项:找到模板中的标签栏(通常是
<ul class="tabs">),新增一个标签项:<li><a href="#custom_tab" class="tabRef">{langs->trans('CustomTabName')}</a></li> - 添加标签内容容器:在标签内容区域(
<div class="tabContent">)内新增对应容器,把需要迁移的内容放入其中:<div id="custom_tab" class="tabContentItem" style="display:none;"> <!-- 放入要移到新标签页的内容,比如部分表格、字段等 --> <table class="noborder" width="100%"> <tr class="liste_titre"> <td colspan="2">{langs->trans('TabContentTitle')}</td> </tr> <tr><td>{langs->trans('Field3')}</td><td>{$product->field3}</td></tr> </table> </div> - 语言适配(可选):如果需要多语言支持,在对应语言文件中添加标签名翻译,比如
htdocs/langs/zh_CN/product.lang中加入:CustomTabName=自定义标签 TabContentTitle=标签内容标题
- 添加标签栏选项:找到模板中的标签栏(通常是
处理动态加载内容(钩子场景)
如果要拆分的内容是通过钩子动态注入的,需通过自定义模块扩展:- 创建自定义模块,在
setup.php中注册hookProductCard钩子 - 在模块的
hooks/hook_productcard.php中,重写钩子逻辑,将原有内容拆分后分别输出到表格和新标签页 - 注意:钩子输出的内容需要符合模板的HTML结构,避免样式混乱
- 创建自定义模块,在
生效与调试
- 修改完成后,进入Dolibarr后台→系统工具→清空缓存,确保模板修改生效
- 刷新产品详情页,检查表格拆分和标签页是否正常显示,调整样式或结构至符合需求
内容的提问来源于stack exchange,提问作者jeff
相关产品推荐
相关产品推荐

