JS'de Magento 2'yi Genişletme / Geçersiz Kılma


34

Magento2 scriptleri yüklemek için RequireJS kullandığından ve daha fazla cilt klasörü bulunmadığından bir sorunla karşılaştım:

Magento'nun JS modülünü değiştirilmiş versiyonumla nasıl değiştirebilirim?

Örneğin - Magento_Checkout uzantısına ait olan opc-checkout-method.js . Requestjs-config.js dosyasında, gördüğüm kadarıyla tanımlanmadı.

Uzantım , Magento_Checkout uygulamasından sonra yüklenir , bu nedenle, bunun sonucu, sonuçta ihtiyaç duyulan-yapılandırma dosyasının sonuna eklenir.

Yoksa tüm betiği değiştirmeden başka bir şekilde mi yapmalıyım?


1
Dosya tarafından yüklenen nesne üzerindeki işlev (ler) i değiştirmek yerine dosyayı değiştirmemeniz gerektiğini hayal ediyorum.
Peter O'Callaghan

Yanıtlar:


93

Daha fazla cilt klasörü yok ama yine de temaları kullanabilirsiniz.

Bir kavramın kanıtı olarak, size bununla örnek verdim op-checkout-method.js.

Ön koşullar:

  • Magento2-beta11 yüklü
  • Varsayılan tema etkin (boş).
  • pub/staticKlasörde dosya oluşturulmadı (pub / static / frontend klasörünü kaldırın)

Eylemler:

  • Kopyalanan op-checkout-method.js's modülü yerden açabilirsiniz app/code/Magento/Checkout/view/frontend/web/js/opc-checkout-method.jsboş temaya içinapp/design/frontend/Magento/blank/Magento_Checkout/web/js/opc-checkout-method.js
  • klon dosyası düzenlenebilir ve bir ilave console.log('something')ya da alert('something')içinde _createbir fonksiyonu mage.opcCheckoutMethodParçacık.
  • tarayıcı önbelleğini temizle.

Sonuç:

  • Ödeme sayfası yüklendiğinde, uyarımın görüntülendiğini veya konsolda oturum açan metni görüyorum.

İlgili Bilgi:

Eğer cli'den kaçarsam php dev/tools/Magento/Tools/View/deploy.php(statik kaynakları yayınlayan script) yeni js dosyam yerleştirilirpub/static/frontend/Magento/blank/en_US/Magento_Checkout/js/opc-checkout-method.js

[DÜZENLE]

Bir modül üzerinden yapmanın bir yolunu buldum.

Buna [Namespace]/[Module]/view/frontend/requirejs-config.jsek olarak:

var config = {
    map: {
        '*': {
            'Magento_Checkout/js/opc-checkout-method':'[Namespace]_[Module]/js/opc-checkout-method'
        }
    }
};

Ardından [Namespace]/[Module]/view/frontend/web/js/opc-checkout-method.jsiçeriğinizle dosyayı oluşturun .

Test amacıyla orijinal dosyayı klonladım console.logve _createfonksiyona tekrar bir tane daha ekledim .

Ayrıca, kamu kaynaklarını ön uç için yeniden oluşturmayı da unutmayın.


Sağol Marius! Uzantı içinde benzer şeyler yapmak mümkün mü?
DmitryR

Bunu bir uzantıdan yaptığınızı sanmıyorum. Ödeme şablonunu tamamen değiştirmediyseniz magento 1'de bu mümkün değildi. Ama bunu yapmanın bir yolunu arayacağım.
Marius

Tekrar teşekkürler, Marius. Varsayılan olanı geçersiz kılan özelleştirilmiş bir ödeme gerçekleştirmeye çalışıyorum ve JS geçersiz kılmalarına bağlı kaldım.
DmitryR

1
@DmitryR. Cevabımdaki güncellememe bakın.
Marius

requjs-config.js için yer şimdi Satıcı / Modül / görünüm / frontend / necessjs-config.js
Eugen Bogdanovich

11

Varsayılan JS bileşenlerini genişletme / değiştirme hakkında resmi belge: http://devdocs.magento.com/guides/v2.0/javascript-dev-guide/javascript/custom_js.html

Geribildirim açığız!


3
MagentoSE'ye hoş geldiniz. Bu cevabı, sadece bağlantı yerine, cevabı buraya eklerseniz gelecekteki kullanıcılar için daha yararlı olacaktır. Bağlantı gelecekte kırılırsa, arama yapanlar referans verdiğiniz bilgileri bulamazlar.
AreDubya

2
Bu adil bir nokta ancak 404s riskinin en aza indirilmesi için konular hareket ettiğinde 301 yönlendirmeleri ekliyoruz.
Steve Johnson
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.