Überflüssige Dateien entfernen

  • Joomla Version
    4.2.9
    PHP Version
    PHP 8.1.x
    Hoster
    XAMPP

    Hi,

    ich habe mir ein Template selbst geschrieben auf Basis von Bootstrap 5. Im Head-Bereich der Seite lade ich mitteln den Web Asset Manager von Joomla 4 meine benötigten CSS und JS-Dateien. Soweit, sogut.

    Nun lad aber Joomla auch gewissen CSS und JS-Dateien, die ich meiner Meinung nach nicht benötige. Diese werden durch Joomla-Core Erweiterungen geladen. Hier ein paar Beispiele.

    Code
    <link href="/joomla/media/mod_languages/css/template.min.css?5acbe2dff0101a088c32b8f438974e98" rel="stylesheet">
    <link href="/joomla/media/vendor/joomla-custom-elements/css/joomla-alert.min.css?0.2.0" rel="stylesheet">
    Code
    <script src="/joomla/media/system/js/core.min.js?3b2c7481f479d57ca6a59403341a2e378a288779"></script>
    <script src="/joomla/media/com_finder/js/finder-es5.min.js?14e4c7fdce4ca11c6d12b74bad128529a294b183" nomodule="" defer=""></script>
    <script src="/joomla/media/system/js/messages-es5.min.js?42aff9798f66753bdb448b926baf2140f17f2c07" nomodule="" defer=""></script>
    <script src="/joomla/media/com_finder/js/finder.min.js?c8b55661ed62db937b8d6856090adf9258c4a0fc" type="module"></script>
    <script src="/joomla/media/system/js/messages.min.js?7425e8d1cb9e4f061d5e30271d6d99b085344117" type="module"></script>

    Meine erste Frage wäre, wozu all diese Dateien benötigt werden? Die CSS-Dateien brauche ich jedenfalls nicht.

    Zweite Frage: Wie werde ich diese Dateien los?


    MfG neoman

  • - Die

    Code
    mod_languages/css/template.min.css

    weil du ein Sprachenauswahl-Modul hast (language switcher).

    - Die

    Code
    media/vendor/joomla-custom-elements/css/joomla-alert.min.css

    weil Joomla damit seine "Messages" formatiert. Also so Zeugs wie "Vielen dank für die Email" im Messages-Container, den ja eigentlich jedes Template haben sollte.

    - Die

    Code
    media/system/js/core.min.js

    ist wichtiges Basis-JavaScript von Joomla mit vielen Grundfunktionen, die folgende JS benötigen. Viele Joomla-JS haben die "core" als Dependency, laden sie also automatisch mit (siehe auch unten zu Dependencies).

    - Die

    Code
    system/js/messages-es5.min.js

    und

    Code
    /system/js/messages.min.js

    Siehe oben zu Messages.

    - Die

    Code
    media/com_finder/js/finder.min.js

    weil du wohl eine Smart-Search-Suche (Indexsuche) aktiv hast. Vielleicht mit aktiven Suchvorschlägen? Weiß aber nicht, ob das der unmittelbare Grund ist.

    Blockieren kannst du generell Assets indem du sie in deiner Template joomla.asset.json-Datei überschreibst und die uri leer lässt.

    Ein Beispiel

    - Ich will das joomla-seitige Laden von Jquery unterbinden. Z.B. via 'jquery.framework' mit dem HTMLHelper oder $wa->useScript('jquery'); mit WAM und ähnliche.

    - Ich suche nach der joomla.asset.json von Joomla (es gibt mehrere!), die dafür zuständig ist: media\vendor\joomla.asset.json

    Ich übernehme in mein Template:

    Code
    {
          "name": "jquery",
          "type": "script",
          "uri": "vendor/jquery/jquery.min.js",
          "package": "jquery",
          "version": "3.6.0"
        }

    und ändere zu

    Code
    {
          "name": "jquery",
          "type": "script",
          "uri": "",
          "package": "jquery",
          "version": "3.6.0"
        }

    Eh klar, dass du dann aber auch ggf. existierende Dependencies ebenfalls blockieren musst. Beispiel:

    Code
    {
          "name": "jquery-migrate",
          "type": "script",
          "uri": "vendor/jquery-migrate/jquery-migrate.min.js",
          "dependencies": [
            "jquery"
          ],
          "package": "jquery-migrate",
          "version": "3.3.2"
        }

    wird kollabieren, da es eine Abhängigkeit "jquery" hat, das dadurch automatisch zuvor geladen wird. Das wird aber nicht mehr geladen, weil du es oben blockiert hast. jquery-migrate.min.js wird einen Fehler werfen., falls es denn irgendwer, irgendwo zu laden versucht.

    Natürlich kann man auch Plugins oder allgemein PHP-Zeilen nutzen, um Assets im WAM zu blockieren, zu "overriden" und vieles vieles mehr. Im eigenen Template halte ich aber die joomla.asset.json für den richtigen Weg.

  • Generell würde ich niemals Dateien des Core löschen.

    Vielleicht missverstanden? Meine Variante ist update-sicher. Aber natürlich sehe auch ich die Probleme, die man sich damit machen wird, wenn elementare Joomla-Core-Assets "deaktiviert" werden; core.js z.B.. Zumindest sollte man regelmäßig die Konsolen anwerfen und noch mal schauen, ob durch Erweiterungen oder Core-Änderungen keine größeren Probleme auftreten.

    Aber eine mod_languages.css und ähnliche auf beschriebenem Weg zu deaktivieren, weil man da eh Code in seiner CSS-Datei hat, ist auch bei mir häufiger Usus. Bei JS bin ich halt vorsichtiger und ist oftmals auch gar nicht so trivial, da man um Ecken denken muss. Aber so lernt man was ;) Auch die Dependencies sind eine hochinteressante Geschichte, wenn man mit seiner eigenen joomla.asset.json umzugehen weiß.

    Will nur motivieren ;)