0

OpenCart の実際のカートにいくつかの変更を加えようとしています。今のところ、カートに商品を追加すると、次のように情報が表示されます。

Product1     Amount:
Size: XL       2

サイズが異なる同じ商品がカートに追加されると、新しい行が作成されます。私の願いは、カートの次のデザインを取得することです

Product1     S  M  L  XL
             1        2

そのため、各製品は 1 つの行のみを作成し、対応するサイズ カテゴリの下に正しい金額を表示します。これまでの私のコードは次のとおりです。

<?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++;
                    } 
                    ?>

コードは正しいカテゴリの下に金額をフォーマットしますが、製品ごとに 1 行だけを生成することはできません。どんな助けでも大歓迎です。

ありがとう!

4

1 に答える 1

0

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クラスがセッションで製品を保存する方法を変更する必要があります。

于 2013-02-19T20:27:26.140 に答える