Desativar carregamento de script no cabeçalho


9

Como desativo o carregamento de

  • mootools-core.js
  • core.js

Em <head>sem o uso de um terceiro componente / plugin?


Qual versão do Joomla você está usando?
TryHarder 23/04

@moomoochoo Estou usando o Joomla 3.2
web-tiki

Respostas:


18

Estou usando o Joomla 3.2, no topo do meu tempate eu coloquei:

$doc = JFactory::getDocument();

$dontInclude = array(
'/media/jui/js/jquery.js',
'/media/jui/js/jquery.min.js',
'/media/jui/js/jquery-noconflict.js',
'/media/jui/js/jquery-migrate.js',
'/media/jui/js/jquery-migrate.min.js',
'/media/jui/js/bootstrap.js',
'/media/system/js/core-uncompressed.js',
'/media/system/js/tabs-state.js',
'/media/system/js/core.js',
'/media/system/js/mootools-core.js',
'/media/system/js/mootools-core-uncompressed.js',
);

foreach($doc->_scripts as $key => $script){
    if(in_array($key, $dontInclude)){
        unset($doc->_scripts[$key]);
    }
}

Isso impede que esses scripts sejam incluídos, adicione ou remova scripts conforme necessário


3
Isso falhou no meu último projeto (joomla 3.3.6). Eu adicionei JURI::root(true).antes dos caminhos do script e funcionou.
Web-tiki

5

Você pode desmarcá-lo no modelo

unset(
  $this->_scripts['/media/jui/js/mootools-core.js'],
  $this->_scripts['/media/jui/js/core.js']);

Isso removerá os dois arquivos JS do cabeçalho.


4

No Joomla 3.x, você pode chamar JHtml::_('jquery.framework')seu modelo para carregar o jQuery sem o Mootools. Isso carrega jQuery em modo sem conflito por padrão, então se você precisar de modo normal, basta adicionar um segundo parâmetro de falsa : JHtml::_('jquery.framework', false).

http://docs.joomla.org/J3.2:Javascript_Frameworks


2

Eu usei isso:

foreach ($doc->_scripts as $script => $value)
{
    if (preg_match('/media\/jui/i', $script))
      unset($doc->_scripts[$script]);
}

2
Como sua needlestring não é variável e a única intenção é fazer uma correspondência que não diferencia maiúsculas de minúsculas, seria melhor usar stripos () ...if (stripos($script, 'media/jui') !== false)
mickmackusa

0

A solução da @ContextSwitch não estava funcionando para mim devido a alguns scripts serem carregados após o processamento do modelo, portanto, a desabilitação dos arquivos nesse estágio não afetava esses arquivos.

Então, eu tive que implementar a solução semelhante, mas usando um plug-in simples vinculado ao onBeforeCompileHeadevento. Como descrito por mim aqui .

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.