Ich habe Folgendes getan, um jQuery von Google CDN in Magento aufzunehmen:
<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>
Wenn ich es jedoch mit einem lokalen Fallback implementieren möchte, was recht gut funktioniert, füge ich es meiner .phtml-Datei als solches hinzu:
<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>
- Gibt es eine elegantere Möglichkeit, dies in local.xml zu tun, als den Fallback in den
<text>
Knoten zu verschieben, wie ich es tuejQuery.noConflict
?
Bearbeiten:
Um die Aufmerksamkeit auf den anderen Teil der Frage zu lenken: Gibt es Community-Module, die jQuery für Sie enthalten? Wenn sie eine lokale jQuery haben, ist das in Ordnung - wenn sie Google CDN verwenden - noch besser. Wenn dies nicht da draußen ist, würde ich gerne eine erstellen.
- Gibt es irgendwelche Erweiterungen, die damit umgehen, ohne dass ich sie selbst booten muss?
layout
javascript
Philwinkle
quelle
quelle
<text>
oben beschriebene Methode handelt ... nicht sicher, ob dies eine akzeptable Lösung ist. Das n98-Modul verwendet eine separate Js-Include-Datei für den Aufruf von noConflict, aber ich nehme an ...Antworten:
Letztendlich ist dies über Layout XML vorzuziehen. Ich habe festgestellt, dass die lokale Fallback-Option am besten in einer einzeiligen Anweisung implementiert wird, die mit dem Google Closure Compiler minimiert wurde.
quelle
Ich habe lange nach dem Code der head.phtml-Dateien und den Dateien und Blöcken gesucht, aber es gibt keine Möglichkeit, ohne Änderung der Vorlagen Code in den <head> einzufügen.Ich bin ein Idiot, du hast schon alles geschrieben und ich habe das ein paar mal
<?php echo $this->getChildHtml() ?>
im Auge behaltenhead.phtml
: - /Also würde ich nur einen
core/template
Block und eine Vorlage dafür verwenden. Es ist leicht zu lesen, leicht zu verstehen und leicht zu verwalten.quelle
core/text_list
und dort alle gewünschten Elemente hinzuzufügen (wenn es sich um mehr als eine Datei handelt), um das Entfernen auf anderen Seiten zu vereinfachen.