Magento - 产品从滑块添加到迷你推车

时间:2014-01-11 14:38:58

标签: php magento magento-1.7 shopping-cart cart

我想从滑块添加产品到迷你购物车。

Slider包含多个产品缩略图(它是从管理员端动态生成的。当管理员添加产品时,产品图片也会自动添加到滑块中。)

现在我的问题是

- >如果用户点击特定缩略图,然后点击添加到购物车按钮,则应使用ajax在标题中添加迷你购物车。

- >如果我用Image获取产品ID,这还够吗?如果没有,需要什么参数?

我对Magento没有更多的了解,如果你知道上面的一点,请指导我。解决问题对我更有帮助。

1 个答案:

答案 0 :(得分:3)

截至本文:(EE 1.12或CE 1.7)

将产品添加到(迷你)购物车/购物车仍然是整个网站的相同过程,但是,您在哪里添加此滑块? 主页?产品列表页面?产品视图/详细信息页面?其他

1)是的,如果您通过以下方式正确链接产品:链接,图像或(添加到购物车)按钮,您可以将该项目添加到购物车。见下文。

2)我们使用ID / SKU检索产品信息,然后检索图像/小/缩略图图像以及标签,短/长描述或任何其他产品相关数据到SKU / ID,所以是的产品ID足以将产品添加到购物车中。

您使用的是特定滑块吗?制作自己的?

通过列表页面滑动模板,阅读,应用和扩展;不要只是复制和粘贴。

//You'll want to loop through your collection for the slider, is this collection from a category? Custom module?
<?php foreach ($_productCollection as $_product): ?>

//Get/Load the Product Id when looping through a/your collection:
<?php $product = Mage::getModel('catalog/product')->load($_product->getId()); ?>

//Get the Image/Link Information you want to display for your slider:
<a href="<?php echo $_product->getProductUrl() ?>" title="<?php echo $this->stripTags($this->getImageLabel($_product, 'small_image'), null, true) ?>" class="product-image"><img src="<?php echo $this->helper('catalog/image')->init($_product, 'small_image')->resize(100); ?>" width="100" height="100" alt="<?php echo $this->stripTags($this->getImageLabel($_product, 'small_image'), null, true) ?>" /></a>            

//Basic Add to Cart: 
<?php //echo $this->helper('checkout/cart')->getAddUrl($_product) ?> 
//Ajax Button
<button onclick="productAddToCartForm.submit()" class="button btn-cart"><span><span>Get a Quote</span></span></button>

//Basic Javascript for Button
<script type="text/javascript">
//<![CDATA[
        var productAddToCartForm = new VarienForm('product_addtocart_form');
        productAddToCartForm.submit = function(){
                if (this.validator.validate()) {
                        this.form.submit();
                }
        }.bind(productAddToCartForm);
//]]>
</script>

有关其他详细信息,以下内容也提供了完整的实现。 以下提供了一个很好的逻辑示例: http://tutorialmagento.com/add-multiple-product-to-cart-using-magento-ajax-add-cart

- 更新: Magento的EE Iphone主题还添加了视觉效果,可将产品添加到购物车中。

请参阅以下文件(EE 1.12),我必须检查CE中是否有这个文件,请记住这是一个详细信息页面,主页上的目标产品ID会有所不同,但是,找到产品ID后,其余的都适用。

应用程序/设计/前端/企业/ iphone /模板/目录/产品/ view.phtml

<?php // SAMPLE?>
<?php $_helper = $this->helper('catalog/output'); ?>
<?php $_product = $this->getProduct(); ?>
<script type="text/javascript">
    var optionsPrice = new Product.OptionsPrice(<?php echo $this->getJsonConfig() ?>);
</script>
<div id="messages_product_view"><?php echo $this->getMessagesBlock()->setEscapeMessageFlag(true)->toHtml() ?></div>
<div class="product-view">
    <form action="<?php echo $this->getSubmitUrl($_product) ?>" method="post" id="product_addtocart_form"<?php if($_product->getOptions()): ?> enctype="multipart/form-data"<?php endif; ?>>
        <div class="no-display">
            <input type="hidden" name="product" value="<?php echo $_product->getId() ?>" />
            <input type="hidden" name="related_product" id="related-products-field" value="" />
        </div>
        <div class="product-essential">

                <div class="product-img-box">
                    <?php echo $this->getChildHtml('media') ?>
                </div>

                <div class="product-shop">
                    <div class="product-main-info">
                        <div class="product-name">
                            <h1><?php echo $_helper->productAttribute($_product, $_product->getName(), 'name') ?></h1>
                        </div>
                        <?php echo $this->getChildHtml('alert_urls') ?>
                        <?php echo $this->getChildHtml('product_type_data') ?>
                    </div>
                    <?php echo $this->getChildHtml('tierprices') ?>
                    <?php echo $this->getChildHtml('extrahint') ?>

                    <?php if (!$this->hasOptions()):?>
                        <div class="add-to-box">
                            <?php if($_product->isSaleable()): ?>
                                <?php echo $this->getChildHtml('addtocart') ?>
                            <?php endif; ?>
                        </div>
                    <?php else:?>
                        <?php if ($_product->isSaleable() && $this->hasOptions() && $this->getChildChildHtml('container1') ):?>
                            <div class="options-container-small">
                                <?php echo $this->getChildChildHtml('container1', '', true, true) ?>
                            </div>
                        <?php endif;?>
                    <?php endif; ?>

                    <?php echo $this->getChildHtml('other');?>
                </div>

        </div>

// -------

<script type="text/javascript">
//<![CDATA[
    var productAddToCartForm = new VarienForm('product_addtocart_form');
    productAddToCartForm.submit = function(button, url) {
        if (this.validator.validate()) {
            var form = this.form;
            var oldUrl = form.action;

            if (url) {
               form.action = url;
            }
            var e = null;
            try {
                var transformValue = {};

                if ( Modernizr.csstransforms3d ) {
                    transformValue[Modernizr.prefixed('transform')] = 'translate3d(-82px, -106px, 2px) scale(0) rotate(200deg)';
                } else if ( Modernizr.csstransforms ) {
                    transformValue[Modernizr.prefixed('transform')] = 'translate(-82px, -106px) scale(0) rotate(200deg)';
                } else {
                    this.form.submit();
                    return false;
                }

                var originalImg = $$('.product-image-wrap .product-image img')[0];
                originalImg.up('.product-image-wrap').insert(originalImg.clone().addClassName('cloned'));

                setTimeout(function () {
                    $$('.cloned')[0].setStyle(transformValue);
                }, 1);
                $$('.product-image-wrap .cloned')[0].observe(transEndEventName, function(e) {
                    this.form.submit();
                }.bind(this));

            } catch (e) {
            }
            this.form.action = oldUrl;
            if (e) {
                throw e;
            }

            if (button && button != 'undefined') {
                button.disabled = true;
            }
        }
    }.bind(productAddToCartForm);

    productAddToCartForm.submitLight = function(button, url){
        if(this.validator) {
            var nv = Validation.methods;
            delete Validation.methods['required-entry'];
            delete Validation.methods['validate-one-required'];
            delete Validation.methods['validate-one-required-by-name'];
            if (this.validator.validate()) {
                if (url) {
                    this.form.action = url;
                }
                this.form.submit();
            }
            Object.extend(Validation.methods, nv);
        }
    }.bind(productAddToCartForm);
//]]>
</script>