So here I am again. But now I know for certain that it's possible to have a template with a cart that adds/subtracts single products, and a template with a cart that adds/subtracts 6 products each time!
I can't seem to get it working right together at the same time though, but perhaps someone could help me with this?
This is what I did so far:
in components/com_virtuemar/assets/js/vmprices.js, about line 86 I added:
plus6 = cart.find('.quantity-plus6'),
minus6 = cart.find('.quantity-minus6'),
and changed:
plus.click(function() {
var Qtt = parseInt(quantity.val());
if (Qtt != NaN) {
quantity.val(Qtt + 1);
Virtuemart.setproducttype(cart,virtuemart_product_id);
}
});
minus.click(function() {
var Qtt = parseInt(quantity.val());
if (Qtt != NaN && Qtt>1) {
quantity.val(Qtt - 1);
} else quantity.val(1);
Virtuemart.setproducttype(cart,virtuemart_product_id);
});
select.change(function() {
Virtuemart.setproducttype(cart,virtuemart_product_id);
});
radio.change(function() {
Virtuemart.setproducttype(cart,virtuemart_product_id);
});
quantity.keyup(function() {
Virtuemart.setproducttype(cart,virtuemart_product_id);
});
to:
plus6.click(function() {
var Qtt = parseInt(quantity.val());
if (Qtt != NaN) {
quantity.val(Qtt + 6);
Virtuemart.setproducttype(cart,virtuemart_product_id);
}
});
minus6.click(function() {
var Qtt = parseInt(quantity.val());
if (Qtt != NaN && Qtt>6) {
quantity.val(Qtt - 6);
} else quantity.val(6);
Virtuemart.setproducttype(cart,virtuemart_product_id);
});
select.change(function() {
Virtuemart.setproducttype(cart,virtuemart_product_id);
});
radio.change(function() {
Virtuemart.setproducttype(cart,virtuemart_product_id);
});
quantity.keyup(function() {
Virtuemart.setproducttype(cart,virtuemart_product_id);
});
and saved it as vmprices6.js
in components/com_virtuemart/views/productdetails/tmpl/default_addtocart.php, I changed:
<span class="quantity-controls js-recalculate">
<input type="button" class="quantity-controls quantity-plus" />
<input type="button" class="quantity-controls quantity-minus" />
</span>
to:
<span class="quantity-controls js-recalculate">
<input type="button" class="quantity-controls quantity-plus6" />
<input type="button" class="quantity-controls quantity-minus6" />
</span>
and saved this file as default_addtocart6.php
in components/com_virtuemart/views/productdetails/tmpl/default.php, I changed:
<?php
// Add To Cart Button
// if (!empty($this->product->prices) and !empty($this->product->images[0]) and $this->product->images[0]->file_is_downloadable==0 ) {
if (!VmConfig::get('use_as_catalog', 0) and !empty($this->product->prices)) {
echo $this->loadTemplate('addtocart');
} // Add To Cart Button END
?>
to:
<?php
// Add To Cart Button
// if (!empty($this->product->prices) and !empty($this->product->images[0]) and $this->product->images[0]->file_is_downloadable==0 ) {
if (!VmConfig::get('use_as_catalog', 0) and !empty($this->product->prices)) {
echo $this->loadTemplate('addtocart6');
} // Add To Cart Button END
?>
and saved this as default-per-6-flessen.php
Next, in VM-backend, I opened one article, set the article template to default-per-6-flessen and the minimum order to 6, and it worked!
But when I combine the code for the normal cart with this above, it isn't working anymore.
The file components/com_virtuemart/assets/js/vmprices6.js so far:
if(typeof Virtuemart==="undefined")
var Virtuemart = {
setproducttype : function(form,id){
var $ = jQuery ;
form.view = null ;
var datas = form.serialize(),
prices = $("#productPrice"+id);
datas = datas.replace("&view=cart", "");
prices.fadeTo("fast", 0.75);
$.getJSON(window.vmSiteurl+'index.php?option=com_virtuemart&nosef=1&view=productdetails&task=recalculate&format=json'+window.vmLang,encodeURIComponent(datas),
function(datas, textStatus) {
prices.fadeTo("fast", 1);
// refresh price
for(key in datas) {
var value = datas[key];
if (value!=0) prices.find("span.Price"+key).show().html(value);
else prices.find(".Price"+key).html(0).hide();
}
});
return false; // prevent reload
},
productUpdate : function(mod) {
var $ = jQuery ;
$.ajaxSetup({ cache: false })
$.getJSON(window.vmSiteurl+"index.php?option=com_virtuemart&nosef=1&view=cart&task=viewJS&format=json"+window.vmLang,
function(datas, textStatus) {
if (datas.totalProduct >0) {
mod.find(".vm_cart_products").html("");
$.each(datas.products, function(key, val) {
$("#hiddencontainer .container").clone().appendTo(".vmCartModule .vm_cart_products");
$.each(val, function(key, val) {
if ($("#hiddencontainer .container ."+key)) mod.find(".vm_cart_products ."+key+":last").html(val) ;
});
});
mod.find(".total").html(datas.billTotal);
mod.find(".show_cart").html(datas.cart_show);
}
mod.find(".total_products").html(datas.totalProductTxt);
}
);
},
sendtocart : function (form){
var $ = jQuery ;
if (Virtuemart.addtocart_popup ==1) {
$.ajaxSetup({ cache: false })
var datas = form.serialize();
$.getJSON(vmSiteurl+'index.php?option=com_virtuemart&nosef=1&view=cart&task=addJS&format=json'+vmLang,encodeURIComponent(datas),
function(datas, textStatus) {
if(datas.stat ==1){
//var value = form.find('.quantity-input').val() ;
var txt = form.find(".pname").val()+' '+vmCartText;
$.facebox.settings.closeImage = closeImage;
$.facebox.settings.loadingImage = loadingImage;
$.facebox.settings.faceboxHtml = faceboxHtml;
$.facebox({ text: datas.msg +"<H4>"+txt+"</H4>" }, 'my-groovy-style');
} else if(datas.stat ==2){
var value = form.find('.quantity-input').val() ;
var txt = form.find(".pname").val();
$.facebox.settings.closeImage = closeImage;
$.facebox.settings.loadingImage = loadingImage;
$.facebox.settings.faceboxHtml = faceboxHtml;
$.facebox({ text: datas.msg +"<H4>"+txt+"</H4>" }, 'my-groovy-style');
} else {
$.facebox.settings.closeImage = closeImage;
$.facebox.settings.loadingImage = loadingImage;
$.facebox.settings.faceboxHtml = faceboxHtml;
$.facebox({ text: "<H4>"+vmCartError+"</H4>"+datas.msg }, 'my-groovy-style');
}
if ($(".vmCartModule")[0]) {
Virtuemart.productUpdate($(".vmCartModule"));
}
});
$.ajaxSetup({ cache: true });
} else {
form.append('<input type="hidden" name="task" value="add" />');
form.submit();
}
},
product : function(carts) {
carts.each(function(){
var cart = jQuery(this),
addtocart = cart.find('input.addtocart-button'),
plus = cart.find('.quantity-plus'),
minus = cart.find('.quantity-minus'),
plus6 = cart.find('.quantity-plus6'),
minus6 = cart.find('.quantity-minus6'),
select = cart.find('select'),
radio = cart.find('input:radio'),
virtuemart_product_id = cart.find('input[name="virtuemart_product_id[]"]').val(),
quantity = cart.find('.quantity-input');
addtocart.click(function(e) {
Virtuemart.sendtocart(cart);
return false;
});
plus.click(function() {
var Qtt = parseInt(quantity.val());
if (Qtt != NaN) {
quantity.val(Qtt + 1);
Virtuemart.setproducttype(cart,virtuemart_product_id);
}
});
minus.click(function() {
var Qtt = parseInt(quantity.val());
if (Qtt != NaN && Qtt>1) {
quantity.val(Qtt - 1);
} else quantity.val(1);
Virtuemart.setproducttype(cart,virtuemart_product_id);
});
select.change(function() {
Virtuemart.setproducttype(cart,virtuemart_product_id);
});
radio.change(function() {
Virtuemart.setproducttype(cart,virtuemart_product_id);
});
quantity.keyup(function() {
Virtuemart.setproducttype(cart,virtuemart_product_id);
});
plus6.click(function() {
var Qtt = parseInt(quantity.val());
if (Qtt != NaN) {
quantity.val(Qtt + 6);
Virtuemart.setproducttype(cart,virtuemart_product_id);
}
});
minus6.click(function() {
var Qtt = parseInt(quantity.val());
if (Qtt != NaN && Qtt>6) {
quantity.val(Qtt - 6);
} else quantity.val(6);
Virtuemart.setproducttype(cart,virtuemart_product_id);
});
select.change(function() {
Virtuemart.setproducttype(cart,virtuemart_product_id);
});
radio.change(function() {
Virtuemart.setproducttype(cart,virtuemart_product_id);
});
quantity.keyup(function() {
Virtuemart.setproducttype(cart,virtuemart_product_id);
});
});
}
};
jQuery.noConflict();
jQuery(document).ready(function($) {
Virtuemart.product($(".product"));
$("form.js-recalculate").each(function(){
if ($(this).find(".product-fields").length) {
var id= $(this).find('input[name="virtuemart_product_id[]"]').val();
Virtuemart.setproducttype($(this),id);
}
});
});
Since I'm no scripter, can someone please tell me where I went wrong?