0

我正在尝试在 VM 中添加一个“添加到购物车按钮”,在默认的 mercurial 主页上,如下所示:

<form method="post" action="<?php echo JRoute::_ ('index.php'); ?>">
    <input name="quantity" type="hidden" value="1" />
    <div class="addtocart-bar">
        <span class="addtocart-button">
            <?php echo shopFunctionsF::getAddToCartButton ($product->orderable); ?>
        </span>
        <div class="clear"></div>
    </div>
    <input type="hidden" class="pname" value="<?php echo htmlentities($product->product_name, ENT_QUOTES, 'utf-8') ?>"/>
    <input type="hidden" name="option" value="com_virtuemart"/>
    <input type="hidden" name="view" value="cart"/>
    <noscript><input type="hidden" name="task" value="add"/></noscript>
    <input type="hidden" name="virtuemart_product_id[]" value="<?php echo $product->virtuemart_product_id ?>"/>
    <input name="quantity[]" type="hidden" value="1" />
</form>

问题是这似乎没有将订单添加到 VM 会话购物车中,因此 S5 Column Ajax Cart 也没有更新。它只是将我带到购物车页面而不向购物车添加任何内容。

我在 VM 中使用 ajax 弹出功能,所以基本上它应该弹出通知,在我关闭模式后,它应该让我留在同一页面上,而不会将我重定向到购物车。我有一个想法,我错过了一些 JS 或 PHP 方法,但我无法弄清楚。

我在模板文件夹中的 html 覆盖中的 default_products.php 中执行此操作。

请注意,此功能适用于所有其他开箱即用的带有“添加到购物车”按钮的页面。

我错过了页面上需要的东西吗?

我正在运行最新的 VM2 和 Joomla 2.5.14 Stable。我正在使用 Virtuemarttemplates.net “Echo”模板。

谢谢

雅克

4

1 回答 1

0

好问题,我已经在我的一个自定义组件页面中实现了这个概念。您可以在任何地方使用它,只需提供产品 ID 和数量。以下是您必须在页面上实现的代码:

不要忘记更改以下 div 中的变量:

数量 = "1"将 1 替换为您的数量

"$res->virtuemart_product_id"将其替换为您的产品 ID

将以下 div 放在您的页面中:

<div class="addtocart-bar">
  <span class="addtocart-button" style="float:right !important;"> 
    <input type="submit" url='<?php echo JRoute::_("index.php?option=com_virtuemart&nosef=1&view=cart&task=addJS&format=json&lang=en&quantity=1&quantity%5B%5D=1&view=cart&virtuemart_product_id%5B%5D=$res->virtuemart_product_id&option=com_virtuemart"); ?>' title="Add to Cart" value="Add to Cart" id="btn_addtocart" class="bttn right" name="addtocart">
  </span>
<div class="clear"></div>
</div>

在页面顶部,您必须添加以下代码:

<script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>
<script>
jQuery(document).ready(function(){

    jQuery("[name=addtocart]").click(function(e){

        e.preventDefault();

        var url = $(this).attr('url');

            jQuery.ajax({
                type:"POST",
                url: url,
                async:false,
                data:{'p_id' : 1 },
                success: function(html){
                    var msg ="<div id='fancybox-content'><div style='width:auto;height:auto;overflow: auto;position:relative;'><div class='popUp_Box'><p>This item has been added to your shopping cart.</p><a class='continue bttn rmv_brdr btn_fix' href='index.php?option=com_virtuemart&view=categories&virtuemart_category_id=0'>Keep Shopping</a><?php if($user->id){ ?><a href='index.php?option=com_virtuemart&view=cart' class='showcart floatright bttn btn_fix'>Check Out</a><?php }else{ ?><a href='index.php?option=com_users&view=login&checkout=1' class='showcart floatright bttn btn_fix'>Check Out</a><?php } ?></div></div></div><a id='fancybox-close' style='display: block;'></a>";

                    jQuery.fancybox({
                                "titlePosition" :   "inside",
                                "transitionIn"  :   "elastic",
                                "transitionOut" :   "elastic",
                                "type"          :   "html",
                                "autoCenter"    :   true,
                                "closeBtn"      :   true,
                                "closeClick"    :   false,
                                "content"       :   msg
                            }
                        );

                }
            });
    });

    });
</script>

如果您在根文件夹中保存了 fancybox 插件,上述脚本将起作用,为此请从“ http://fancyapps.com/fancybox/#license ”下载 fancybox 插件。我使用了fancybox,因为当订单添加到购物车时,您的订单确认将出现在fancybox 中,看起来很棒。我还附上了一张图片,以显示您必须在哪里添加 fancybox 插件文件夹。我希望这会对你有很大帮助。

将fancybox插件文件夹放在这个位置。

问候

莫希特:)

于 2013-10-24T06:30:17.667 回答