Magento 2'ye jQuery Kütüphanesi Ekleme


16

Üçüncü taraf bir geliştirici Magento 2'ye nasıl jQuery kütüphanesi ekleyebilir?

Magento 2 onların ön uç temaları jQuery bir sürümünü içermekle birlikte, jQuery nesnesi değil genel ad alanında hemen kullanılabilir. Bunun Magento 2 jQuery çekmek için RequireJS kullandığından ve RequireJS gerekli olana kadar bir modül dosyası yüklemeyeceğine inanıyorum.

Bu, jQuery eklentileri için bir sorun oluşturur. Normalde, HTML ile böyle bir şeye benzeyen bir eklenti eklerdim

<script type="text/javascript" src="http://magento-1-9-2-2.dev/js/commercebug/jquery-ui-1.8.custom/js/jquery.cookie.js"></script>

Ancak bu Magento 2 ile mümkün değildir. jquery.cookie.jsDosya jQuery eklentisini global jQuery nesnesini kullanarak tanımladığından, Magento 2'de bir jQuery is not definedhata ile başarısız olur .

Bir ön uç geliştirici, Magento 2'nin ön uç uygulamasına standart bir jquery eklenti kitaplığını nasıl eklemelidir?



@QaisarSatti Hayır, bu bağlamda faydalı değil mi? Ana jquery kitaplığının nasıl kullanılacağını ve Magento widget'ının nasıl kullanılacağını gösterir. Standart bir jquery eklentisinin nasıl çekileceği hakkında hiçbir şey söylemez.
Alan Storm

@AlanStorm RequireJs kullanmadan Jquery eklemek ister misiniz?
Shaheer Ali

@ShaheerAli Hayır, jQuery kullanan Magento 2 ile birlikte gelen ve bir üçüncü parti jquery eklentisi kullanmak istiyorum gelmez Magento 2 ile gemi
Alan Fırtına

@AlanStrom, üçüncü taraf eklenti js kodunuzu, js dosyanızdaki js dosyanızdaki requir js işlevi arasına (['jquery'], function ($) {// burada eklenti kodunuz}) koymanız gerekir;
Shaheer Ali

Yanıtlar:


19

Requirjs-config.js oluşturun \ Companyname \ Modulename \ view \ frontend \ requirjs-config.js ekle

var config = {
   map: {
       '*': {
           bannerslider: 'Companyname_Modulename/js/flexslider',
       }
   }
};

Modülünüzdeki Js dosyanız Companyname \ Modulename \ view \ frontend \ web \ js \ flexslider.js
Aşağıdaki sözdizimini kullanarak jquery eklemeniz

<script type="text/javascript">
require(['jquery','bannerslider'],function($){
    $(window).load(function() {
        $('.flexslider-8').flexslider({
            animation: "fade",
            controlNav: "thumbnails",
            slideshowSpeed: 2000,
            minItems: 2,
            maxItems: 4
        });
    });
});
</script>

ikinci örnek

<script type="text/javascript">
    require(['jquery'],function($){
        $(window).load(function() {
            alert('jquery working');
        });
    });
</script>

Flexslider javascript dosyası HTML sayfasına ve / veya requirJS'ye nasıl dahil edilir?
Alan Storm

Eğer detaylı olarak açıklamak istiyorsanız gerektirir js.if kullanarak ekleyebilirsiniz
Pratik

@AlanStorm lütfen daha fazla bilgi paylaştığımı bilmeme izin verirseniz cevabı kabul edin :)
Pratik

5
Bu işe yarıyor olsa da, "jQuery tanımlanmadı" hatası hala her yarım düzine sayfa yenilemede bir açılır.
themanwhoknowstheman

2
Alan blog yazısında sorunun büyük bir dökümünü yaptı: alanstorm.com/magento_2_and_requirejs
jzahedieh

6

Magento Belgelerinden alıntı yapıyorum .

Üçüncü taraf eklentisine bağımlılık oluşturmak için aşağıdaki yapılandırma dosyalarında bir dolgu belirleyin:

Requirjs-config.js dosyasında:

var config = {
  "shim": {
     "3-rd-party-plugin": ["jquery"]
    }
  };

Ardından üçüncü taraf eklenti kodunuzu Temanıza veya Modülünüze ekleyin: "web / js / 3-rd-party-plugin.js" şöyle:

!(function($){
  // plugin code
  // where $ == jQuery
})(jQuery);

Eklenti dosyanızı herhangi bir değişiklik yapmadan eklediğiniz için bu çözüm uygundur. Eklenti yazarı güncellediğinde js dosyasını değiştirin veya hatta bir cdn kullanın!


5

Yapılacak en iyi şey , bu eklentileri / kütüphaneleri dahil etmek için bir Magento 2 Modülü veya Tema kullanmaktır. Tavsiye edilen yol ve en iyi uygulamadır .


Yöntem 1> TEMA : Javascript / jquery kitaplığı temayla ilgiliyse (Sistemin görünümünü ve izlenimini değiştirmek için).

  • Özel bileşen kaynak dosyasını aşağıdaki konumlardan birine yerleştirin
    [theme_dir] / web / js /
  • Senin yerleştirin requirejs-config.js dosyayı
    [theme_dir]

Yöntem 2> MODÜL : Javascript / jquery kitaplığı belirli bir iş işleviyle ilişkiliyse veya bir Magento özelliği kullanıyorsa. Bir modülün içine girmelidir.

  • Özel bileşen kaynak dosyasını aşağıdaki konumlardan birine yerleştirin
    [module_dir] / view / frontend / web / js /

  • Senin yerleştirin requirejs-config.js dosyayı
    [module_dir] / view / kullanıcı arayüzü /

Magento 2, varsayılan Magento bileşenlerinin ve widget'larının kaynak kodunun değiştirilmemesini önemle tavsiye eder. Tüm özelleştirmeler özel modüllerde veya temalarda uygulanmalıdır.


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.