web-dev-qa-db-fra.com

Supprimer les scripts Joomla indésirables dans la version 3.8.x curieux ne fonctionne pas

Vous vous demandez simplement comment se passe la suite, peut-être que quelqu'un sait:

Comme on le sait, je supprime les scripts Joomla indésirables de différentes manières, notamment en utilisant:

$this->_script = $this->_scripts = array();

ou de manière unique:

unset($this->_scripts[JURI::root(true).'/media/system/js/mootools-core.js']);

mais j’ai un site Joomla où cela n’a aucun effet mais des scripts ont été chargés. Également obtenir des scripts via un second moyen n'a aucun succès:

$document = JFactory::getDocument(); 
$headData = $document->getHeadData();
$scripts = $headData['scripts']; 

quand je vérifie les scripts juste avant le chargement, dans les deux cas, les scripts sont vides et ne peuvent évidemment pas être réinitialisés, mais ils sont chargés avec le HeadRenderer de Joomla.

Je peux résoudre ce problème en copiant, modifiant et chargeant mon propre fichier sur la base de:\libraries\src\Document\Renderer\Html\HeadRenderer.php

mais je suis vraiment intéressé par ce qui se passe ici, peu importe si je charge un modèle personnalisé ou en utilise un Joomla (Protostar) en ne modifiant que les scripts non définis. Les mêmes scripts problématiques sont vides via $ this ou getDocument (); mais chargé dans la tête HTML via <jdoc:include type="head" />

D'une manière ou d'une autre, les scripts ne sont pas chargés lors du rendu du modèle, mais avec le rendu en tête? J'ai essayé de désactiver tous les modules et plugins tiers, mais aucun changement ... Un grand point d'interrogation pour moi? Des idées?

À votre santé!

4
SmokerCreep

L'utilisation d'un modèle pour manipuler les données de la tête n'a jamais été correcte. Au lieu de cela, vous devriez utiliser un plugin système avec onBeforeCompileHead event.

https://docs.joomla.org/Plugin/Events/System#onBeforeCompileHead

2
Sharky