He cambiado el texto "Agregar al carrito" a "Quiero esto" anulando " vendor\magento\module-catalog\view\frontend\templates\product\list.phtml
".
Pero cuando hago clic en el botón "Quiero esto" (es decir, "Agregar al carrito"), el producto se agrega al carrito y luego aparece nuevamente el texto "Agregar al carrito" en el botón.
Creo que el producto se agrega a través de una llamada ajax, es por eso que un texto recién agregado no se muestra después de la llamada ajax y se muestra el texto "Agregar al carrito".
He intentado esto:
He creado una extensión personalizada Ved_Mymodule .
He comprobado que la extensión está activa.
Después de eso seguí estos pasos:
app / code / Ved / Mymodule / view / frontend / requirejs-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;
});
Estoy tratando de imprimir mensajes ficticios en la consola.
Después de esto: he ejecutado la implementación de contenido estático. Reindexar los datos. Caché limpiado y enjuagado.
Pero los cambios no están apareciendo.
requirejs-config.js
y corrija la ubicaciónapp/code/Ved/Mymodule/view/frontend/requirejs-config.js
.Respuestas:
Tienes que anular el archivo js de la ruta
A
Tiene que cambiar el texto que desea de este archivo.
Avísame si tienes alguna consulta.
fuente
necesita anular, catalog-add-to-cart.js de la ruta,
El texto está cambiando desde aquí después de la llamada ajax. Puedes cambiar el texto aquí.
fuente
El texto cambió por Javascript después de la llamada Ajax. Podemos echar un vistazo:
vendor / magento / module-catalog / view / frontend / web / js / catalog-add-to-cart.js
Para la mejor práctica, debe usar
mixins
para "anular":Podemos crear un módulo y luego agregar estos archivos:
app / code / Vendor / Module / view / frontend / requirejs-config.js
app / code / Vendor / Module / view / frontend / web / js / catalog-add-to-cart-mixin.js
fuente
Nota: lo siguiente ha sido probado en 2.1.7
Anular cualquier archivo principal se considera una mala práctica.
Simplemente puede pasar parámetros a la función catalogAddToCart que se puede encontrar en la parte inferior de list.phtml
Si observa (no edite ni copie) en el archivo catalog-add-to-cart.js, verá que acepta parámetros.
vendor / magento / module-catalog / view / frontend / web / js / catalog-add-to-cart.js
A continuación, abra list.phtml dentro de su tema
app / design / frontend / Namespace / theme / Magento_Catalog / template / product / list.phtml
Hacia la parte inferior de la página encontrarás
Simplemente agregue parámetros a la función ...
En mi caso, luego agregué una traducción para 'Agregar al carrito' en en_GB.csv, pero puede que no sea adecuada para su propósito, así que continúe y edítela aquí directamente.
fuente
Intente esto ... Para traducir el texto de la respuesta "Agregar al carrito", "Agregar ..." y "Agregado" por json, siga los pasos a continuación.
Paso 1: para cambios necesarios en la página de lista de productos Vaya a la aplicación de ruta de archivo / design / frontend / Your_Theme_Namespace / Theme_Name / Magento_Catalog / templates / product / list.phtml y reemplace el siguiente código en línea alrededor de 121
Paso 2: para cambios necesita la página de vista del producto Vaya a la aplicación de ruta de archivo / diseño / frontend / Your_Theme_Namespace / Theme_Name / Magento_Catalog / templates / product / view / addtocart.phtml y reemplace el código en línea alrededor de 54
Ejecute los siguientes comandos:
php bin / magento setup: static-content: deploy en_US ja_JP zh_Hans_CN
php bin / magento cache: flush He intentado esto y está funcionando para mí.
fuente
Puede extender el catálogo agregar al carrito en lugar de anular todo el archivo. Esto le permitirá anular ciertas funciones y agregar opciones personalizadas para satisfacer sus necesidades; parece que quiere hacer esto.
Este es un mejor enfoque, ya que utiliza la funcionalidad original y luego cambia lo que necesita en lugar de copiar todo.
Solo asegúrese de requerirlo dentro de su catálogo personalizado, agregue al carrito JS como se muestra en este ejemplo.
requirejs-config.js
customCatalogAddToCart.js
He usado esta solución con éxito para editar el carrito JS, ¡espero que esto ayude!
fuente
¡Hacerlo por archivo CSV es la mejor y más simple forma en Magento 2!
Cree la carpeta i18n en su módulo personalizado como:
aplicación / código / proveedor / módulo / i18n
Cree aquí el archivo en_US.csv y escriba la etiqueta que desea cambiar como:
Puede cambiar un número bastante bueno de etiquetas de esta manera como:
Es bueno ver otras respuestas :)
fuente