ti-enxame.com

Adicionando arquivo javascript no rodapé e estilos personalizados

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 a partir 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?

9
dev-m

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.

6
Bakual

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 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:

  1. ScriptsDown
  2. Otimização JCH

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 incluem no rodapé

Espero que ajude os outros :)

2
Joomler

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,

2
Pep Lainez

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:

 <? php 
 $ head = $ doc-> getHeadData (); 
 // Remover scripts 
 unset ($ doc -> _ scripts [JURI :: root (true). '/media/system/js/mootools-more.js']); 
?>

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 módulos em branco diferentes, 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.

2

$ 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 usando simplesmente <script src="{pathtojacvascriptfile}"></script>

Espero que isso possa ajudar

2
user5491

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.

0
Hung Tran