¿Cómo puedo eliminar por completo Bootstrap de la interfaz de Joomla?

14

Recientemente, traté de eliminar todas las instancias de Bootstrap de la parte frontal de Joomla para fines de depuración. Estaba usando una plantilla de esqueleto con una instalación relativamente nueva de Joomla 3.3. Eliminé todas las inclusiones de Bootstrap de la plantilla y apagué todos los complementos y módulos que pensé que podrían estar cargándolo. También borré el caché de Joomla. A pesar de eso, firebug me dijo que Joomla todavía estaba intentando cargar bootstrap.min.js desde /media/jui/js/bootstrap.min.js

Resolví el problema cambiando temporalmente el nombre del archivo bootstrap, pero me hizo preguntarme.

  • ¿Esto sucede con todas las instalaciones de Joomla 3.3 o es solo mío?
  • ¿Hay alguna forma de identificar desde dónde se carga el bootstrap?
  • ¿Hay alguna forma en que pueda desactivar la carga de arranque?
Esforzarse más
fuente

Respuestas:

15

¿Esto sucede con todas las instalaciones de Joomla 3.3 o es solo mío?

En la versión: 3.2-3.7 (probé).

¿Hay alguna forma en que pueda desactivar la carga de arranque?

Sí hay. Simplemente elimínelo antes de crear el encabezado, usando el evento onBeforeCompileHead ( Más información en los documentos ).

En vista de la posibilidad de adjuntar la biblioteca en cualquier momento por varias extensiones. No es suficiente eliminar de la plantilla y los módulos algunas líneas. Esta no es la solución perfecta. Pero puede estar seguro de que no se cargará.

En mi proyecto estoy usando bootstrap 3.2. Pasé todo el día para encontrar una manera de eliminar Bootstrap 2.

La única solución era eliminar el script antes de construir el encabezado.

Mi solución es crear un complemento:

class plgSystemYourPlugin extends JPlugin
{
    public function onBeforeCompileHead()
    {
        // Application Object
        $app = JFactory::getApplication();

        // Front only
        if( $app instanceof JApplicationSite )
        {
            $doc            = JFactory::getDocument();
            // Remove default bootstrap
            unset($doc->_scripts[JURI::root(true).'/media/jui/js/bootstrap.min.js']);
        }
    }
}

Funciona en Joomla! 3.2-3.6

(Para los interesados) también necesitaba eliminar esto:

    unset($doc->_scripts[JURI::root(true).'/media/system/js/frontediting.js']);
    unset($doc->_scripts[JURI::root(true).'/media/system/js/html5fallback.js']);
Jacek Labuda
fuente
2
¡Excelente! Me llevó 5 minutos crear mi propio complemento "eliminar jquery y boostrap" gracias a ti.
Alexandre Paulo
16

Un truco alternativo que siempre me gusta tirar, ya que no implica la edición de archivos principales, es anular el archivo CSS con un archivo CSS en blanco en su plantilla. Esto aún llevará a una llamada a su servidor para cargar el recurso, pero no tendrá que tener ningún estilo de arranque.

Simplemente agregue un archivo vacío aquí: templates/YOUR_TEMPLATE/css/jui/bootstrap.min.cssy templates/YOUR_TEMPLATE/js/jui/bootstrap.min.js.

Naturalmente, cualquier configuración de componentes para usar bootstrap se verá sin estilo, y todavía habrá una llamada para cargar los archivos css y js por el navegador. Sin embargo, los archivos estarán vacíos (tamaño de descarga pequeño) y no tendrán impacto en el estilo.

David Fritsch
fuente
Nunca lo pensé así, genial !!!
Mohd Abdul Mujib
7

Solo una idea (no probada), pero ¿qué tal construir un pequeño complemento que desarme Bootstrap?

Algo como esto:

public function onAfterRender() {
    //get the array containing all the script declarations
     $document = JFactory::getDocument(); 
     $headData = $document->getHeadData();
     $scripts = $headData['scripts'];

     //remove script
     unset($scripts['/media/jui/js/bootstrap.min.js']);
     $headData['scripts'] = $scripts;
     $document->setHeadData($headData);
}
johanpw
fuente
4

