Para carregamento rápido da página, preciso inserir JS no final da página a partir de componentes e módulos.
A maneira a seguir de declarar scripts não funciona para inseri-lo na parte inferior, porque não há parâmetro para colocá-lo no rodapé.
$rsws_document = JFactory::getDocument();
$rsws_document->addScript();
Então, quais são as formas concisas de cumprir meu propósito? Se o joomla não fornece essa funcionalidade, é uma desvantagem significativa na velocidade de carregamento da página.
Também quero adicionar folhas de estilo personalizadas de um módulo para que elas sejam injetadas na página apenas uma vez, mesmo que o mesmo módulo a adicione várias vezes nessa página -
<style type="text/css"> .classname { color:red; }.....</style>
Como posso conseguir isso?
cms
joomla-api
module-style
javascript
dev-m
fonte
fonte
Respostas:
JDocument-> addScript () tem opções para adiar o carregamento do script e / ou carregá-lo de forma assíncrona. Consulte o documento da API: http://api.joomla.org/cms-3/classes/JDocumentHTML.html#method_addScript
Isso permitirá que o navegador carregue os scripts posteriormente no processo, o que ajudará no tempo de carregamento da página.
Não há API para carregar os scripts na parte inferior da página. Se você precisar, use extensões de terceiros ou adicione-as diretamente ao modelo.
fonte
Até agora, acho que não há opção para carregar scripts na parte inferior da página.
Para sua segunda pergunta, você pode usar uma propriedade boolean estática e configurá-la como true na primeira vez que seu css for renderizado. Para as seguintes instâncias do módulo, basta testar esta propriedade para decidir se você precisa adicionar seu css ou não.
Talvez um bom lugar para adicionar essa propriedade estática seja uma classe auxiliar de módulo.
Saudações,
fonte
$ document-> addScript () sempre adiciona scripts na seção de cabeçalho antes da tag. Portanto, se você deseja carregar um arquivo de script na parte inferior da página, precisará incluir os js nesse arquivo simplesmente usando
<script src="{pathtojacvascriptfile}"></script>
Espero que isso possa ajudar
fonte
No momento, não há um método para adicionar um script ao rodapé. No entanto, você pode criar um plug-in que obtenha a saída, procure por uma tag com nome apropriado, como rodapé e use str_replace para adicionar seu código.
Mas você pode usar essas extensões para conseguir isso:
Também encontrei um método. Prefiro não invadir o código principal, mas é o melhor que posso encontrar no momento.
verifique este link - os arquivos Javascript estão incluídos no rodapé
Espero que ajude os outros :)
fonte
Utilizamos um módulo chamado "Blank Module", que permite colocar qualquer script (PHP, Java, CSS, HTML, o que for) e escolher onde carregá-lo (cabeça, corpo, fim do corpo, etc.).
É grátis e achei totalmente útil: http://extensions.joomla.org/extensions/core-enhancements/coding-a-scripts-integration/custom-code-in-modules/3668
Para mover scripts do para abaixo do corpo, é um pouco mais trabalhoso. Usa isto:
Incluir no modelo:
Adicione uma linha "não configurada" para cada script que você precisa remover do cabeçalho. Em seguida, adicione-o ao módulo em branco carregando na parte inferior (posição de depuração?). Uma vantagem: se você criar diferentes módulos em branco, poderá carregar apenas scripts quando necessário (como uma instância de módulo apenas para motools, carregando somente em uma página específica).
Para estilos, você também pode usar o Módulo em branco.
Eu espero que isso ajude.
fonte
Ainda não tentei sozinho. Você pode criar um módulo que não exibe HTML, apenas imprime scripts e estilos, mas na posição inferior do módulo nas páginas em que seu outro módulo é exibido.
fonte