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.