我正在尝试在除Product之外的其他视图中显示一些产品信息,但我遇到了问题。
我尝试在我的类别控制器文件中添加以下代码:
$this->data['manufacturer'] = $product['manufacturer'];
并添加内部产品数组:
'manufacturer' => $result['manufacturer'],
并在我的Category.tpl查看文件中:
<?php if ($manufacturer) { ?>
<span><?php echo $manufacturer; ?></span>
<?php } ?>
我没有错误,但标签是空的。 任何帮助将不胜感激
感谢。
答案 0 :(得分:0)
您需要将此添加到$this->data['products']
数组以及正确指出的category.tpl
文件可用的所有其他信息。不需要$this->data['manufacturer'] ...
,也不会显示任何内容。不是在板上给出答案,而是查看控制器中的rating
值并查看文件,看看它们是如何分配和使用的,并尝试复制
答案 1 :(得分:0)
在catalog/controller/product/category.php
中找到这一行:
$this->data['products'][] = array(
(对于OC 1.5.6应为238行) - &gt;这里处理产品并将其分配给模板变量。在此数组中,添加一个新的索引,例如评级:
'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文件进行这些编辑,那就更好了......
享受!
答案 2 :(得分:0)
如果我不迟到。只需按产品阵列发送制造商数组
'manufacturer' => $result['manufacturer']
在category.tpl
文件echo inside loop
<div class="manufacturer"><?php if($product['manufacturer']){
echo ($product['manufacturer']);
}?>
</div>
它仍未显示在前面,但您可以通过查看源代码查看数据。
因为Opencart使用脚本函数function Display()
来显示产品(view&amp; list)
(参见script_bottom div之后的脚本标记内的代码)
它会覆盖显示类(product-list和product-grid) 所以在脚本中添加它
var manufacturer= $(element).find('.manufacturer').html();
if (manufacturer != null) {
html += '<div class="rating">' + manufacturer + '</div>';
}
将代码保存在if和else条件中,以便制造商同时出现在List和grid视图中。 希望这有帮助