0

次のように、VMのデフォルトの美徳のフロントページに「カートに追加ボタン」を追加しようとしています:

<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 列 Ajax カートも更新されないことです。カートに何も追加せずに、カート ページに移動するだけです。

私は VM で ajax ポップアップ機能を使用しているため、基本的に通知がポップアップ表示され、モーダルを閉じた後、カートにリダイレクトされずに同じページに表示されます。JS または PHP メソッドが欠落していると考えていますが、それを理解できません。

テンプレートフォルダーのhtmlオーバーライドでdefault_products.phpでこれを行っています。

この機能は、すぐにカートに追加ボタンがある他のすべてのページで機能することに注意してください。

ページに必要なものがありませんか?

最新の VM2 と Joomla 2.5.14 Stable を実行しています。Virtuemarttemplates.net の「Echo」テンプレートを使用しています。

ありがとう

ジャック

4

1 に答える 1

0

良い質問です。カスタム コンポーネント ページの 1 つにこの概念を実装しました。製品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 を使用しました。ファンシーボックスプラグインフォルダーを追加する必要がある場所を示すために、画像の1つも添付しています。これが大いに役立つことを願っています。

fancybox プラグイン フォルダをこの位置に配置します。

よろしく

モヒット:)

于 2013-10-24T06:30:17.667 に答える