it-swarm.com.de

Wie kann ich Bootstrap vom Frontend von Joomla entfernen?

Vor kurzem habe ich versucht, alle Instanzen von Bootstrap vom Frontend von Joomla zu Debugging-Zwecken zu entfernen. Ich habe eine Skelett-Vorlage mit einer relativ neuen Installation von Joomla 3.3 verwendet. Ich habe alle Einschlüsse von = entfernt Bootstrap aus der Vorlage und ich habe alle Plugins und Module deaktiviert, von denen ich dachte, dass sie geladen werden könnten. Ich habe auch den Joomla-Cache geleert. Trotzdem hat mir Firebug mitgeteilt, dass Joomla immer noch versucht, bootstrap.min zu laden .js von /media/jui/js/bootstrap.min.js

Ich habe das Problem umgangen, indem ich die Datei bootstrap umbenannt habe, aber ich habe mich gefragt.

  • Passiert das bei allen Joomla 3.3-Installationen oder gehört es nur mir?
  • Kann ich identifizieren, von wo bootstrap geladen wird?
  • Kann ich das Laden von bootstrap deaktivieren?
14
TryHarder

Passiert das bei allen Joomla 3.3-Installationen oder gehört es nur mir?

In der Version: 3.2-3.7 (habe ich getestet).

Kann ich das Laden von bootstrap deaktivieren?

Ja da ist. Entfernen Sie es einfach, bevor Sie den Header erstellen. Verwenden Sie dazu das Ereignis onBeforeCompileHead ( Weitere Informationen in den Dokumenten. ).

Im Hinblick auf die Möglichkeit, die Bibliothek jederzeit durch verschiedene Erweiterungen anzubinden. Es reicht nicht aus, nur wenige Zeilen aus der Vorlage und den Modulen zu entfernen. Dies ist keine perfekte Lösung. Aber Sie können sicher sein, dass es nicht geladen wird.

In meinem Projekt verwende ich bootstrap 3.2. Ich habe den ganzen Tag damit verbracht, einen Weg zu finden, bootstrap 2.

Die einzige Lösung bestand darin, das Skript vor dem Erstellen des Headers zu entfernen.

Meine Lösung ist, ein Plugin zu erstellen:

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

Es funktioniert in Joomla! 3.2-3.6

(Für interessierte) Ich musste auch dieses entfernen:

    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

Ein alternativer Hack, den ich immer wieder gerne verwerfe, da es nicht darum geht, Kerndateien zu bearbeiten, besteht darin, die CSS-Datei mit einer leeren CSS-Datei in Ihrer Vorlage zu überschreiben. Dies führt immer noch zu einem Aufruf an Ihren Server, um die Ressource zu laden, aber Sie müssen kein bootstrap Styling verwenden.

Fügen Sie hier einfach eine leere Datei hinzu: templates/YOUR_TEMPLATE/css/jui/bootstrap.min.css und templates/YOUR_TEMPLATE/js/jui/bootstrap.min.js.

Natürlich sieht jedes zu verwendende Komponentensetup bootstrap) nicht gestylt aus, und es wird weiterhin ein Aufruf zum Laden der CSS- und JS-Dateien durch den Browser angezeigt. Die Dateien sind jedoch leer (kleine Downloadgröße). und haben keinen Einfluss auf das Styling.

15
David Fritsch

Nur eine Idee (nicht getestet), aber wie wäre es mit einem kleinen Plugin, das Bootstrap deaktiviert?

Etwas wie das:

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

Wenn Sie nicht daran interessiert sind, ein eigenes Plugin zu erstellen, können Sie einfach Folgendes versuchen:

In Vorlage nicht gesetzt

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

Einige Erweiterungen fügen jedoch immer noch js oder css ein, auch wenn Sie es entfernen. Der zuverlässigste Weg, den ich entdeckt habe, ist mit:

JCC - JS CSS Control Plugin

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

Allerdings haben Sie manchmal immer noch js inline in Ihrer Vorlage eingefügt. Manchmal müssen Sie preg_replace für die inline js ausführen.

4
iamrobert

Dies ist etwas, was mich seit Beginn von Joomla 3.x nervt und bis heute nichts getan hat, um dem Benutzer die Möglichkeit zu geben, das Laden der bootstrap Dateien zu verhindern.

Leider wird Bootstrap aus dem Kern von Joomla geladen und dies ist auf einige Kernfunktionen zurückzuführen, die es erfordern, dass es funktioniert. Wenn Sie es also vollständig entfernen, können einige Funktionen nicht mehr ausgeführt werden, z. B. der Tooltip.

Die einzige Möglichkeit, es zu entfernen (von der ich weiß), ist über einen Core-Hack in der folgenden Datei: (nicht empfohlen)

bibliotheken\cms\html\bootstrap.php

Die einzige andere Möglichkeit, die ich mir vorstellen kann, besteht darin, für jedes Modul, jede Komponente und jedes Plugin eine Vorlagenüberschreibung zu erstellen, die die bootstrap library aufruft und diese entfernt.

