Magento 2.1.0'da "Sepete ekle" düğme metnini değiştirme (js dosyasını geçersiz kılma)


13


"Sepete ekle" metnini "" Bunu istiyorum "olarak değiştirdim" vendor\magento\module-catalog\view\frontend\templates\product\list.phtml".
Ancak, "Bunu istiyorum" (yani "Sepete ekle") düğmesini tıkladığımda, ürün sepete eklenir ve daha sonra düğme üzerinde "Sepete ekle" metni görünür.

Ürünün ajax çağrısı yoluyla eklendiğini düşünüyorum, bu yüzden ajax çağrısı ve "Sepete ekle" metni görüntülendikten sonra yeni eklenen bir metin görüntülenmiyor.

Bunu denedim:

Özel bir uzantı Ved_Mymodule oluşturdum .

Uzantının etkin olduğunu kontrol ettim.

Bundan sonra şu adımları izledim:

Uygulama / kod / Ved / MyModule / görünüşüdür / ön / requirejs-config.js:

var config = {
    map: {
        '*': {
            catalogAddToCart:'Ved_Mymodule/js/customCatalogAddToCart'
        }
    }
};

Uygulamanın / kod / Ved / MyModule / görünüm / kullanıcı arayüzü / 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;
});

Konsolda kukla mesajlar yazdırmaya çalışıyorum.

Bundan sonra: Statik içerik dağıtımı çalıştırdım. Verileri yeniden endeksleyin. Önbellek temizlendi ve yıkandı.

Ancak değişiklikler görünmüyor.


Lütfen requirejs-config.jskonumu yeniden adlandırın ve düzeltin app/code/Ved/Mymodule/view/frontend/requirejs-config.js.
Khoa TruongDinh

Söylediğiniz gibi değişiklikler yapılıyor ama yine de başarı yok. Ama temayı geçersiz kılarsam işe yarıyor.
vedu

Yanıtlar:


10

Js dosyasını yoldan geçersiz kılmalısınız

vendor/magento/module-catalog/view/frontend/web/js/catalog-add-to-cart.js  

için

app/design/frontend/YourTheme/Packadge/Magento_Catalog/web/js/catalog-add-to-cart.js

Bu dosyadan istediğiniz metni değiştirmeniz gerekir.

Herhangi bir sorunuz varsa bize bildirin.


Çok teşekkür ederim, işe yaradı. Daha önce, özel bir modül (geçersiz bir soru ile bahsetmiştim) kullanarak geçersiz kılmaya çalışıyordum ama işe yaramadı. Dosyayı temama kopyalayarak işe yaradı. Ama unutma yangın yapmak: php bin / magento kurulum: yükseltme
vedu

@Suresh Chikani js neden dil çevirmeninden daha iyi?
Birjitsinh Zala

CSV çeviri kodu çalışmaz. Bu durumda JS metnine geçmeniz gerekir.
Suresh Chikani

7

geçersiz kılmanız gerekir, katalogdan add-to-cart.js dosyasını yoldan,

vendor/magento/module-catalog/view/frontend/web/js

Ajax çağrısından sonra metin buradan değişiyor. metni buradan değiştirebilirsiniz.


6

Metin, Ajax çağrısından sonra Javascript tarafından değiştirildi. Bir göz atabiliriz:

satıcı / Magento / modül-katalog / görüş / kullanıcı arayüzü / web / js / katalog-eklenti to-cart.js

En iyi uygulama mixinsiçin, "geçersiz kılma" için kullanılmalıdır:

Bir modül oluşturabilir ve sonra şu dosyaları ekleyebiliriz:

Uygulama / kod / satıcı / modülü / görünüşüdür / ön / requirejs-config.js

var config = {
    config: {
        mixins: {
            'Magento_Catalog/js/catalog-add-to-cart': {
                'Vendor_Module/js/catalog-add-to-cart-mixin': true
            }
        }
    }
};

Uygulamanın / kod / Satıcı / Modül / görünüm / kullanıcı arayüzü / web / js / katalog-eklenti için-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;
        };
    });

Adımlarını denedim ama başarılı olamadım. Sorumu kodumla düzenledim.
vedu

1
@Khoa TruongDinh Mükemmel çalışma.
Vithal Bariya

Bu benim için çalıştı.
55840

2

Not: Aşağıdakiler 2.1.7'de test edilmiştir


Çekirdek dosyaları geçersiz kılmak kötü bir uygulama olarak kabul edilir.

Parametreleri listenin alt kısmında bulunan catalogAddToCart işlevine iletebilirsiniz.

Eğer varsa bakmak katalog-eklenti to-cart.js de (değil düzenlemek veya kopya yapmak) bunu parametreleri kabul ettiğini göreceksiniz dosya.

satıcı / Magento / modül-katalog / görüş / kullanıcı arayüzü / web / js / katalog-eklenti to-cart.js

options: {
    processStart: null,
    processStop: null,
    bindSubmit: true,
    minicartSelector: '[data-block="minicart"]',
    messagesSelector: '[data-placeholder="messages"]',
    productStatusSelector: '.stock.available',
    addToCartButtonSelector: '.action.tocart',
    addToCartButtonDisabledClass: 'disabled',
    addToCartButtonTextWhileAdding: '',
    addToCartButtonTextAdded: '',
    addToCartButtonTextDefault: ''
},

Sonraki temanızdaki list.phtml dosyasını açın

Uygulamanın / tasarım / kullanıcı arayüzü / Namespace / tema / Magento_Catalog / şablon / ürün / list.phtml

Sayfanın altına doğru bulacaksınız

