2013-02-19 205 views
0

我想在OpenCart中对实际购物车进行一些更改。 至于现在将产品添加到购物车信息时,将显示方式如下:自定义购物车的“OpenCart”

Product1  Amount: 
Size: XL  2 

如果相同的产品一个新行被创建,但具有不同的尺寸,添加到购物车。 我的愿望是让车

Product1  S M L XL 
      1  2 

所以以下的设计,每个产品只能创建一个,单行,然后显示在相应尺寸等级的正确的金额。 这是我到目前为止的代码:

<?php 
      $saveName = array(); 
      $sizesArray = array("S","M","L","XL"); 
      $x = 0; 
       if($products || $vouchers) { 
        foreach ($products as $product){ 
         foreach ($product['option'] as $option) { 
          $option['value']; 
          } 

        $saveName[$x] = $product['name'].'|'.$option['value'].'|'.$product['quantity']; 
        $seperateValues = explode("|",$saveName[$x]); 
        ?> 
        <tr> 
         <td class="image"><?php if ($product['thumb']) { ?> 
         <a href="<?php echo $product['href']; ?>"><img src="<?php echo $product['thumb']; ?>" alt="<?php echo $product['name']; ?>" title="<?php echo $product['name']; ?>" /></a> 
         <?php } ?></td> 
         <td class="name"><a href="<?php echo $product['href']; ?>"><?php echo $product['name']; ?></a></td> 

         <?php 
         foreach($sizesArray as $sizes){ 
          if($sizes == $seperateValues[1]){ 
           echo '<td>'.$seperateValues[0].' '.$seperateValues[2].'</td>'; 
           } 
          else{ 
           echo '<td>0</td>'; 
           } 
         } 
         ?> 

         <td class="total"><?php echo $product['total']; ?></td> 
         <td class="remove">Remove</td> 
        </tr> 


        <?php 
        $x++; 
        } 
        ?> 

的编码格式下正确的类别数量,但我不能让它产生只有一排为每个产品。任何帮助都非常appriciated。

谢谢!

回答

0

修改模板不会完成这项工作,因为Opencart内部以product_id:serialized_array_of_options格式将产品存储在数组中,因此具有相同标识但具有不同选项组合的产品将分开存储。你可以看到,在/system/library/cart.php,在方法的getProducts:

foreach ($this->session->data['cart'] as $key => $quantity) { 

    $product = explode(':', $key); 
    $product_id = $product[0]; 
    $stock = true; 

    // Options 
    if (isset($product[1])) { 
     $options = unserialize(base64_decode($product[1])); 
    } else { 
     $options = array(); 
    } 

所以来实现的,你想要什么,你将不得不做出改变的方式车类存储产品的会话。

+0

对于如何编辑代码以获得我需要的结果,您有什么建议吗? – JacobC 2013-02-19 20:35:58