Giỏ hàng nhỏ hiển thị hình ảnh sản phẩm mẹ thay vì hình ảnh sản phẩm


8

Tôi đã nhận được mã sẽ hiển thị một sản phẩm trong giỏ hàng nhỏ bằng cách sử dụng ajax, khi khách hàng nhấp vào Thêm vào giỏ hàng. Vấn đề là nó không hiển thị hình ảnh sản phẩm con cho đến khi tôi làm mới trang đó, thay vào đó nó hiển thị Hình ảnh sản phẩm gốc. Tôi đã đi vào phần cuối và thay đổi "Hình ảnh sản phẩm có thể định cấu hình" và "Hình ảnh sản phẩm được nhóm" để hiển thị Hình ảnh sản phẩm tuy nhiên có vẻ như mã bên dưới đang bỏ qua các cài đặt này:

<?php
    $_item = $this->getItem();
    $isVisibleProduct = $_item->getProduct()->isVisibleInSiteVisibility();
    $canApplyMsrp = Mage::helper('catalog')->canApplyMsrp($_item->getProduct(), Mage_Catalog_Model_Product_Attribute_Source_Msrp_Type::TYPE_BEFORE_ORDER_CONFIRM);
?>
<li class="item">
    <?php if ($this->hasProductUrl()): ?>
        <a href="<?php echo $this->getProductUrl()?>" title="<?php echo $this->htmlEscape($this->getProductName()) ?>" class="product-image"><img src="<?php echo $this->getProductThumbnail()->resize(50, 50)->setWatermarkSize('30x10'); ?>" width="50" height="50" alt="<?php echo $this->htmlEscape($this->getProductName()) ?>" /></a>
    <?php else: ?>
        <span class="product-image"><img src="<?php echo $this->getProductThumbnail()->resize(50, 50)->setWatermarkSize('30x10'); ?>" width="50" height="50" alt="<?php echo $this->htmlEscape($this->getProductName()) ?>" /></span>
    <?php endif; ?>
    <div class="product-details">
                <p class="product-name"><?php if ($this->hasProductUrl()): ?><a href="<?php echo $this->getProductUrl() ?>"><?php endif; ?><?php echo $this->htmlEscape($this->getProductName()) ?><?php if ($this->hasProductUrl()): ?></a><?php endif; ?></p>
        <strong><?php echo $this->getQty() ?></strong> x

    <?php if ($canApplyMsrp): ?>

        <span class="map-cart-sidebar-item"><?php echo $this->__('See price before order confirmation.'); ?></span>

    <?php else: ?>

    <?php if ($this->helper('tax')->displayCartPriceExclTax() || $this->helper('tax')->displayCartBothPrices()): ?>
        <?php if ($this->helper('tax')->displayCartBothPrices()): ?>
            <?php echo $this->__('Excl. Tax'); ?>:
        <?php endif; ?>
        <?php if (Mage::helper('weee')->typeOfDisplay($_item, array(0, 1, 4), 'sales')): ?>
            <?php echo $this->helper('checkout')->formatPrice($_item->getCalculationPrice()+$_item->getWeeeTaxAppliedAmount()+$_item->getWeeeTaxDisposition()); ?>
        <?php else: ?>
            <?php echo $this->helper('checkout')->formatPrice($_item->getCalculationPrice()) ?>
        <?php endif; ?>
        <?php if (Mage::helper('weee')->getApplied($_item)): ?>
            <br />
            <?php if (Mage::helper('weee')->typeOfDisplay($_item, 1, 'sales')): ?>
                <small>
                <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
                    <span class="nobr"><?php echo $tax['title']; ?>: <?php echo Mage::helper('checkout')->formatPrice($tax['amount'],true,true); ?></span><br />
                <?php endforeach; ?>
                </small>
            <?php elseif (Mage::helper('weee')->typeOfDisplay($_item, 2, 'sales')): ?>
                <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
                    <span class="nobr"><small><?php echo $tax['title']; ?>: <?php echo Mage::helper('checkout')->formatPrice($tax['amount_incl_tax'],true,true); ?></small></span><br />
                <?php endforeach; ?>
            <?php elseif (Mage::helper('weee')->typeOfDisplay($_item, 4, 'sales')): ?>
                <small>
                <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
                    <span class="nobr"><?php echo $tax['title']; ?>: <?php echo Mage::helper('checkout')->formatPrice($tax['amount_incl_tax'],true,true); ?></span><br />
                <?php endforeach; ?>
                </small>
            <?php endif; ?>
            <?php if (Mage::helper('weee')->typeOfDisplay($_item, 2, 'sales')): ?>
                <span class="nobr"><?php echo Mage::helper('weee')->__('Total'); ?>:<br /> <?php echo $this->helper('checkout')->formatPrice($_item->getCalculationPrice()+$_item->getWeeeTaxAppliedAmount()+$_item->getWeeeTaxDisposition()); ?></span>
            <?php endif; ?>
        <?php endif; ?>
    <?php endif; ?>



    <?php if ($this->helper('tax')->displayCartPriceInclTax() || $this->helper('tax')->displayCartBothPrices()): ?>
        <?php $_incl = $this->helper('checkout')->getPriceInclTax($_item); ?>
        <?php if ($this->helper('tax')->displayCartBothPrices()): ?>
            <br /><?php echo $this->__('Incl. Tax'); ?>:
        <?php endif; ?>
        <?php if (Mage::helper('weee')->typeOfDisplay($_item, array(0, 1, 4), 'sales')): ?>
            <?php echo $this->helper('checkout')->formatPrice($_incl+$_item->getWeeeTaxAppliedAmount()); ?>
        <?php else: ?>
            <?php echo $this->helper('checkout')->formatPrice($_incl-$_item->getWeeeTaxDisposition()) ?>
        <?php endif; ?>
        <?php if (Mage::helper('weee')->getApplied($_item)): ?>
            <br />
            <?php if (Mage::helper('weee')->typeOfDisplay($_item, 1, 'sales')): ?>
                <small>
                <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
                    <span class="nobr"><?php echo $tax['title']; ?>: <?php echo Mage::helper('checkout')->formatPrice($tax['amount'],true,true); ?></span><br />
                <?php endforeach; ?>
                </small>
            <?php elseif (Mage::helper('weee')->typeOfDisplay($_item, 2, 'sales')): ?>
                <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
                    <span class="nobr"><small><?php echo $tax['title']; ?>: <?php echo Mage::helper('checkout')->formatPrice($tax['amount_incl_tax'],true,true); ?></small></span><br />
                <?php endforeach; ?>
            <?php elseif (Mage::helper('weee')->typeOfDisplay($_item, 4, 'sales')): ?>
                <small>
                <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
                    <span class="nobr"><?php echo $tax['title']; ?>: <?php echo Mage::helper('checkout')->formatPrice($tax['amount_incl_tax'],true,true); ?></span><br />
                <?php endforeach; ?>
                </small>
            <?php endif; ?>
            <?php if (Mage::helper('weee')->typeOfDisplay($_item, 2, 'sales')): ?>
                <span class="nobr"><?php echo Mage::helper('weee')->__('Total incl. tax'); ?>:<br /> <?php echo $this->helper('checkout')->formatPrice($_incl+$_item->getWeeeTaxAppliedAmount()); ?></span>
            <?php endif; ?>
        <?php endif; ?>
    <?php endif; ?>

    <?php endif; //Can apply MSRP ?>

        <?php if ($_options = $this->getOptionList()):?>
        <div class="truncated">
          <div class="truncated_full_value">
            <dl class="item-options">
                <?php foreach ($_options as $_option) : ?>
                <dt><?php echo $this->htmlEscape($_option['label']) ?></dt>
                <dd>
                    <?php if (is_array($_option['value'])): ?>
                    <?php echo nl2br(implode("\n", $_option['value'])) ?>
                    <?php else: ?>
                    <?php echo $_option['value'] ?>
                    <?php endif; ?>
                </dd>
                <?php endforeach; ?>
            </dl>
          </div>

        </div>
        <?php endif; ?>
        <a href="<?php 
            $params = $this->getRequest()->getParams();
            if($params['isAjax'] == 1){
                $refererUrl = Mage::registry('referrer_url');
                if (empty($refererUrl)) {
                    $refererUrl = Mage::getBaseUrl();
                }
                $deleteUrl = $this->getUrl(
                    'checkout/cart/delete',
                    array(
                        'id'=>$_item->getId(),
                        Mage_Core_Controller_Front_Action::PARAM_NAME_URL_ENCODED => $this->helper('core/url')->getEncodedUrl($refererUrl)
                    )
                );
            }else{
                $deleteUrl = $this->getDeleteUrl();
            }
            echo $deleteUrl; 
        ?>" title="<?php echo $this->__('Remove This Item') ?>" onclick="return confirm('<?php echo $this->__('Are you sure you would like to remove this item from the shopping cart?') ?>');" class="btn-remove"><?php echo $this->__('Remove This Item') ?></a>
        <?php if ($isVisibleProduct): ?>
        <a href="<?php echo $this->getConfigureUrl() ?>" title="<?php echo $this->__('Edit item') ?>" class="btn-edit"><?php echo $this->__('Edit item')?></a>
        <?php endif ?>

    </div>
