Magento Mizanpaj XML'sinde Yerel Yedekli Google CDN jQuery


18

Magento'da Google CDN'den jQuery eklemek için aşağıdakileri yaptım:

<default>
    <reference name="head">
        <block type="core/text" name="google.cdn.jquery">
            <action method="setText">
                <text><![CDATA[<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script><script type="text/javascript">jQuery.noConflict();</script>]]>
                </text>
            </action>
        </block>
    </reference>
</default>

Ancak, oldukça iyi çalışan bir yerel yedek ile uygulamak istediğinizde, benim gibi .phtml ekleyerek Rüzgar:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script>
if (!window.jQuery) {
    document.write('<script src="/path/to/your/jquery"><\/script>');
}
</script>
  • Bunu yaptığım gibi düğümün içine geri çekmekten daha local.xml'de yapmanın daha zarif bir yolu var mı ?<text>jQuery.noConflict

Düzenle:

Sorunun diğer kısmına dikkat çekmek için - sizin için jQuery içeren topluluk modülleri var mı? Yerel bir jQuery'leri varsa - Google CDN kullanıyorlarsa - daha da iyi. Bu orada değilse, bir tane oluşturmak isterim.

  • Kendim önyükleme yapmak zorunda kalmadan bunu halledecek herhangi bir go-uzantı var mı?

1
JQuery (yarı otomatik bağlantı) dahil etmek için çok basit bir topluluk modülü: github.com/netz98/N98_BaseJQuery - yalnızca yerel bir JQuery içerir. CDN ile fikir güzel, Çekme İstekleri ile geliştirmek için çekinmeyin :-)
Alex

Merak dışı: CDN güvenilmez mi veya neden geri dönüş gerekli? Orada ne tür pratik deneyimleriniz var?
Alex,

2
Bazı ülkeler (İran, Suriye ve diğerleri) zaman zaman Google ve Google CDN'yi engelleyebilir. Bu benim kişisel deneyimim. Ayrıca, bunun azaldığı yanıt zaman aşımları gibi şeyler gördüm.
philwinkle

Anlama. Bu nedenle, modüle bir çözüm sunabilmeniz harika olurdu.
Alex

Büyük bulmak - N98 modülünü uygun bir şey ararken görmedim. Sanırım orada katkıda bulunacağım. Teşekkürler! Bununla birlikte, <text>yukarıda açıklanan yöntemle olması gerekebilir ... bunun kabul edilebilir bir çözüm olup olmadığından emin değilim. N98 modülü noConflict çağırmak için ayrı bir js include dosyası kullanır, ancak, sanırım ...
philwinkle

Yanıtlar:


18

Günün sonunda bunu Layout XML ile yapmak tercih edilir. Yerel yedek seçeneğinin en iyi Google Closure Derleyici ile küçültülmüş tek satırlık bir ifadede uygulandığını tespit ettim.

<default>
    <reference name="head">
        <block type="core/text" name="google.cdn.jquery">
            <action method="setText">
                <text><![CDATA[<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script><script>window.jQuery||document.write('<script src="/path/to/your/jquery.js">\x3c/script>');</script><script>jQuery.noConflict();</script>]]></text>
            </action>
        </block>
    </reference>
</default>

bu işe yaramıyor
fmsthird

2

Head.phtml dosyalarının kodlarını ve etrafındaki dosyaları ve blokları uzun süre aradım, ancak <head> içine kod enjekte etmek için şablonları değiştirmeden yolu yok.

Ben bir aptalım, zaten her şeyi yazdın ve birkaç kez <?php echo $this->getChildHtml() ?> içinde head.phtml: - /

Bunun için sadece bir core/templateblok ve bir şablon kullanırdım. Okuması, anlaşılması ve yönetmesi kolaydır.


Üstesinden gelmeye çalıştığım sorun, her seferinde phtml'yi zorla eklemek zorunda kalmadan belirli sayfa türlerinden ve düzenlerden bu bloğu ekleme / kaldırma yeteneğidir. Şu anda statik bir blok yeterli, ancak sadece her yerden kullanılabilir olduğu için ...
philwinkle

Sorunu burada görmüyorum. <default> öğesine ekler ve olmasını istemediğiniz her yerde, diğer tüm bloklarda olduğu gibi kaldırırsınız. core/text_listDiğer sayfalarda daha kolay kaldırmak için istediğiniz tüm öğeleri (birden fazla dosyaysa) eklemeyi ve orada eklemeyi düşünebilirsiniz .
Fabian Blechschmidt
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.