Bu yüzden tam anlamıyla saatlerce googling, okuma, ect okuyarak saatler geçirdim, ama kimse (Alan Storm bile!) Bunu bana açıklamamıştı. Tüm internet Magento 2'nin belirli bir sayfasına JS veya CSS eklemekle ilgileniyor gibi görünüyor , ancak aradığım şey belirli bir bloğa JS / CSS eklemek .
Kısacası sorum şu:
Belirli bir bloğa JS (ve ek olarak CSS) eklemenin en iyi yolu nedir , böylece blok sayfada (*) mevcutsa, JS / CSS yüklenir, blok yoksa, CSS / JS olmaz mı? ?
* Bu, her durumda, bir bloğun / sayfanın toHtml yöntemi veya en önemlisi bir kategorinin WYSIWYG'sine gömülü bir blok aracılığıyla, layout.xml yoluyla bir sayfada / şablonda, modülümden özel bir sayfada oluşturulabileceği anlamına gelir / ürün açıklaması / CMS Bloğu / CMS Sayfası.
Ben Alan'ın büyük makaleler ALOT okudum (Kudos yine bu adama !!), bu konuda diğer makalelerin reams bahsetmiyorum , ancak herkesin bir sayfaya, belirli bir sayfaya eklemek istediği hissi alıyorum, hiç blok kullanılır.
Çeşitli tekniklere aşina olduğumu hissediyorum, ancak burada bir şey eksik olabilirim, bu yüzden topluluktan bir fikir birliği istiyorum, aynı zamanda orada arayan tam yığın geliştiricilere yönelik tüm ön uçlar için belki de bir işaret direği istiyorum. benzer soruları ve benim gibi seçenekleri düşünerek.
Daha önce, Magento 1'de blok yapıcısına bakar, düzeni alır, kafa referansını alır ve orada addJs / addCss çağırır veya mümkünse layout.xml'deki yöntemleri kullanırdım. Bu JS'nin blok yapıcısındaki kaynak listesine "eklendi" anlamına gelir (tema seviyesi kafa bloğunun çıktısını almadan önce). Ancak bu artık mümkün görünmüyor.
Ben nasıl JS / CSS (bu basit bir "nasıl yaparım ???" bu daha kısa bir "doğru / mag2 yolu nedir ???" nedir) ekleme hakkında gitmek okumuş ve bunlara aşina değilim teknikleri:
- / view/[area Cialis/layout/[default/page_id Cialis.xml tekniği,
<head></head>
kök öğelerini kullanma - Modülüme bir Head block eklenmesi , head.additional öğesine eklenir, bloğumun yüklenip yüklenmediğine ilişkin bir tür mantıkla birlikte
- potansiyel olarak yükleme sırası bir sayfa / Şablon (bu bloklarla ork görünmüyor gibi) enjekte etmek için \ Asset \ GroupedCollection ve \ Asset \ Repository Nesneleri kullanarak ??
- RequireJS kullanımı ve modülüme bir requirJS yapılandırması uygulanması
Bir şey kaçırdım mı ??
Biri, doğru yolun RequireJS kitaplığını ve x-magento-init özniteliklerini veya yalnızca require("my_module", function(){ ... })
satır içi komut dosyasında sözdizimine sahip bir komut dosyasını kullanmak olduğuna inanır . Ama bu bana körelmiş gibi geliyor mu? Komut dosyalarını yüklemek için komut dosyaları ayarlamak zorunda kalacaktım, JS'mden en azından bazılarını satır içine almak zorunda kaldım, ancak bu benim phtml içine haşhaş, "İşte benim blok, şimdi bana biraz JS gerektirir" demenin en şüpheli yolu gibi görünüyor.
Ancak ben gerçekten PHP ile bunu yapmak istiyorum, bir backend / yığın programcı olarak ideal JS uzağa kapsüllemek istiyorum ve (ideal) ön uç ekibi istedikleri gibi bu yazmak için izin istiyorum. Kısacası yükleme dikkat edin (Back End Dev to Frond End Dev "phtml heres, isterseniz temayı geçersiz kılar, aynı şekilde js dosyasını, bağımlı lbs ve blok için css heres").
Bu __construct
, Varlıklar sistemindeki Enjekte Edilmiş Bağımlılıkların yöntemini göstermektedir . Ancak bu işe yarayamıyorum, bu Alan Storms hızlı makalesinde teyit gibi görünüyor: Magento Quickies: Magento 2: Programlı ön uç varlık dosyaları ekleme
"Öyleyse onlarla ön uç varlıklarını taşıyan bloklar oluşturma düşüncesi pencereden dışarı çıksın" işaretini not edin . ... bummer :(
Okumak ve düşünmek için zaman ayırdığınız için teşekkürler . Yanıtlarınızı duymayı dört gözle bekliyorum!
PS> Açıkçası bu StackExchange olduğunu, bu yüzden cevabı elde etmeye çalıştığım şey için en iyi kurs olarak işaretleyeceğim (belirli kaynak yüklemesini engelleyin) ancak aynı zamanda yazımın altındaki referanslar olarak listelemeye ve tüm cevaplara girmeye çalışacağım ya tartışmaya katkıda bulunur ya da sağlam bir çözüm önerir!