</li>

Sử dụng ajax gọi lại để làm mới khối giỏ hàng nhỏ kích hoạt sau khi hoàn thành thêm vào giỏ hàng bằng cuộc gọi ajax. <br /> Tôi biết đây không phải là một giải pháp thích hợp nhưng cho đến thời điểm đó chúng ta có thể sử dụng cách này.
Piyush

Tôi gặp vấn đề tương tự. Mã nào bạn đã thay đổi để thực sự giải quyết điều này?
Justin

Câu trả lời:


3

Khối Mage_Checkout_Block_Cart_Item_Renderernày có chức năng overrideProductThumbnailsẽ cập nhật hình thu nhỏ nào sẽ được sử dụng khi kết xuất sản phẩm trong giỏ hàng.

Trong _toHtmltrình kết xuất sản phẩm được nhóm, Mage_Checkout_Block_Cart_Item_Renderer_Groupedcái này được gọi.

protected function _toHtml()
{
    $renderer = $this->getRenderedBlock()->getItemRenderer($this->getItem()->getRealProductType());
    $renderer->setItem($this->getItem());
    $renderer->overrideProductThumbnail($this->getProductThumbnail());
    $rendererHtml = $renderer->toHtml();
    $renderer->overrideProductThumbnail(null);
    return $rendererHtml;
}

