チェックアウトロードダイナミックのカートサイドバー


7

1ページのチェックアウトのサイドバーでカートを使用します。

商品とカートの合計金額が表示されます。

ただし、支払いには追加の費用も使用するため、動的に読み込む必要があるため、追加の費用がかかる支払い方法を選択すると、カートが直接更新されます。

現在、カートはチェックアウト全体の再読み込み時にのみ更新されます。

どうすればそれを達成できますか?

コードxml:

<checkout_onepage_index>
    <reference name="right">
        <block type="checkout/cart_sidebar" 
               name="cart_sidebar_checkout" 
               template="checkout/cart/minicart/items.phtml" 
               after="checkout-progress-wrapper">
            <action method="addItemRender">
                <type>simple</type>
                <block>checkout/cart_item_renderer</block>
                <template>checkout/cart/sidebar/default.phtml</template>
            </action>
            <action method="addItemRender">
                <type>grouped</type>
                <block>checkout/cart_item_renderer_grouped</block>
                <template>checkout/cart/sidebar/default.phtml</template>
            </action>
            <action method="addItemRender">
                <type>configurable</type>
                <block>checkout/cart_item_renderer_configurable</block>
                <template>checkout/cart/sidebar/default.phtml</template>
            </action>
        </block>
    </reference>
</checkout_onepage_index>

カート:

<?php
$_cartQty = $this->getSummaryCount();
if (empty($_cartQty)) {
    $_cartQty = 0;
}
?>
<div class="block block-progress opc-block-progress minicart-wrapper">
    <div class="block-title-cartsidebar">WINKELMAND</div>
    <?php $_items = $this->getRecentItems() ?>
    <?php $countItems = count($_items); ?>
    <?php if ($countItems): ?>
        <div class="block-items-cartsidebar">
            <ul id="cart-sidebar" class="mini-products-list awesome">
                <?php foreach ($_items as $_item): ?>
                    <?php echo $this->getItemHtml($_item) ?>
                <?php endforeach; ?>
                <li class="subtotal-side-verzenden">
                    <span class="label-verzendkosten">Verzendkosten</span>
                    <span class="label-verzenkosten-price">Gratis</span>
                </li>
                <?php $cart = Mage::getModel('checkout/cart')->getQuote() ?>
                <?php if ($cart->getFoomanSurchargeAmount() > 0) : ?>
                    <li class="subtotal-side-paymentcost">
                        <span
                            class="label-surcharge-description"><?php echo $cart->getFoomanSurchargeDescription() ?></span>
                        <span
                            class="label-verzenkosten-price"><?php echo Mage::helper('checkout')->formatPrice($cart->getFoomanSurchargeAmount()) ?></span>
                    </li>
                <?php endif; ?>
                <li class="subtotal-side">
                        <span class="label">
                        <?php echo $this->__('Totaal') ?><?php echo Mage::helper('checkout')->formatPrice($this->getQuote()->getGrandTotal()) ?>
                            <?php if ($_subtotalInclTax = $this->getSubtotalInclTax()): ?>
                                <br/>(<?php echo Mage::helper('checkout')->formatPrice($_subtotalInclTax) ?><?php echo Mage::helper('tax')->getIncExcText(true) ?>)
                            <?php endif; ?>
                </li>
            </ul>
        </div>
        <div class="block-wijzig-cartsidebar">
            <a class="cart-link-head" href="<?php echo $this->getUrl('checkout/cart'); ?>">
                <?php echo $this->__('Wijzig uw winkelmand'); ?>
            </a>
        </div>
        <?php if ($_cartQty && $this->isPossibleOnepageCheckout()): ?>
        <?php endif ?>
    <?php else: ?>
        <p class="empty"><?php echo $this->__('You have no items in your shopping cart.') ?></p>
    <?php endif ?>
</div>

コードを見せてください。
アミットベラ

@AmitBera私の質問を編集
JGeer

回答:


1

カートのサイドバーブロックを

rwdテーマにあるmagentoのデフォルトのプロセスバーの子ブロック。Onepageのチェックアウトの各ステップとして自動的に更新されます。

そのため、参照名の右(<reference name="right">)をcheckout.progress に変更する必要があります<reference name="checkout.progress">

コード:

<checkout_onepage_index>
    <reference name="checkout.progress"> <!--change the right to checkout.progress -->
        .....
        </block>
    </reference>
</checkout_onepage_index>

echo $this->getChildHtml('cart_sidebar_checkout') コードを追加し ますcheckout/onepage/progress.phtml

プロセスバーは機能しているがカートサイドバーがレンダリングされない場合は、ハンドラーの正しい参照checkout.xmlようにxmlコードを追加する必要があります。Magentoは次を使用してすべての子ブロックの設定を解除していました:checkout_onepage_index

 <action method="unsetChildren"></action>

また、checkout_onepage_progressハンドラーでこのチェックアウトsidberを呼び出します。

<checkout_onepage_progress>
    <reference name="root">
        <block type="checkout/cart_sidebar" name="cart_sidebar_checkout" template="checkout/cart/minicart/items.phtml" >
            <action method="addItemRender">
                <type>simple</type>
                <block>checkout/cart_item_renderer</block>
                <template>checkout/cart/sidebar/default.phtml</template>
            </action>
            <action method="addItemRender">
                <type>grouped</type>
                <block>checkout/cart_item_renderer_grouped</block>
                <template>checkout/cart/sidebar/default.phtml</template>
            </action>
            <action method="addItemRender">
                <type>configurable</type>
                <block>checkout/cart_item_renderer_configurable</block>
                <template>checkout/cart/sidebar/default.phtml</template>
            </action>
        </block>
    </reference>
</checkout_onepage_progress>

ありがとう!説明どおりにコードを編集します。プロセスバーは機能しており、カートはプロセスバーに表示されています。しかし、カートは各ステップで更新されていません。更新時にのみ更新されます。また、アクションメソッドをunsetChilderenに設定します。
JGeer 2015年

回答に更新.. <action method = "unsetChildren"> </ action>を追加する必要はありません
Amit Bera

アクションメソッドunsetChilderenを削除しましたが、更新されません。
JGeer 2015年

rwdテーマ内では、checkout.xmlファイルに<reference name = "checkout.progress">も表示されません
JGeer

確認させてください...
アミットベラ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.