При нажатии кнопки "Добавить в корзину" текст кнопки не меняется на "добавить" и "добавлено"
После нажатия кнопки "Добавить в корзину" текст кнопки не меняется на "добавить" или "добавлено".В некоторых местах он работает, но на странице описания продукта, и мы создали виджет рекомендуемого продукта на домашней странице в обоих этих местах, он не работает.где мне нужно изменить код для этого.
2 answers
Основной файл отвечает за изменение метки Adding...
и Added
является
Magento\Catalog\view\frontend\web\js\catalog-add-to-cart.js
Когда вы нажимаете на кнопку Add to Cart
, она выполняет функцию submitForm
из этого файла,
submitForm: function (form) {
var addToCartButton, self = this;
if (form.has('input[type="file"]').length && form.find('input[type="file"]').val() !== '') {
self.element.off('submit');
// disable 'Add to Cart' button
addToCartButton = $(form).find(this.options.addToCartButtonSelector);
addToCartButton.prop('disabled', true);
addToCartButton.addClass(this.options.addToCartButtonDisabledClass);
form.submit();
} else {
self.ajaxSubmit(form);
}
}
И после этого Он выполняет функцию self.ajaxSubmit(form)
из того же файла,
В этой функции вы можете увидеть строку
self.disableAddToCartButton(form);
Эта строка отвечает за изменение метки Adding..
disableAddToCartButton: function (form) {
var addToCartButtonTextWhileAdding = this.options.addToCartButtonTextWhileAdding || $t('Adding...'),
addToCartButton = $(form).find(this.options.addToCartButtonSelector);
addToCartButton.addClass(this.options.addToCartButtonDisabledClass);
addToCartButton.find('span').text(addToCartButtonTextWhileAdding); // from here it change the label
addToCartButton.attr('title', addToCartButtonTextWhileAdding);
}
И после этого в функции успеха Ajax Он вызывает self.enableAddToCartButton(form);
эта функция изменяется этикетка для Added
enableAddToCartButton: function (form) {
var addToCartButtonTextAdded = this.options.addToCartButtonTextAdded || $t('Added'),
self = this,
addToCartButton = $(form).find(this.options.addToCartButtonSelector);
addToCartButton.find('span').text(addToCartButtonTextAdded);
addToCartButton.attr('title', addToCartButtonTextAdded);
setTimeout(function () {
var addToCartButtonTextDefault = self.options.addToCartButtonTextDefault || $t('Add to Cart');
addToCartButton.removeClass(self.options.addToCartButtonDisabledClass);
addToCartButton.find('span').text(addToCartButtonTextDefault); // from here it change the label
addToCartButton.attr('title', addToCartButtonTextDefault);
}, 1000);
}
Поэтому просто отладьте этот файл и местоположение, чтобы проверить вашу проблему. Кроме того, проверьте консоль, чтобы увидеть любую ошибку.
Взгляните на этот файл: vendor/magento/module-catalog/view/frontend/web/js/catalog-add-to-cart.js
. Вы можете видеть, как это работает.
Если вам интересно знать, как его переопределить. Следует использовать mixins
Мы можем создать модуль, а затем добавить эти файлы:
App/code/Vendor/Module/view/frontend/requirejs-config.js
var config = {
config: {
mixins: {
'Magento_Catalog/js/catalog-add-to-cart': {
'Vendor_Module/js/catalog-add-to-cart-mixin': true
}
}
}
};
App/code/Vendor/Module/view/frontend/web/js/catalog-add-to-cart-mixin.js
define([
'jquery',
'mage/translate',
'jquery/ui'
],
function ($, $t) {
'use strict';
return function (target) {
$.widget('mage.catalogAddToCart', target, {
options: {
addToCartButtonTextWhileAdding: $t('Adding Testing...'),
addToCartButtonTextAdded: $t('Added Testing'),
addToCartButtonTextDefault: $t('Add to Cart Testing')
}
});
return $.mage.catalogAddToCart;
};
});