OpenCart 2.3.0.2:如何在商品页面显示分类图片
在OpenCart 2.3.0.2商品页展示所属分类图片的解决方案
我之前维护OpenCart 2.3.0.2站点时,刚好碰到过和你一模一样的问题——想在商品页显示分类图,结果不小心调用成了商品缩略图。下面给你分步讲怎么解决:
第一步:在商品控制器中获取分类图片数据
首先打开catalog/controller/product/product.php,找到获取商品基础信息的代码段(大概在public function index()方法里,$product_info = $this->model_catalog_product->getProduct($product_id);这一行之后),添加以下代码来获取分类信息:
情况1:只显示商品的主分类图片
如果你的商品只关联一个主分类,用这段代码:
// 获取主分类的详细信息 $category_info = $this->model_catalog_category->getCategory($product_info['category_id']); // 处理分类图片(生成适配的缩略图) if (!empty($category_info) && !empty($category_info['image'])) { $data['category_image'] = $this->model_tool_image->resize( $category_info['image'], $this->config->get('config_image_category_width'), $this->config->get('config_image_category_height') ); $data['category_name'] = $category_info['name']; // 可选,同时获取分类名称 } else { $data['category_image'] = ''; // 没有分类图时留空,或替换成你的默认图路径 }
情况2:显示商品所属的所有分类图片
如果商品属于多个分类,想全部展示,就用这段循环代码:
// 获取商品关联的所有分类ID $category_ids = $this->model_catalog_product->getCategories($product_id); $data['product_categories'] = array(); foreach ($category_ids as $category) { $category_detail = $this->model_catalog_category->getCategory($category['category_id']); if (!empty($category_detail) && !empty($category_detail['image'])) { $data['product_categories'][] = array( 'name' => $category_detail['name'], 'image' => $this->model_tool_image->resize( $category_detail['image'], $this->config->get('config_image_category_width'), $this->config->get('config_image_category_height') ), 'url' => $this->url->link('product/category', 'path=' . $category['category_id']) // 可选,给分类图加跳转链接 ); } }
第二步:在商品视图模板中渲染分类图片
打开你当前主题的商品页模板catalog/view/theme/你的主题名/template/product/product.tpl,找到你想放置分类图的位置(比如商品标题上方、价格区域旁边等),添加对应的渲染代码:
对应情况1(主分类图):
<?php if ($category_image) { ?> <div class="product-category-banner"> <img src="<?php echo $category_image; ?>" alt="<?php echo $category_name; ?>" /> <p>所属分类:<?php echo $category_name; ?></p> </div> <?php } ?>
对应情况2(所有分类图):
<?php if ($product_categories) { ?> <div class="product-related-categories"> <h4>所属分类</h4> <div class="category-list"> <?php foreach ($product_categories as $cat) { ?> <a href="<?php echo $cat['url']; ?>" class="category-item"> <img src="<?php echo $cat['image']; ?>" alt="<?php echo $cat['name']; ?>" /> <span><?php echo $cat['name']; ?></span> </a> <?php } ?> </div> </div> <?php } ?>
为什么之前的代码会显示商品缩略图?
大概率是你错误调用了商品数据里的image字段(比如$product_info['image']),而没有主动去分类模型中拉取image数据。上面的代码核心就是通过分类ID从分类模型中获取正确的图片信息,再用OpenCart自带的图片工具生成合适尺寸的缩略图。
内容的提问来源于stack exchange,提问作者AKindredMain
相关产品推荐
相关产品推荐

