Deaktivieren Sie das Laden von Skripten im Kopf


8

Wie deaktiviere ich das Laden von

  • mootools-core.js
  • core.js

In <head>ohne Verwendung einer Komponente / eines Plugins eines Drittanbieters?


Welche Version von Joomla verwenden Sie?
TryHarder

@moomoochoo Ich benutze Joomla 3.2
Web-Tiki

Antworten:


18

Ich benutze Joomla 3.2, ganz oben in meinem Tempate habe ich gesetzt:

$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]);
    }
}

Dies verhindert, dass diese Skripte nach Bedarf hinzugefügt, Skripte hinzugefügt oder entfernt werden


3
Dies ist bei meinem letzten Projekt fehlgeschlagen (joomla 3.3.6). Ich habe JURI::root(true).vor den Skriptpfaden hinzugefügt und es hat funktioniert.
Web-Tiki

5

Sie können es in der Vorlage deaktivieren

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

Dadurch werden die beiden JS-Dateien aus dem Header entfernt.


4

In Joomla 3.x können Sie JHtml::_('jquery.framework')Ihre Vorlage aufrufen , um jQuery ohne Mootools zu laden. Dadurch wird jQuery standardmäßig in keinem Konfliktmodus geladen. Wenn Sie also den normalen Modus benötigen, fügen Sie einfach einen zweiten Parameter von false hinzu : JHtml::_('jquery.framework', false).

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


2

Ich habe das benutzt:

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

2
Da Ihre needleZeichenfolge nicht variabel ist und die einzige Absicht darin besteht, eine Übereinstimmung ohne Berücksichtigung der Groß- und Kleinschreibung vorzunehmen, ist es besser, stripos () zu verwenden ...if (stripos($script, 'media/jui') !== false)
mickmackusa

0

Die Lösung von @ContextSwitch funktionierte bei mir nicht, da einige Skripte nach der Verarbeitung der Vorlage geladen wurden, sodass das Deaktivieren der Dateien zu diesem Zeitpunkt keine Auswirkungen auf diese Dateien hatte.

Also musste ich die ähnliche Lösung implementieren, aber ein einfaches Plugin verwenden, das an das onBeforeCompileHeadEreignis gebunden war . Wie von mir hier beschrieben .

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.