gpt4 book ai didi

javascript - 如何在 Opencart 3.0 中按 sku 或按型号将产品添加到购物车

转载 作者:行者123 更新时间:2023-12-01 08:33:05 26 4
gpt4 key购买 nike

我想通过 SKU 或型号而不是产品 ID 将产品添加到购物车。这是如何添加到category.twig文件中的代码

<button type="button" onclick="cart.add('{{ product.product_id }}', '{{ product.minimum }}');"><i class="fa fa-shopping-cart"></i> <span class="hidden-xs hidden-sm hidden-md">{{ button_cart }}</span></button>

这是 js

// Cart add remove functions
var cart = {
'add': function(product_id, quantity) {
$.ajax({
url: 'index.php?route=checkout/cart/add',
type: 'post',
data: 'product_id=' + product_id + '&quantity=' + (typeof(quantity) != 'undefined' ? quantity : 1),
dataType: 'json',
beforeSend: function() {
$('#cart > button').button('loading');
},
complete: function() {
$('#cart > button').button('reset');
},
success: function(json) {
$('.alert-dismissible, .text-danger').remove();

if (json['redirect']) {
location = json['redirect'];
}

if (json['success']) {
$('#content').parent().before('<div class="alert alert-success alert-dismissible"><i class="fa fa-check-circle"></i> ' + json['success'] + ' <button type="button" class="close" data-dismiss="alert">&times;</button></div>');

// Need to set timeout otherwise it wont update the total
setTimeout(function () {
$('#cart > button').html('<span id="cart-total"><i class="fa fa-shopping-cart"></i> ' + json['total'] + '</span>');
}, 100);

$('html, body').animate({ scrollTop: 0 }, 'slow');

$('#cart > ul').load('index.php?route=common/cart/info ul li');
}
},
error: function(xhr, ajaxOptions, thrownError) {
alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText);
}
});
},
}

在上面的代码中,opencart使用product_id将产品添加到购物车,但我想通过sku或型号添加它

最佳答案

common.js中,派生自add的新方法(基本上product_id更改为sku addBySku 被调用)

    'addBySku': function(sku, quantity) {
$.ajax({
url: 'index.php?route=checkout/cart/addBySku',
type: 'post',
data: 'sku=' + sku + '&quantity=' + (typeof(quantity) != 'undefined' ? quantity : 1),
//nothing else changed from 'add' method

catalog/controller/checkout/cart.php中,派生自add方法。只需通过 sku 获取 product_id,将其放入帖子中并保持其他所有内容不变。

    public function addBySku() {
$this->load->language('checkout/cart');
$this->load->model('catalog/product');

$json = array();

if (isset($this->request->post['sku'])) {
$product_id = (int)$this->model_catalog_product->productIDBySku($this->request->post['sku']);
} else {
$product_id = 0;
}
$this->request->post['product_id'] = $product_id;


//nothing else changed from 'add' method


catalog/model/catalog/product.php中。添加此方法,通过 product_id

检索 sku
    public function productIDBySku($sku) {
$query = $this->db->query("select product_id from " . DB_PREFIX . "product where sku = '" . $this->db->escape($sku) . "'");
return $query->row['product_id'];
}

希望有帮助。不过我没有测试过。不要忘记调用正确的方法并传递 sku

<!--<button type="button" onclick="cart.add('{{ product.product_id }}',-->
<button type="button" onclick="cart.addBySku('{{ product.sku }}',

关于javascript - 如何在 Opencart 3.0 中按 sku 或按型号将产品添加到购物车,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59999567/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com