【问题标题】:Customizing the cart of "OpenCart"自定义“OpenCart”的购物车
【发布时间】:2013-02-19 18:10:43
【问题描述】:

我正在尝试对 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++;
                    } 
                    ?>

代码格式化了正确类别下的金额,但我无法让它为每个产品只生成一行。非常感谢任何帮助。

谢谢!

【问题讨论】:

    标签: php opencart


    【解决方案1】:

    修改模板是不行的,因为Opencart内部以product_id:serialized_array_of_options的格式将产品存储在数组中,所以id相同但选项组合不同的产品是分开存储的。您可以在 /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();
        }
    

    因此,要实现您想要的,您需要更改 Cart 类在会话中存储产品的方式。

    【讨论】:

    • 您对如何编辑代码以获得我需要的结果有什么建议吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-10
    • 1970-01-01
    • 1970-01-01
    • 2012-10-05
    • 1970-01-01
    • 1970-01-01
    • 2011-04-28
    相关资源
    最近更新 更多