Opencart 2.3.0.2 Grid描述长度截断/限制方法咨询
嘿,我来帮你搞定OpenCart 2.3.0.2里限制Grid描述和分类描述长度的问题!这俩需求其实都是通过修改对应的控制器和模板文件实现的,我给你一步步拆解:
一、限制商品Grid(列表页)的描述长度
1. 修改分类控制器文件
打开 catalog/controller/product/category.php,找到产品循环的代码块(大概在 foreach ($results as $result) { ... } 这段里)。你会看到一行处理商品描述的代码:
$product['description'] = html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8');
把它替换成下面的代码(这里咱限制为200个字符,你可以根据需求调整数字):
// 先去除HTML标签,再截断到指定长度,最后加省略号 $product['description'] = utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, 200) . '...';
为啥用utf8_substr?因为它能正确处理中文、日文这类多字节字符,避免出现乱码问题。
2. 确认模板输出(可选)
打开对应主题的商品列表模板文件,路径是 catalog/view/theme/你的主题名/template/product/category.tpl(默认主题是default)。找到输出商品描述的代码:
<?php echo $product['description']; ?>
确保这里直接输出即可,因为控制器已经帮我们处理好截断了。
二、限制分类描述的长度
1. 修改分类控制器文件
还是刚才的 catalog/controller/product/category.php,找到获取分类信息的代码段,大概是这样:
$this->data['description'] = html_entity_decode($category_info['description'], ENT_QUOTES, 'UTF-8');
替换成截断后的版本(这里限制为300个字符,按需调整):
$this->data['description'] = utf8_substr(strip_tags(html_entity_decode($category_info['description'], ENT_QUOTES, 'UTF-8')), 0, 300) . '...';
2. 确认模板输出(可选)
打开同主题的分类模板文件 catalog/view/theme/你的主题名/template/product/category.tpl,找到输出分类描述的代码:
<?php echo $description; ?>
直接输出修改后的内容就搞定了。
一些注意事项
- 备份先行:修改前一定要把要改的文件备份好,万一改崩了还能恢复回去。
- 字符数自定义:把代码里的200、300改成你想要的长度就行,灵活调整。
- 主题适配:如果你用的是第三方主题,别改默认主题的文件,要找你当前使用主题对应的控制器和模板。
- 乱码排查:如果出现截断后乱码,检查是不是用了
substr而不是utf8_substr,后者才是OpenCart专门为多字节字符设计的截断函数。
内容的提问来源于stack exchange,提问作者Edward Hill
相关产品推荐
相关产品推荐

