シナリオは次のとおりです。
ページを更新せずにカートに商品を追加するために、ajaxのカートへの追加拡張機能を使用しています。
そして、「+」と「-」のプラスとマイナスのボタン入力を追加する数量インクリメント機能を持つように list.phtml ファイルを変更しました。(ソース: http://jigowatt.co.uk/blog/magento-quantity-increments-jquery-edition/ )。
この問題は、2 つの異なる観察結果で説明されました。
1つ目/ +ボタン入力をクリックして数量を増やすと、入力ボックスで値が変化するので数量が正しく変更されますが、カートに追加ボタンをクリックすると、製品が1つしか追加されません. 何度+ボタンを押して欲しい数量を取得しても、カートに追加される数は常に1です.
2番目/数量ボックスに希望の数量を手動で入力すると、たとえば5と問題ありません。カートは5つのアイテムで更新されます。
したがって、基本的にインクリメントボタン + をクリックした場合のみ、アイテムの数は追加されず、1 つだけ追加されます。
インクリメント機能を追加し、+ ボタンと - ボタンを追加するコードは次のとおりです。
jQuery("div.quantity").append('<input type="button" value="+" id="add1" class="plus" />').prepend('<input type="button" value="-" id="minus1" class="minus" />');
jQuery(".plus").click(function()
{
var currentVal = parseInt(jQuery(this).prev(".qty").val());
if (!currentVal || currentVal=="" || currentVal == "NaN") currentVal = 0;
jQuery(this).prev(".qty").val(currentVal + 1);
});
jQuery(".minus").click(function()
{
var currentVal = parseInt(jQuery(this).next(".qty").val());
if (currentVal == "NaN") currentVal = 0;
if (currentVal > 0)
{
jQuery(this).next(".qty").val(currentVal - 1);
}
});
ここで、リスト.phtml の数量入力ボックスで ajax のカートに追加ボタンを機能させるには、いくつかの変更を行う必要がありました (ソース: http://forum.aheadworks.com/viewtopic.php?f=33&t=601 ) 。
置き換える必要がある元のコードは次のとおりです。
<!-- Find this block of code: -->
<?php if($_product->isSaleable()): ?>
<button type="button" class="button" onclick="setLocation('<?php echo $this->getAddToCartUrl($_product) ?>')"><span><span><?php echo $this->__('Add to Cart') ?></span></span></button>
<?php else: ?>
上記のフォーラム リンクで説明されているように、以下のコードに置き換える必要があります。
<!-- And replace it with this block of code: -->
<?php if($_product->isSaleable()): ?>
<script type="text/javascript">
function setQty(id, url) {
var qty = document.getElementById('qty_' + id).value;
document.getElementById('cart_button_' + id).innerHTML = '<button type="button" class="button" onclick="setLocation(\'' + url + 'qty/' + qty + '/\')"><span><span>Add to Cart</span></span></button>';
}
</script>
<label for="qty"><?php echo $this->__('Qty:') ?></label>
<input type="text" name="qty_<?php echo $_product->getId(); ?>" id="qty_<?php echo $_product->getId(); ?>" maxlength="12" value="1" onkeyup="setQty(<?php echo $_product->getId(); ?>, '<?php echo $this->getAddToCartUrl($_product) ?>');" title="<?php echo $this->__('Qty') ?>" class="input-text qty" />
<span id="cart_button_<?php echo $_product->getId(); ?>"><button type="button" class="button" onclick="setLocation('<?php echo $this->getAddToCartUrl($_product) ?>')"><span><span><?php echo $this->__('Add to Cart') ?></span></span></button></span>
<?php else: ?>
値を手動で入力した場合にのみ、カートに追加された数量が正しい理由がわかりません。+ (プラス) または - (マイナス) ボタンを使用する場合も、正しい数量をカートに追加する必要があります。何らかの理由で入力ボックスで数量が変更されますが、この値は、カートに追加をクリックした後のカート内の値ではありません (常に 1 つの製品がカートに追加されます)。
この問題の原因は何ですか? そして、これを解決するための解決策は何ですか? 今日の午後ずっと試してきたので、これを理解し、修正したいと思います。どうもありがとう。