Pregunta

Recientemente actualicé de Joomla 3.2.1 a Joomla 3.2.2.

En Joomla 3.2.1, desactivé manualmente la inclusión de jQuery:

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

Pero esto no funciona en Joomla 3.2.2.¿Hay alguna manera de no incluir jQuery de Joomla en 3.2.2?

¿Fue útil?

Solución 3

He añadido:

            $doNotInclude = array(
                'jquery',
                'bootstrap',
                'behavior',
            );
            if(in_array($file, $doNotInclude)){
                return;
            }

inmediatamente después:

            list($key, $prefix, $file, $func) = static::extract($key); 

en bibliotecas / cms / html / html.php, en la función "_".

No me gusta, ya que es una modificación para el núcleo de Joomla, pero funciona.Todavía estoy buscando una solución mejor.

Otros consejos

Otra variación que funciona bien para mí con Joomla 3.4 es editar la plantilla> archivo index.php con algo como:

$doc = JFactory::getDocument();

$headData = $doc->getHeadData();
$scripts = $headData['scripts'];

//scripts to remove, customise as required

unset($scripts[JUri::root(true) . '/media/system/js/mootools-core.js']);
unset($scripts[JUri::root(true) . '/media/system/js/mootools-more.js']);
unset($scripts[JUri::root(true) . '/media/system/js/core.js']);
unset($scripts[JUri::root(true) . '/media/system/js/modal.js']);
unset($scripts[JUri::root(true) . '/media/system/js/caption.js']);
unset($scripts[JUri::root(true) . '/media/jui/js/jquery.min.js']);
unset($scripts[JUri::root(true) . '/media/jui/js/jquery-noconflict.js']);
unset($scripts[JUri::root(true) . '/media/jui/js/bootstrap.min.js']);
unset($scripts[JUri::root(true) . '/media/jui/js/jquery-migrate.min.js']);

$headData['scripts'] = $scripts;
$doc->setHeadData($headData);

Debe agregar un prefijo de JUri::root(true) antes de cada uno de esos nombres de archivos: las rutas relativas no funcionarán

También puedes probar algo como esto:

$removeScripts = [
    '/media/jui/js/jquery.min.js',
    '/media/jui/js/jquery-noconflict.js',
    '/media/jui/js/jquery-migrate.min.js',
    '/media/system/js/caption.js',
];
foreach ($removeScripts as $removeScript) {
    unset($this->_scripts[JURI::root(true).$removeScript]);
}

El problema es con tu in_array.

Si lo eliminas cambiando esto:

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

a esto:

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

Entonces funciona bien.Es bastante inútil verificar si la clave de matriz existe, ya que deduje que usted no ha eliminado manualmente ninguno de estos archivos.

Espero que esto ayude

Joomla 3.3.6 Carga scripts de diferente manera a que $ Doc -> _ Scripts devolverán nada ... así que no hay nada que desactivar.

Recomiendo usar este complemento: https://github.com/poznakomlus/joomla_options

Le permite eliminar el bootstrap, jquery y mootools (puede elegir qué deshabilitar).

Descargo de responsabilidad: No estoy afiliado ninguna forma con el desarrollador de plugin o el complemento en cualquier forma.

Si está escribiendo una plantilla personalizada o un componente, donde necesita eliminar todos los scripts cargados de forma predeterminada dentro de Joomla, puede crear un complemento simple y vincular la ejecución al onBeforeCompileHead evento.

Mi implementación fue la siguiente.Es muy sencillo.Puede jugar más con la lista de búsqueda, siendo específico para los nombres de archivos o simplemente incluyendo la carpeta principal en la lista negra.

protected $app;
public function onBeforeCompileHead() {
    // Front end
    if ($this->app instanceof JApplicationSite) {
        $doc = JFactory::getDocument();
        $search = array(
            'jui/js/',
            'system/js/'
        );
        foreach ($doc->_scripts as $key => $script) {
            foreach ($search as $findme) {
                if (stristr($key, $findme) !== false) {
                    unset($doc->_scripts[$key]);
                }
            }
        }
    }
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top