Si no está buscando crear su propio complemento, una solución simple sería probar:

Desarmar en plantilla

//JS
unset($doc->_scripts[$this->baseurl.'/media/jui/js/bootstrap.min.js']);
// CSS    
unset($doc->_stylesheets[$this->baseurl.'/media/jui/js/bootstrap.css']);

Sin embargo, algunas extensiones aún insertan js o css incluso si lo elimina. La forma más confiable que he descubierto es con:

JCC - Complemento de control CSS JS

http://extensions.joomla.org/extensions/extension/core-enhancements/performance/js-css-control

Sin embargo, a veces todavía tendrá insertado js en línea en su plantilla, por lo que a veces deberá hacer preg_replace para js en línea.

iamrobert
fuente
4

Esto es algo que me ha molestado desde el comienzo de Joomla 3.xy hasta el día de hoy, no se ha hecho nada para darle al usuario la opción de evitar que se carguen los archivos de arranque.

Desafortunadamente, Bootstrap se carga desde el núcleo de Joomla y esto se debe a algunas características básicas que requieren que funcione, por lo que eliminarlo por completo evitará que algunas funciones funcionen, como la información sobre herramientas.

La única forma de eliminarlo (que yo sepa) es a través de un hack central en el siguiente archivo: ( no recomendado )

bibliotecas \ cms \ html \ bootstrap.php

La única otra forma en que puedo pensar es crear una anulación de plantilla para cada módulo, componente y complemento que llama a la biblioteca de arranque y eliminarla.

Ninguno de los métodos es bueno, sin embargo, Joomla 3.x se creó en Bootstrap, por lo que tenemos que vivir con él.

Lodder
fuente
1
Gracias Lodder. Parece un poco miope que no tienen un botón de apagado. Esperemos que lo agreguen a Joomla 3.4 :)
TryHarder
No deberías tener archivos principales. Período. Hay muchas otras formas de eliminar todos los rastros de Bootstrap, sin hackear archivos principales y todos son preferibles. Todos ellos también sobrevivirán a una actualización de Joomla, que no se puede decir de los archivos centrales pirateados.
Seth Warburton
@seth, sí, ahora hay otras formas. Esta respuesta fue escrita hace 9 meses y en ese momento, no sabía de otra manera
Lodder
@ Valentin Despa, ¿podría eliminar esta respuesta por mí ya que no puedo?
Lodder
@oooooo: he solicitado que se elimine el indicador "aceptado" de mi respuesta, ya que no es la solución aquí. Si no pueden hacerlo, ¿le importaría marcar la respuesta de otra persona como "aceptada", por favor?
Lodder
3

Hay dos maneras:

  1. Desarma los archivos incluidos dentro de tu plantilla y luego crea una anulación para evitar que cualquier módulo o componente que estés usando los vuelva a incluir (no tanto trabajo como parece).

    1. Utilice cualquiera de los numerosos complementos del sistema que pueden hacer esto. Personalmente, recomendaría este https://github.com/phproberto/plg_sys_mootable, ya que brinda control total sobre cuándo y dónde eliminar archivos, por lo que se puede configurar para que no rompa la edición frontal, por ejemplo (que si elimina todo se romperá normalmente).

La opción 2 tiene la ventaja de la facilidad de uso, pero aún tiene que vivir con el marcado marcado Bootstrap 2.x que cubre su sitio. La opción 1 requiere un poco más de trabajo, pero significa que puede eliminar cualquier rastro de Bootstrap; Siempre mi opción preferida. Consulte http://joomlafuture.com/ para ver el código de ejemplo.

Seth Warburton
fuente
2

Joomla no carga CSS de arranque automáticamente, pero carga el JS. Si su plantilla utiliza el método estándar para cargar la cabeza de Joomla:

<jdoc:include type="head" />

