我正在使用Opencart 2.0,我正在尝试从类别页面和产品页面获取数量字段。我之前在版本1.5中设法做得很好但是代码自那以后发生了很大变化。 使用Opencart V 1.5,我使用了Siven Sadiyan(http://siven76.com/2013/04/29/opencart-add-a-quantity-box-on-product-list-pages/)提供的解决方案,该解决方案的解决方案非常出色,只需要对common.js和category.tpl进行调整,我就可以将其应用于其他各种页面了。作为搜索结果和模块。 到目前为止,由于代码和术语已经改变,我无法修改它以适应Opencart版本2.0+。我已经尝试了几种扩展,但目前似乎没有什么工作解决方案,除了硬编码和手动编码,到目前为止它对我来说还不顺利!我正在寻找的只是功能,我并不担心布局。
自解决以前的Opencart版本以来,common.js文件发生了变化,我知道它涉及以下代码(ps,滚动到顶部从以下代码中删除,但只有一行从原始版本更改):
// Cart add remove functions
var cart = {
'add': function(product_id, quantity) {
jQuery.ajax({
url: 'index.php?option=com_mijoshop&route=checkout/cart/add&format=raw&tmpl=component',
type: 'post',
data: 'product_id=' + product_id + '&quantity=' + (typeof(quantity) != 'undefined' ? quantity : 1),
dataType: 'json',
beforeSend: function() {
jQuery('#cart > button').button('loading');
},
success: function(json) {
jQuery('.alert, .text-danger').remove();
jQuery('#cart > button').button('reset');
if (json['redirect']) {
location = json['redirect'];
}
if (json['success']) {
jQuery('#content_oc').parent().before('<div class="shopnotification"><i class="fa fa-check-circle"></i> ' + json['success'] + '<button type="button" class="close" data-dismiss="alert">×</button></div>');
jQuery('#cart-total,#cart > a > span').html(json['total']);
jQuery('.shopnotification').fadeIn(1000).delay(3000).fadeOut(1500);
jQuery('#cart > ul,#module_cart > ul').load('index.php?option=com_mijoshop&route=common/cart/info&format=raw&tmpl=component ul li');
}
}
});
},
第二个文件是category.tpl代码(我认为成功更改时可以在其他区域更改):
<div class="button-group">
<button type="button" onclick="cart.add('<?php echo $product['product_id']; ?>');"><i class="fa fa-shopping-cart"></i> <span class="hidden-xs hidden-sm hidden-md"><?php echo $button_cart; ?></span></button>
<button type="button" data-toggle="tooltip" title="<?php echo $button_wishlist; ?>" onclick="wishlist.add('<?php echo $product['product_id']; ?>');"><i class="fa fa-heart"></i></button>
<button type="button" data-toggle="tooltip" title="<?php echo $button_compare; ?>" onclick="compare.add('<?php echo $product['product_id']; ?>');"><i class="fa fa-exchange"></i></button>
</div>
任何有此解决方案的人都将不胜感激!如果我自己运气好的话,我会回复,但是经过长时间的划伤,我的咖啡很少!
答案 0 :(得分:2)
感谢Xyph3r在Opencart论坛上,你的旧版本1.5给了我一个对Opencart版本2很有用的替代品的线索!链接到我的线索:http://forum.opencart.com/viewtopic.php?f=20&t=99990 对于其他人来说,这就是我所做的,它可以被改编成vqmod或ocmod,所以更新不会覆盖这个,但这里是基础知识: Category.tpl: 找到这一行:
<div class="button-group">
<button type="button" onclick="cart.add('<?php echo $product['product_id']; ?>');"><i class="fa fa-shopping-cart"></i> <span class="hidden-xs hidden-sm hidden-md"><?php echo $button_cart; ?></span></button>
将其更改为:
<input type="text" value="1" size="2" class="item-<?php echo $product['product_id']; ?>" />
<div class="button-group">
<button type="button" value="<?php echo $button_cart; ?>" onclick="addQtyToCart('<?php echo $product['product_id']; ?>');"><i class="fa fa-shopping-cart"></i> <span class="hidden-xs hidden-sm hidden-md"><?php echo $button_cart; ?></span></button>
在文件的底部,在回显页脚之前添加以下行,这样文件的末尾如下所示:
<script type="text/javascript"><!--
function addQtyToCart(product_id) {
var qty = $('.item-' + product_id).val();
if ((parseFloat(qty) != parseInt(qty)) || isNaN(qty)) {
qty = 1;
}
cart.add(product_id, qty);
}
//--></script>
<?php echo $footer; ?>
希望这有助于他人。请注意,这只将数量字段放在现有按钮上方添加到购物车,愿望清单和比较,它看起来不会很漂亮,所以这一切都取决于你和你的风格(主题)!