Weder Methode ist Nizza, aber Joomla 3.x wurde auf Bootstrap gebaut, also müssen wir damit leben

4
Lodder

Es gibt zwei Möglichkeiten:

  1. Deaktivieren Sie die enthaltenen Dateien in Ihrer Vorlage und erstellen Sie eine Überschreibung, um zu verhindern, dass Module oder Komponenten, die Sie möglicherweise verwenden, sie erneut einschließen (nicht so viel Arbeit, wie es sich anhört).

    1. Verwenden Sie dazu eines der zahlreichen System-Plugins. Persönlich würde ich dieses empfehlen https://github.com/phproberto/plg_sys_mootable , da es die volle Kontrolle darüber gibt, wann und wo Dateien entfernt werden sollen, damit die Front-End-Bearbeitung nicht unterbrochen wird zum Beispiel (was, wenn Sie alles entfernen, wird normalerweise gebrochen).

Option 2 bietet den Vorteil der Benutzerfreundlichkeit, aber Sie müssen immer noch mit miesen Bootstrap 2.x Markup auf Ihrer Site leben. Option 1 erfordert etwas mehr Arbeit, bedeutet aber, dass Sie Folgendes entfernen können: jede Spur von Bootstrap, immer meine bevorzugte Option. Siehe http://joomlafuture.com/ für Beispielcode.

3
Seth Warburton

Joomla lädt bootstrap CSS nicht automatisch, aber JS wird geladen. Wenn Ihre Vorlage die Standardmethode zum Laden des Joomla-Heads verwendet:

<jdoc:include type="head" />

Es werden mootools, jquery und bootstrap files in dieser Reihenfolge geladen:

<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>

Es werden keine CSS-Dateien geladen. Sie können dies testen, indem Sie die Zeile aus Ihrer Vorlagendatei entfernen und dann prüfen, welche Kopfdateien fehlen.

Das bootstrap CSS wird von Ihrer Vorlage geladen. Joomla (seit 2.5, glaube ich) hat Bootstrap 2.x in ihren Mediendateien für den einfachen Zugriff enthalten. Protostar für einige reason ruft bootstrap aus den Mediendateien nicht auf. Stattdessen haben sie das gesamte bootstrap CSS in ihre template.css-Datei kopiert und eingefügt. Andere Frameworks rufen Bootstrap auf Warp 7 verfügt beispielsweise über ein Kontrollkästchen zum Aktivieren oder Deaktivieren von Bootstrap.

Da das Frontend und das Backend unterschiedliche Vorlagen haben, kann Bootstrap für das eine und nicht für das andere geladen oder deaktiviert werden. Es besteht keine Abhängigkeit, wenn Sie Bootstrap deaktivieren möchten vom Frontend und nicht vom Backend.

Ich bevorzuge Bootstrap 3, daher habe ich auf verschiedenen benutzerdefinierten Vorlagen die CSS bootstrap 3 in meinen Vorlagenkopf nach der Joomla-Überschrift geladen und eingefügt und in meinen Vorlagenkopf-Tags:

$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');

Die Methode unterscheidet sich geringfügig für Frameworks wie Warp 7. Sie können auch direkt von der bootstrap CDN-URL laden, wenn Sie dies vorziehen.

Daher zwingt Joomla Sie nicht, Bootstrap oder eine beliebige Version von Bootstrap zu verwenden, zumindest nicht für das CSS. Sie können auch andere ansprechende Frameworks verwenden, wenn Sie dies möchten. Es wird alles in der Vorlage erledigt Hacks oder Plugins.

2
Quinn

Joomla 3.3 (kleiner als) basiert auf Bootstrap 2.3 nicht Bootstrap 3.X

Ich wollte auf eine neue Version von Bootstrap migrieren, und es gab viele Positionen, die ich natürlich aufgrund meiner Idee ändern musste. Ich habe es aber erst kürzlich getan.

In vielen Code-Positionen musste ich Bootstrap wie unten Code deaktivieren:

// JavaScript Frameworks hinzufügen JHtml :: _ ('bootstrap.framework');

und machte eine neue, vollständig Joomla-Vorlage, um das zu tun; Wenn Sie jedoch auf ein anderes UI-Framework migrieren möchten, müssen Sie diesen Prozess meines Erachtens ebenfalls fortsetzen, und Sie müssen mindestens 30 Komponenten, Module, Plugins und einige Joomla-Legacy-Codes neu entwickeln. Es ist einfach, braucht aber viel Zeit.

Neue Wahrnehmung 2. Juli 2015: Basierend auf der "unset" -Methode in Joomla, die einige unserer Freunde in diesem Forum erwähnt haben, konnte ich die vorherige Version von Bootstrap und Mootools oder einer anderen Javascript-Bibliothek oder CSS-Datei vollständig deaktivieren Es tut mir leid, bevor ich die schlechte Lösung erwähnte. Sie können dies lesen post um weitere Informationen zum Deaktivieren von Bootstrap zu erhalten

1
Sami