Cargará los archivos mootools, jquery y bootstrap en este orden:

<script src="/media/system/js/mootools-core.js" type="text/javascript"></script>
<script src="/media/system/js/core.js" type="text/javascript"></script>
<script src="/media/system/js/caption.js" type="text/javascript"></script>
<script src="/media/system/js/mootools-more.js" type="text/javascript"></script>
<script src="/media/jui/js/jquery.min.js" type="text/javascript"></script>
<script src="/media/jui/js/jquery-noconflict.js" type="text/javascript"></script>
<script src="/media/jui/js/bootstrap.min.js" type="text/javascript"></script>

No carga archivos CSS. Puede probarlo eliminando la línea de su archivo de plantilla y luego verificando qué archivos principales faltan.

La plantilla carga el CSS de arranque. Joomla (desde 2.5 creo) incluyó Bootstrap 2.x en sus archivos multimedia para facilitar el acceso. Protostar, por alguna razón, no llama a bootstrap desde los archivos multimedia. En cambio, han copiado y pegado todo el CSS de arranque en su archivo template.css. Otros marcos se llaman Bootstrap. Warp 7, por ejemplo, tiene una casilla de verificación para habilitar o deshabilitar Bootstrap.

Como el frontend y el backend tienen diferentes plantillas, Bootstrap se puede cargar o deshabilitar para uno y no para el otro. No hay dependencia si desea deshabilitar Bootstrap desde el frontend y no desde el backend.

Mi preferencia es Bootstrap 3, por lo que en varias plantillas personalizadas diferentes, descargué e incluí el bootstrap 3 css en mi encabezado de plantilla después de la línea del encabezado de joomla y dentro de mis etiquetas de encabezado de plantilla:

$document = JFactory::getDocument();
$document->setMetaData( 'viewport', 'width=device-width, initial-scale=1, minimum-scale=1' );
$document->addStyleSheet($this->baseurl.'/templates/'.$this->template.'/css/bootstrap.min.css');

El método es ligeramente diferente para frameworks como Warp 7. También puede cargar directamente desde la url de CDN bootstrap si lo prefiere.

Entonces Joomla no te obliga a usar Bootstrap ni ninguna versión de Bootstrap, al menos para el CSS. Podría usar otros marcos receptivos si lo desea. Todo está hecho en la plantilla. No hay necesidad de hacks o complementos.

Quinn
fuente
1

Joomla 3.3 (menor que) se basa en Bootstrap 2.3 no en Bootstrap 3.X

Quería migrar a la nueva versión de Bootstrap, y había muchas posiciones que, por supuesto, he cambiado según mi idea. Lo he hecho pero muy recientemente.

En muchas posiciones de código tuve que deshabilitar Bootstrap como el siguiente código:

// Agregar JavaScript Frameworks JHtml :: _ ('bootstrap.framework');

e hice una nueva plantilla completamente de Joomla para hacer eso; pero creo que si desea migrar a otro marco de la interfaz de usuario, también debe continuar con este proceso y al menos tiene más de 30 componentes, módulos, complementos y algunos códigos heredados de Joomla que debe desarrollar nuevamente. Es simple pero necesita mucho tiempo.

Nueva percepción 02 de julio de 2015: basado en el método "no establecido" en Joomla que algunos de nuestros amigos mencionaron en este foro, podría deshabilitar completamente la versión anterior de Bootstrap y Mootools o cualquier otra biblioteca Javascript o archivo CSS. Lo siento antes de mencionar una mala solución. puedes leer esta publicación para obtener más información para deshabilitar Bootstrap

Sami
fuente
Buena atrapada. Bootstrap 3 es un error. Lo editaré ahora.
TryHarder
-2

O puede usar una plantilla de Yootheme, configurarla como predeterminada, luego en esa configuración de plantilla, seleccione "no cargar bootstrap".

Jim Hill
fuente
3
Básicamente, ¿estás diciendo que 49 euros para eliminar Bootstrap también es una opción?
Lodder