Zrobiłem następujące, aby dołączyć jQuery z Google CDN w Magento:
<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>
Jednak gdy chcę wdrożyć go z lokalną rezerwą, która działa całkiem dobrze, kończę dodając go do mojego pliku .phtml jako takiego:
<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>
- Czy istnieje bardziej elegancki sposób na zrobienie tego w local.xml niż wepchnięcie rezerwy do
<text>
węzła, tak jak ja to robięjQuery.noConflict
?
Edytować:
Aby zwrócić uwagę na drugą część pytania - czy istnieją dla ciebie moduły społecznościowe zawierające jQuery? Jeśli mają lokalnego jQuery, to w porządku - jeśli używają Google CDN - nawet lepiej. Jeśli tego nie ma, chciałbym je stworzyć.
- Czy są jakieś rozszerzenia, które sobie z tym poradzą, bez konieczności samodzielnego uruchamiania?
layout
javascript
philwinkle
źródło
źródło
<text>
metody opisanej powyżej ... nie jestem pewien, czy jest to akceptowalne rozwiązanie. Moduł n98 używa osobnego pliku dołączania js do wywoływania noConflict, ale przypuszczam, że ...Odpowiedzi:
Pod koniec dnia lepiej jest to zrobić za pomocą Layout XML. Odkryłem, że lokalną opcję zastępczą najlepiej wdrożyć w instrukcji jednowierszowej zminimalizowanej za pomocą kompilatora Google Closure.
źródło
Długo szukałem kodu plików head.phtml oraz plików i bloków wokół, ale nie ma sposobu bez zmiany szablonów, aby wstrzyknąć kod do <head>.Jestem idiotą, napisałeś już wszystko i nadzorował kilka razy
<?php echo $this->getChildHtml() ?>
whead.phtml
: - /Chciałbym po prostu użyć do tego
core/template
bloku i szablonu. Jest łatwy do odczytania, łatwy do zrozumienia i zarządzania.źródło
core/text_list
i dodaniu tam wszystkich rzeczy, które chcesz (jeśli jest to więcej niż jeden plik), aby łatwiej je usunąć na innych stronach.