Dường như với tôi rằng bạn chưa thêm trình kết xuất mục chính xác cho các loại sản phẩm này. Xem tệp xml bố cục app/design/frontend/base/default/layout/checkout.xmlđể biết cách này có thể đạt được.

<block type="checkout/cart_sidebar" name="cart_sidebar" template="checkout/cart/sidebar.phtml" before="-">
    <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 type="core/text_list" name="cart_sidebar.extra_actions" as="extra_actions" translate="label" module="checkout">
        <label>Shopping Cart Sidebar Extra Actions</label>
    </block>
</block>

Đây hoàn toàn là câu trả lời chính xác, vì nó hoạt động cho dự án của tôi bằng chủ đề PolarCore và nó không tải hình thu nhỏ chính xác. CẢM ƠN BẠN.
Joe

Vậy làm thế nào bạn thêm các trình kết xuất chính xác vào phản hồi AJAX của bạn?
Justin

2

Đối với tôi vấn đề là ở

Mage_Catalog_Model_Product_Type_Configurable::getProductByAttributes

Tôi cần ghi đè phương thức và thêm 'hình thu nhỏ' vào phần chọn. I E

$productCollection = $this->getUsedProductCollection($product)->addAttributeToSelect('name')->addAttributeToSelect('thumbnail');

EE 1.14.x


0

Sử dụng:

if($product->getTypeId() == 'configurable'){
    $child = $product->getTypeInstance(true)->getProductByAttributes($params['super_attribute'], $product);
    $product = $child;
}

Điều này đặt sản phẩm cho trẻ em.

Sau đó sử dụng:

Mage::helper('catalog/image')->init($product, 'thumbnail');

để có được hình thu nhỏ cho minicart của bạn ^ _ ^

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.