Я изменил текст "Добавить в корзину" на "Я хочу это" путем переопределения " vendor\magento\module-catalog\view\frontend\templates\product\list.phtml
".
Но когда я нажимаю кнопку «Я хочу это» (т.е. «Добавить в корзину»), товар добавляется в корзину, а затем снова появляется текст «Добавить в корзину».
Я думаю, что продукт добавляется через вызов ajax, поэтому вновь добавленный текст не отображается после вызова ajax и отображается текст «Добавить в корзину».
Я пробовал это:
Я создал собственное расширение Ved_Mymodule .
Я проверил, что расширение активно.
После этого я выполнил следующие действия:
Приложение / код / Ved / MyModule / просмотр / интерфейс / requirejs-config.js:
var config = {
map: {
'*': {
catalogAddToCart:'Ved_Mymodule/js/customCatalogAddToCart'
}
}
};
Приложение / код / Ved / MyModule / вид / интерфейс / веб / JS / customCatalogAddToCart.js:
define([
'jquery',
'mage/translate',
'jquery/ui'
], function($, $t) {
"use strict";
$.widget('Ved_Mymodule.customCatalogAddToCart',$.mage.catalogAddToCart, {
//Override function
disableAddToCartButton: function(form) {
var addToCartButtonTextWhileAdding = this.options.addToCartButtonTextWhileAdding || $t('Adding...');
var addToCartButton = $(form).find(this.options.addToCartButtonSelector);
addToCartButton.addClass(this.options.addToCartButtonDisabledClass);
addToCartButton.find('span').text(addToCartButtonTextWhileAdding);
addToCartButton.attr('title', addToCartButtonTextWhileAdding);
console.log('Hello 1');
},
enableAddToCartButton: function(form) {
var addToCartButtonTextAdded = this.options.addToCartButtonTextAdded || $t('Added');
var self = this,
addToCartButton = $(form).find(this.options.addToCartButtonSelector);
addToCartButton.find('span').text(addToCartButtonTextAdded);
addToCartButton.attr('title', addToCartButtonTextAdded);
setTimeout(function() {
var addToCartButtonTextDefault = 'heya..'; //self.options.addToCartButtonTextDefault || $t('Add to Cart..');
addToCartButton.removeClass(self.options.addToCartButtonDisabledClass);
addToCartButton.find('span').text(addToCartButtonTextDefault);
addToCartButton.attr('title', addToCartButtonTextDefault);
}, 1000);
console.log('Hello 2');
}
});
return $.Ved_Mymodule.customCatalogAddToCart;
});
Я пытаюсь напечатать фиктивные сообщения в консоли.
После этого: я запустил развертывание статического контента. Переиндексировать данные. Кеш чистил и промывал.
Но изменения не появляются.
requirejs-config.js
и исправьте местоположениеapp/code/Ved/Mymodule/view/frontend/requirejs-config.js
.Ответы:
Вы должны переопределить файл JS из пути
к
Вы должны изменить текст, который вы хотите из этого файла.
Дайте мне знать, если у вас есть запрос.
источник
вам нужно переопределить catalog-add-to-cart.js из пути,
Текст меняется здесь после вызова ajax. Вы можете изменить текст здесь.
источник
Текст, измененный Javascript после вызова Ajax. Мы можем посмотреть:
продавец / Magento / модуль-каталог / вид / интерфейс / веб / JS / каталог-дополнение к cart.js
Для лучшей практики следует использовать
mixins
для «переопределения»:Мы можем создать модуль, а затем добавить эти файлы:
Приложение / код / Vendor / модуль / просмотр / интерфейс / requirejs-config.js
Приложение / код / Vendor / модуль / вид / интерфейс / веб / JS / каталог-дополнение к проселочному mixin.js
источник
Примечание: ниже был протестирован в 2.1.7
Переопределение любых файлов ядра считается плохой практикой.
Вы можете просто передать параметры в функцию catalogAddToCart, которую можно найти внизу list.phtml.
Если вы посмотрите (не редактируете и не копируете) файл catalog-add-to-cart.js, вы увидите, что он принимает параметры.
продавец / Magento / модуль-каталог / вид / интерфейс / веб / JS / каталог-дополнение к cart.js
Затем откройте list.phtml в вашей теме
приложение / дизайн / интерфейс / пространство имен / тема / Magento_Catalog / шаблон / продукта / list.phtml
В нижней части страницы вы найдете
Просто добавьте параметры в функцию ...
В моем случае я затем добавил перевод «Добавить в корзину» в en_GB.csv, но это может не подходить для вашей цели, так что продолжайте и отредактируйте его здесь напрямую.
источник
Пожалуйста, попробуйте это ... Чтобы перевести текст "Добавить в корзину", "Добавление ..." и "Добавлено" по ответу json, выполните следующие действия.
Шаг 1: Для изменений нужно на странице списка товаров. Перейдите в путь к файлу приложения / design / frontend / Your_Theme_Namespace / Theme_Name / Magento_Catalog / templates / product / list.phtml и замените приведенный ниже код на строку около 121
Шаг 2: Для внесения изменений нужна страница просмотра товара. Перейдите в путь к файлу приложения / design / frontend / Your_Theme_Namespace / Theme_Name / Magento_Catalog / templates / product / view / addtocart.phtml и замените код в строке около 54
Запустите следующие команды:
php bin / magento setup: static-content: deploy en_US ja_JP zh_Hans_CN
php bin / magento cache: flush Я попробовал это, и это работает для меня.
источник
Вы можете расширить каталог добавить в корзину вместо перезаписи всего файла. Это позволит вам переопределить определенные функции и добавить настраиваемые параметры в соответствии с вашими потребностями - похоже, вы хотите это сделать.
Это лучший подход, поскольку он использует оригинальную функциональность, и тогда вы меняете то, что вам нужно, а не копируете все.
Просто убедитесь, что он включен в ваш пользовательский каталог и добавлен в корзину JS, как показано в этом примере.
requirejs-config.js
customCatalogAddToCart.js
Я успешно использовал это решение для редактирования корзины JS, надеюсь, это поможет!
источник
Делать это с помощью файла CSV - лучший и самый простой способ в Magento 2!
Создайте папку i18n в вашем пользовательском модуле как:
Приложение / код / Vendor / модуль / i18n
Создайте здесь файл en_US.csv и напишите Label, который вы хотите изменить как:
Вы можете изменить довольно большое количество меток следующим образом:
Рад видеть другие ответы :)
источник