<?php if (!$block->isRedirectToCartEnabled()) : ?>
    <script type="text/x-magento-init">
    {
        "[data-role=tocart-form], .form.map.checkout": {
            "catalogAddToCart": {}
            }
        }
    </script>
<?php endif; ?>

Sadece işleve parametreler ekleyin ...

<?php if (!$block->isRedirectToCartEnabled()) : ?>
    <script type="text/x-magento-init">
    {
        "[data-role=tocart-form], .form.map.checkout": {
            "catalogAddToCart": {
                "addToCartButtonTextDefault" : "<?php /* @escapeNotVerified */ echo __('Add to Cart') ?>"
            }
        }
    }
    </script>
<?php endif; ?>

Benim durumumda sonra en_GB.csv içinde 'Sepete Ekle' için bir çeviri ekledim ama bu sizin amacınıza uygun olmayabilir, bu yüzden doğrudan buradan düzenleyin.


2

Lütfen bunu deneyin ... json yanıtı ile "Sepete ekle", "Ekleniyor ..." ve "Eklendi" metnini çevirmek için aşağıdaki adımları izleyin.

Adım 1: Değişiklikler için Ürün listesi sayfasındaki ihtiyaç. Dosya yolu app / design / frontend / Your_Theme_Namespace / Theme_Name / Magento_Catalog / templates / product / list.phtml adresine gidin ve aşağıdaki kodu 121 satırında değiştirin

<script type="text/x-magento-init">
{
    "[data-role=tocart-form], .form.map.checkout": {
        "catalogAddToCart": {
            "product_sku": "<?php /* @escapeNotVerified */  echo $_product->getSku() ?>",
            "addToCartButtonTextDefault": "<?php echo __('Add to Cart'); ?>",
            "addToCartButtonTextWhileAdding": "<?php echo __('Adding...'); ?>",
            "addToCartButtonTextAdded": "<?php echo __('Added'); ?>"
        }
    }
 }
</script>

Adım 2: Değişiklikler için Ürün görünümü sayfasına ihtiyacınız var. Dosya yolu app / design / frontend / Your_Theme_Namespace / Theme_Name / Magento_Catalog / templates / product / view / addtocart.phtml adresine gidin ve 54 numaralı satırdaki kodu değiştirin

 <script>
    require([
        'jquery',
        'mage/mage',
        'Magento_Catalog/product/view/validation',
        'Magento_Catalog/js/catalog-add-to-cart'
    ], function ($) {
        'use strict';
        $('#product_addtocart_form').mage('validation', {
            radioCheckboxClosest: '.nested',
            submitHandler: function (form) {
                var widget = $(form).catalogAddToCart({
                    bindSubmit: false,
                    "addToCartButtonTextDefault": "<?php echo __('Add to Cart'); ?>",
                    "addToCartButtonTextWhileAdding": "<?php echo __('Adding...'); ?>",
                    "addToCartButtonTextAdded": "<?php echo __('Added'); ?>"
                });

                widget.catalogAddToCart('submitForm', $(form));

                return false;
            }
        });
    });
</script>

Aşağıdaki komutları çalıştırın:

  1. php bin / magento kurulumu: statik içerik: konuşlandır en_US ja_JP zh_Hans_CN

  2. php bin / magento cache: flush Bunu denedim ve benim için çalışıyor.


1

Tüm dosyayı geçersiz kılmak yerine kataloğa sepete ekle'yi genişletebilirsiniz. Bu, belirli işlevleri geçersiz kılmanıza ve ihtiyaçlarınıza uygun özel seçenekler eklemenize olanak tanır - bunu yapmak istediğiniz gibi görünüyor.

Bu, orijinal işlevselliği kullandığından ve her şeyi kopyalamak yerine ihtiyacınız olanı değiştirdiğiniz için daha iyi bir yaklaşımdır.

Özel kataloğunuzda gerektirdiğinden emin olun, bu örnekte gösterildiği gibi JS sepetine ekleyin.

requirejs-config.js

var config = {
    map: {
        '*': {
            catalogAddToCart:'Ved_Mymodule/js/customCatalogAddToCart'
        }
    }
};

customCatalogAddToCart.js

define([
    'jquery',
    'mage/translate',
    'jquery/ui',
    'Magento_Catalog/js/catalog-add-to-cart' // Important, require the original!
], function($, $t) {
    'use strict';

    $.widget('Ved_Mymodule.catalogAddToCart', $.mage.catalogAddToCart, {
        options: {
            customOption: 'hello!'
        },

        enableAddToCartButton: function(form) {

            console.log('extended the original add to cart.');
            console.log('my new option', this.options.customOption);

        }
    });

    return $.Ved_Mymodule.catalogAddToCart;
});

Sepeti JS düzenlemek için bu çözümü başarıyla kullandım, umarım bu yardımcı olur!


0

CSV dosyasıyla yapmak Magento 2'nin en iyi ve en basit yoludur!

  1. Özel modülünüzde i18n klasörü şu şekilde oluşturun :

    Uygulamanın / kod / Satıcı / Modül / i18n

  2. Burada en_US.csv dosyasını oluşturun ve değiştirmek istediğiniz Etiketi yazın:

    "Add to Cart","Custom Label"

Oldukça iyi etiket sayısını şu şekilde değiştirebilirsiniz:

"Add to Cart","Add to Order"
"Go to Checkout","Complete Order"
"Shopping Cart","Current Order"
"Proceed to Checkout","Proceed to Confirm"
"Summary","Details"
"Estimate Shipping and Tax","Aproximate Sum"
"You added %1 to your shopping cart.","Successfully added %1 to your current order."
"Add Your Review","Add Review"

Diğer cevapları görmek güzel :)

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.