2013-08-30 136 views
1

我对opencart颇为陌生,目前我正在开发一个商店,我需要能够在购物车内显示产品属性。我全面搜索,但显然没有人需要这个功能。 我简短的说,我试图复制在产品页面中检索属性的方式,但没有成功。 我修改控制器加入这一行:购物车中的产品属性opencart

$this->data['attribute_groups'] = $this->model_catalog_product->getProductAttributes($this->request->get['product_id']); 

我还添加:

<?php foreach ($attribute_groups as $attribute_group) { ?> 
    <?php echo $attribute_group['name']; ?> 
    <?php foreach ($attribute_group['attribute'] as $attribute) { ?> 
    <?php echo $attribute['name']; ?> 
<?php echo $attribute['text']; ?> 
    <?php } ?> 
    <?php } ?> 
<?php } ?> 

没有更迭。 我想我必须修改某种方式system/library/cart.php。问题是我没有足够的知识去知道如何去做! 在这一点上,我决定在这里寻求帮助! 有什么想法吗?

回答

0

这并不难,因为它似乎在表面上你只需要编辑两个文件并打开3.

--1--添加方法检索属性的车类。

公开目录/模型/目录/ product.php

找到方法getProductAttributes($product_id)和整个方法复制到剪贴板。

打开system/library/cart.phpgetProducts()方法后粘贴您复制的方法。

--2--刚好高于您粘贴代码,在getProducts()方法,你会看到那里的产品阵列中的视图内置的结尾,它看起来与此类似:

$this->data[$key] = array(
    'key'    => $key, 
    'product_id'  => $product_query->row['product_id'], 
    'name'   => $product_query->row['name'], 
    'model'   => $product_query->row['model'], 
    'shipping'  => $product_query->row['shipping'], 
    'image'   => $product_query->row['image'], 
    'option'   => $option_data, 
    'download'  => $download_data, 
    'quantity'  => $quantity, 
    'minimum'   => $product_query->row['minimum'], 
    'subtract'  => $product_query->row['subtract'], 
    'stock'   => $stock, 
    'price'   => ($price + $option_price), 
    'total'   => ($price + $option_price) * $quantity, 
    'reward'   => $reward * $quantity, 
    'points'   => ($product_query->row['points'] ? ($product_query->row['points'] + $option_points) * $quantity : 0), 
    'tax_class_id' => $product_query->row['tax_class_id'], 
    'weight'   => ($product_query->row['weight'] + $option_weight) * $quantity, 
    'weight_class_id' => $product_query->row['weight_class_id'], 
    'length'   => $product_query->row['length'], 
    'width'   => $product_query->row['width'], 
    'height'   => $product_query->row['height'], 
    'length_class_id' => $product_query->row['length_class_id']     
); 

现在只需添加一个调用该getAttributes方法的数组:

'attributes' => $this->getProductAttributes($product_query->row['product_id'])

现在打开你的购物车的模板:catalog/view/theme/yourtheme/common/cart.tpl和身在何方产品选项循环是,你现在可以通过您的属性循环就像选项一样。

+0

非常感谢! –

+0

不过,没有数据显示在购物车中。我还必须修改控制器吗?再次感谢你! –

+0

我会说是,对不起。我没有意识到购物车控制器正在为购物车显示器创建一个新阵列。在控制器中查看'$ this-> data ['products'] [] = array('正在构建的内容。在上面你会看到'$ option_data'数组的创建......你应该能够以此为例来说明如何格式化和添加属性 –