Fiz o seguinte para incluir o jQuery do Google CDN no 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>
No entanto, quando eu quero implementá-lo com um fallback local, que funciona muito bem, acabo adicionando-o ao meu .phtml como tal:
<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>
- Existe uma maneira mais elegante de fazer isso no local.xml do que empurrar o fallback para o
<text>
nó como estou fazendojQuery.noConflict
?
Editar:
Para chamar a atenção para a outra parte da pergunta - existem módulos da comunidade que incluem o jQuery para você? Se eles têm um jQuery local, tudo bem - se eles usam o Google CDN - ainda melhor. Se isso não estiver lá, eu adoraria criar um.
- Existem extensões de acesso que lidam com isso sem que eu precise inicializá-lo eu mesmo?
layout
javascript
philwinkle
fonte
fonte
<text>
método descrito acima ... não tenho certeza se essa é uma solução aceitável. O módulo N98 usa um js separados arquivo de inclusão para chamar noConflict, embora, suponho ...Respostas:
No final do dia, é preferível fazer isso via XML de layout. Descobri que a opção local de fallback é melhor implementada em uma declaração de linha única minificada com o Google Closure Compiler.
fonte
Procurei por um longo tempo o código dos arquivos head.phtml e os arquivos e blocos, mas não há como alterar os modelos para injetar código no <head>.Eu sou um idiota, você já escreveu tudo e eu supervisionei algumas vezes
<?php echo $this->getChildHtml() ?>
nohead.phtml
: - /Então, eu usaria apenas um
core/template
bloco e um modelo para isso. É fácil de ler, fácil de entender e fácil de gerenciar.fonte
core/text_list
e adicionar lá tudo o que deseja (se houver mais de um arquivo) para removê-lo mais facilmente em outras páginas.