Zmieniłem tekst „Dodaj do koszyka” na „Chcę to”, zastępując „ vendor\magento\module-catalog\view\frontend\templates\product\list.phtml
”.
Ale kiedy kliknę przycisk „Chcę to” (tzn. „Dodaj do koszyka”), produkt zostanie dodany do koszyka, a następnie ponownie przycisk „Dodaj do koszyka” pojawi się na przycisku.
Myślę, że produkt jest dodawany poprzez wywołanie ajax, dlatego nowo dodany tekst nie wyświetla się po wywołaniu ajax i wyświetla się tekst „Dodaj do koszyka”.
Próbowałem tego:
Utworzyłem niestandardowe rozszerzenie Ved_Mymodule .
Sprawdziłem, czy rozszerzenie jest aktywne.
Następnie wykonałem następujące kroki:
app / code / Ved / Mymodule / view / frontend / Requjs-config.js:
var config = {
map: {
'*': {
catalogAddToCart:'Ved_Mymodule/js/customCatalogAddToCart'
}
}
};
app / code / Ved / Mymodule / view / frontend / web / 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;
});
Próbuję wydrukować fałszywe wiadomości w konsoli.
Następnie: uruchomiłem wdrażanie zawartości statycznej. Ponownie indeksuj dane. Pamięć podręczna wyczyszczona i opróżniona.
Ale zmiany się nie pojawiają.
requirejs-config.js
i popraw lokalizacjęapp/code/Ved/Mymodule/view/frontend/requirejs-config.js
.Odpowiedzi:
Musisz zastąpić plik js ze ścieżki
Do
Musisz zmienić tekst, który chcesz z tego pliku.
Daj mi znać, jeśli masz jakieś zapytanie.
źródło
musisz zastąpić katalog z katalogu add-to-cart.js ze ścieżki,
Tekst zmienia się stąd po wywołaniu ajax. możesz zmienić tekst tutaj.
źródło
Tekst zmieniony przez Javascript po wywołaniu Ajax. Możemy spojrzeć:
vendor / magento / module-catalogue / view / frontend / web / js / catalog-add-to-cart.js
Aby uzyskać najlepszą praktykę, należy użyć opcji
mixins
„zastępowania”:Możemy stworzyć moduł, a następnie dodać te pliki:
app / code / Vendor / Module / view / frontend / Requjs-config.js
app / code / Vendor / Module / view / frontend / web / js / catalog-add-to-cart-mixin.js
źródło
Uwaga: poniżej przetestowano w 2.1.7
Przesłanianie podstawowych plików jest uważane za złą praktykę.
Możesz po prostu przekazać parametry do funkcji catalogAddToCart, która znajduje się na dole list.phtml
Jeśli spojrzysz (nie edytujesz ani nie kopiujesz) na plik catalog-add-to-cart.js, zobaczysz, że akceptuje on parametry.
vendor / magento / module-catalogue / view / frontend / web / js / catalog-add-to-cart.js
Następnie otwórz list.phtml w swoim motywie
app / design / frontend / Namespace / theme / Magento_Catalog / template / product / list.phtml
W dolnej części strony znajdziesz
Po prostu dodaj parametry do funkcji ...
W moim przypadku dodałem tłumaczenie „Dodaj do koszyka” w pliku en_GB.csv, ale może to nie pasować do twojego celu, więc zrób to bezpośrednio tutaj.
źródło
Spróbuj tego ... Aby przetłumaczyć tekst odpowiedzi „Dodaj do koszyka”, „Dodawanie ...” i „Dodane” przez odpowiedź json, wykonaj poniższe czynności.
Krok 1: W celu wprowadzenia zmian na stronie Lista produktów. Przejdź do ścieżki pliku app / design / frontend / Your_Theme_Namespace / Theme_Name / Magento_Catalog / templates / product / list.phtml i zamień poniżej kodu w linii około 121
Krok 2: Do zmian potrzebna jest strona podglądu produktu. Przejdź do ścieżki pliku app / design / frontend / Your_Theme_Namespace / Theme_Name / Magento_Catalog / templates / product / view / addtocart.phtml i zamień kod on-line około 54
Uruchom poniższe polecenia:
konfiguracja php bin / magento: zawartość statyczna: wdrożyć en_US ja_JP zh_Hans_CN
php bin / magento cache: flush Próbuję tego i działa dla mnie.
źródło
Możesz rozszerzyć katalog dodając do koszyka zamiast nadpisywania całego pliku. Umożliwi to zastąpienie niektórych funkcji i dodanie niestandardowych opcji odpowiadających Twoim potrzebom - wygląda na to, że chcesz to zrobić.
Jest to lepsze podejście, ponieważ wykorzystuje oryginalną funkcjonalność, a następnie zmieniasz to, czego potrzebujesz, zamiast kopiować wszystko.
Upewnij się, że wymaga tego w niestandardowym katalogu dodaj do koszyka JS, jak pokazano w tym przykładzie.
wymaganyjs-config.js
customCatalogAddToCart.js
Z powodzeniem zastosowałem to rozwiązanie do edycji koszyka JS, mam nadzieję, że to pomoże!
źródło
Wykonanie tego za pomocą pliku CSV jest najlepszym i najprostszym sposobem w Magento 2!
Utwórz folder i18n w niestandardowym module jako:
app / code / Vendor / Module / i18n
Utwórz tutaj plik en_US.csv i napisz Etykietę , którą chcesz zmienić jako:
W ten sposób możesz zmienić całkiem niezłą liczbę etykiet:
Dobrze widzieć inne odpowiedzi :)
źródło