Eu uso JHtml::script
para adicionar scripts às minhas páginas em um módulo desenvolvido sob medida. No entanto, esses scripts são injetados na cabeça antes que o J3 adicione o jQuery - por exemplo:
<!-- my module js -->
<script src="/modules/mod_tiles/js/jquery.isotope.min.js" type="text/javascript"></script>
<script src="/modules/mod_tiles/js/jquery.hoverintent.min.js" type="text/javascript"></script>
<script src="/modules/mod_tiles/js/mod_tiles.js" type="text/javascript"></script>
<!-- then joomla loads jQuery --->
<script src="/media/jui/js/jquery-noconflict.js" type="text/javascript"></script>
<script src="/media/jui/js/jquery.min.js" type="text/javascript"></script>
Como forçar o Joomla a carregar o jQuery antes de outros scripts?
joomla-3.x
jquery
codinghands
fonte
fonte
mod_tiles.php
nesse jQuery forçado a carregar primeiro. Obrigado!se eu li sua pergunta corretamente, você está desenvolvendo seu próprio módulo.
Tente isso, em default.php - a visão do módulo (em "tmpl"):
JHtml::stylesheet('modules/'.$module->module.'/assets/css/yourfile.css');
JHtml::script('modules/'.$module->module.'/assets/js/yourscript.js');
Ou isto :
JHtml::_('stylesheet', 'modules/'.$module->module.'/assets/css/anotherfile.css');
JHtml::_('script', 'modules/'.$module->module.'/assets/js/othercript.js');
Nos dois casos, os arquivos JS devem ser injetados após o jQuery, desde que você tenha criado uma pasta "asset" e uma pasta "css" e "js" dentro.
A segunda solução está mais de acordo com a API do joomla 3.XX.
Espero que ajude.
fonte
assets
pasta - isso não foi diferente, e os scripts ainda carregam antes do jQuery. Gostaria também de saber sobre a sabedoria em colocar este tipo de código em um arquivo de modelo (especialmente se houver vários modelos usando os mesmos scripts, DRY etc etc.)default.php
natmpl
pasta (modelo) do módulo. Eu pensaria que os scripts deveriam ser carregadosmod_tiles.php
(o 'controlador') e nãodefault.php
(a exibição).Eu encontrei esse problema na semana passada e estava relacionado a onde eu estava chamando JHtml :: script. Você está fazendo isso na sua visualização ou no modelo da visualização? Se você tentar adicionar os scripts na própria exibição (views / yourview / view.html.php), eles serão inseridos antes dos scripts do Joomla !, mas se você adicionar os scripts no modelo (views / yourview / tmpl / default.php) eles serão inseridos após os scripts do Joomla!
Boa sorte!
fonte
tmpl
. Tentei adicionar os scripts em mod_tiles.php e default.php - ambos carregavam antes do jQuery.Provavelmente, isso se deve ao método
mod_tiles
usado pelo desenvolvedor para importar os scripts. Eu suponho que eles não aderiram aos padrões de codificação Joomla nesta situação.Você tem 2 opções (que eu posso pensar) hwre:
JHtml
.Espero que isto ajude
fonte
Eu queria adicionar meus dois bits depois do fato. Eu tenho alguns scripts e folhas de estilo que precisam ser carregados para todas as visualizações que temos no componente e queria que um único ponto acontecesse, garantindo também que eles fossem carregados na sequência correta.
No arquivo
components\myComponent\mycomponent.php
:fonte
Eu sei que esse é um tópico antigo, mas você já chegou ao fundo disso? Acabei de experimentar o mesmo problema. Eu identifiquei a causa, mas não o problema / solução; Eu tenho uma suspeita sorrateira de que é um erro, mas poderia fazer com alguém tentar isso.
Cenário: você criou um módulo que inclui um script dependente de jQuery para usar o seguinte na visualização default.php:
Você instala o módulo e coloca uma posição no módulo, digamos 'left'. Quando você olha para o código-fonte do front-end, tudo fica bem, todos os scripts são carregados após os scripts incluídos no
No entanto, se você der ao módulo uma posição 'acordeão' e usar o recurso de posição de carga do joomla para adicionar o módulo a um artigo
então o accordion.js é adicionado ANTES dos arquivos bootstrap.framework.
A única maneira de conseguir que ele funcione é adicionar o script como um script embutido, em vez de ser incluído na cabeça.
EDIT: o mesmo vale para incluir o css; está sendo adicionado ao topo da lista de declaração css (antes dos arquivos css de modelo e de inicialização). O problema é que isso é importante para as declarações css.
fonte