it-swarm-es.tech

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

Recientemente, intenté eliminar todas las instancias de Bootstrap desde el extremo 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 de /media/jui/js/bootstrap.min.js

Resolví el problema cambiando temporalmente el nombre del archivo bootstrap), pero me pregunto.

  • ¿Esto sucede con todas las instalaciones de Joomla 3.3 o es solo mío?
  • ¿Hay alguna manera de identificar dónde se carga bootstrap?
  • ¿Hay alguna manera de deshabilitar la carga de bootstrap)?
14
TryHarder

¿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 manera de deshabilitar la carga de bootstrap)?

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']);
15
Jacek Labuda

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 todavía llevará a una llamada a su servidor para cargar el recurso, pero no tendrá que tener ningún estilo bootstrap.

Simplemente agregue un archivo vacío aquí: templates/YOUR_TEMPLATE/css/jui/bootstrap.min.css y 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 tienen impacto en el estilo.

15
David Fritsch

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);
}
7
johanpw

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.

4
iamrobert

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 bootstrap).

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 características 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 llame a la biblioteca bootstrap) y elimínela.

Ninguno de los dos métodos es agradable, sin embargo, Joomla 3.x se creó en Bootstrap, así que tenemos que vivir con él

4
Lodder

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 proporciona control total sobre cuándo y dónde eliminar archivos para que se pueda configurar para que no interrumpa 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 crummy Bootstrap 2.x marcado que cubre su sitio. La opción 1 requiere un poco más de trabajo pero significa que puede eliminar cada rastro de Bootstrap; siempre es mi opción preferida. Vea http://joomlafuture.com/ para obtener un código de ejemplo.

3
Seth Warburton

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

<jdoc:include type="head" />

Cargará mootools, jquery y bootstrap archivos 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.

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

Dado que el frontend y el backend tienen diferentes plantillas, Bootstrap puede cargarse o deshabilitarse 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, así que en varias plantillas personalizadas diferentes, he descargado e incluido el bootstrap 3 css en mi encabezado de plantilla después de la línea de encabezado de joomla) y dentro de mis etiquetas de cabeza 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 marcos como Warp 7. También puede cargar directamente desde la URL de bootstrap CDN si lo prefiere).

Entonces, Joomla no lo obliga a usar Bootstrap o cualquier versión de Bootstrap, al menos para CSS. Puede usar otros frameworks receptivos si lo desea. Todo se hace en la plantilla. No es necesario hacks o complementos.

2
Quinn

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

Quería migrar a la nueva versión de Bootstrap, y había muchas posiciones que tuve que cambiar, por supuesto, 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 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 mencionados en este foro pude deshabilitar por completo 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 esto post para obtener más información para deshabilitar Bootstrap

1
Sami