繁体   English   中英

如何在category.tpl中显示制造商名称?

[英]How to display manufacturer name in category.tpl?

我试图在除产品以外的其他视图中显示一些产品信息,但出现问题。

我试图在我的类别控制器文件中添加以下代码:

$this->data['manufacturer'] = $product['manufacturer'];

并添加内部产品数组:

'manufacturer'    => $result['manufacturer'],

并在我的Category.tpl视图文件中:

<?php if ($manufacturer) { ?>
   <span><?php echo $manufacturer; ?></span>
<?php } ?>

我没有任何错误,但标签为空。 任何帮助将不胜感激

谢谢。

正如您正确指出的那样,您将需要将此内容以及对category.tpl文件可用的所有其他信息添加到$this->data['products']数组中。 $this->data['manufacturer'] ...是不需要的,什么也不会显示。 无需在盘面上给出答案,而是查看控制器中的rating并查看文件以查看其分配和使用方式,并尝试将其复制

catalog/controller/product/category.php找到以下行:

$this->data['products'][] = array(

(对于OC 1.5.6,应为238行)->在此,将处理产品并将其分配给模板变量。 在这个数组中,在例如rating之后添加一个新索引:

'rating' => $result['rating'],
'manufacturer' => $result['manufacturer'], // <= YOUR NEW LINE

由于此控制器使用方法ModelCatalogProduct::getProducts()并且此方法未填充制造商信息,因此您还需要修改catalog/model/catalog/product.php并添加

m.name as manufacturer

进入SELECT查询的一部分(加,如果以后它不是最后一个条目SELECT子句),然后添加

$sql .= "LEFT JOIN " . DB_PREFIX . "manufacturer m ON p.manufacturer_id = m.manufacturer_id";

这行之后:

$sql .= " LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) WHERE pd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "'";

现在,在您的类别产品列表模板中,您可以使用

<?php echo $product['manufacturer']; ?>

foreach($products as $product)循环中。 多做一些编辑,而不是直接进行。 如果您可以通过vQmod文件进行这些编辑,那就更好了……

请享用!

如果我不迟到。 只需在产品数组中发送制造商数组

'manufacturer' => $result['manufacturer']

category.tpl文件中循环内回显

<div class="manufacturer"><?php if($product['manufacturer']){
            echo ($product['manufacturer']);
        }?>
</div>

它仍然没有出现在前面,但是您可以通过查看源代码来查看数据。

因为Opencart使用脚本函数function Display()来显示产品(视图和列表)

(请参阅content_bottom div之后的脚本标记内的代码)

它覆盖了显示类(product-list和product-grid),因此在脚本中添加它

var manufacturer= $(element).find('.manufacturer').html();

if (manufacturer != null) {
    html += '<div class="rating">' + manufacturer + '</div>';
}

将代码保持在if和else条件中,以便制造商同时出现在“列表”和“网格”视图中。 希望这可以帮助

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM