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

时间:2013-12-10 22:14:37

标签: php opencart

我正在尝试在除Product之外的其他视图中显示一些产品信息,但我遇到了问题。

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

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

并添加内部产品数组:

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

并在我的Category.tpl查看文件中:

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

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

感谢。

3 个答案:

答案 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视图中。 希望这有帮助