Uncaught ReferenceError: jQuery is not defined

  • Hallo Leute,


    ich kriege in meiner Console immer die Fehlermeldung "Uncaught ReferenceError: jQuery is not defined".

    Mein JQuery möchte so auch nicht funktionieren. auf meiner lokalen Testumgebung läuft es ohne Probleme.

    Habt Ihr Ideen, was ich ändern könnte???


    Webseite: familienzentrum-kaufungen.de


    Einstellung Wert

    PHP erstellt für Linux info 3.0 #1337 SMP Tue Jan 01 00:00:00 CEST 2000 all GNU/Linux
    Database Type mysql
    Datenbankversion 5.5.60-0+deb7u1-log
    Datenbankzeichensatz utf8_general_ci
    Database Connection Collation utf8mb4_general_ci
    PHP-Version 7.2.10
    Webserver Apache
    PHP-Interface für den Webserver cgi-fcgi
    Joomla!-Version Joomla! 3.8.13 Stable [ Amani ] 9-October-2018 14:00 GMT
    Joomla!-Plattform-Version Joomla Platform 13.1.0 Stable [ Curiosity ] 24-Apr-2013 00:00 GMT
    Browsererkennung Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.67 Safari/537.36

    Viele Grüße

    Julian

  • Hast du denn das hier schon gemacht, geprüft?

    Joomla lädt JQuery nicht


    Die Sache ist, dass niemand wissen kann, wer oder was oder warum dir deine JQueries falsch lädt. An falscher Stelle und doppelt und zu spät.


    Du schreibst dort ja auch, dass du das Template selbst erstellt hast. Es ist einfach so, dass man bestimmte Dinge in Joomla einfach streng beachten muss. Dazu gehört eben auch JQuery so laden, wie dort beschrieben und nicht von einem CDN.

  • Dazu gehört eben auch JQuery so laden, wie dort beschrieben und nicht von einem CDN.

    Das ist richtig. Vor allem der FF-Developer blockt jQuery über CDN.
    Habe eben ein JS-Problem gefixt in dem ich jQuery (selbe Version wie CDN) lokal geladen ließ.

  • Meiner Meinung nach habe ich es so eingebunden, aber ich vlt. habe ich die Tipps auch nicht verstanden.


    Das ist meine index.php. Wenn dort etwas falsch ist wäre es schön wenn dazu konkrete Änderungen gibt


    Gruß

    Julian

  • Zeile 84 scheint was falsch zu machen.

    PHP
            <?php echo $scripts; ?>

    Weil dort wird das Joomla-JQuery eingebaut. Ich kann nur vermuten, dass die dahintersteckende Logik die dort eingesetzten Dateien aus dem Document-Head entfernt, so dass sie später nicht mehr im echten <head> zur Verfügung stehen, also bei Rendern der Zeile

    Code
    <jdoc:include type="head" />


    Ich verstehe den Ansatz, diese Sachen vor dem schließenden </body> zu laden. Das ist aber in Joomla fast nicht machbar, da wie gesagt, jede Menge anderer, abhängiger Kram dann doch zu früh im HEAD geladen wird. Bspw. bei dir der Wurm


    Der Kram kann irgendwo aus Joomla und/oder Erweiterungen kommen. Man hat da kaum Einfluss drauf ohne weitere recht komplex zu programmierende, eigene Plugins. EDIT: Oder Fieselei und später immer Auge drauf, da man nie wissen kann, wie sauber andere Erweiterungem Ihre Ladungen abwickeln.


    Weiters gibt es halt noch diesen viel zu späten Block in Zeile 57 im Seitenquelltext (via Firefox-Browser):

    Code
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js">

    der später Konflikte machen kann, selbst, wenn Joomla sein JQuery dann richtig lädt.


    Vielleicht lädt das irgendein Modul oder Plugin? Wo man ja gelegentlich JQuery-Ladung aktivieren kann. oder dein Template selbst in einem magischen Script?


    Wenn du auf 3.3.1 wert lägst, musst du Joomla via Template-Overrides für JQuery "austricksen", die dann aber ebenfalls über Zeile

    JHtml::_('jquery.framework');

    geladen werden, damit keine doppelten Ladungen.

  • Es ist mir eigentlich egal welche JQuery Version geladen ist. Auf meinem Lokalem Apache Server ist JQuery auch geladen wenn ich kein weiteres Skript einbinde. also einfach nur JHtml::_('jquery.framework');


    Auf dem Webserver wird ohne eine Anbindung allerdings der else Teil ausgeführt und somit ist JQuery ja nicht geladen

    Code
    <script>
                if (typeof jQuery != 'undefined') {
                // jQuery is loaded => print the version
                 console.log("JQUERY: "+jQuery.fn.jquery);
                }
                else
                {
                   console.log("JQUERY nicht geladen");
                }
            </script>

    Das bedeutet ja ich habe irgendwo einen Fehler

    PHP
    <?php echo $scripts; ?>

    War so schon in meinem Blanko Template
    Ich hatte absolut keine Ahnung von Joomla und probiere mich jetzt immer mehr reinzufuchsen und

    scheitere dann weil es auf lokal und extern nicht gleich funktioniert

  • Inhalt der logic.php

    Von hier -> https://pixelstun.de/blog/joomla/joomla-blank-template/

    bzw. aus dem Repository auf GitHub

  • bzw. aus dem Repository auf GitHub

    Ich find da nix, was deiner logic.php entspricht.


    Aus Zeitmangel bei mir:

    Installier dir mal Plugin System - jQuery Easy. Vielleicht hilft's.


    und aktiviere im Reiter JQuery

    - JQuery

    - Version: 2 x Joomla Framework.


    Unter "Zusätzliche Modifikationen"

    - Ersetzen ohne Konflikt: Ja

    - Hinzufügen wenn fehlend: Ja

    - jQuery "No Conflict" Code entfernen: Ja

    - Füge jQuery "No Conflict" Code hinzu: Ja

    - "Document Ready" korrigieren: Ja


    In deiner logic.php Ein Gatterzwichen # vor Zeilen 83 und 84 deines obigen Codes.

    Sowie Zeile 87.


    In der index.php Gatterzeichen # vor Zeile

    echo minimize( ob_get_clean() );


    Wenn du später mal die Seite minifizieren willst, dann nimm das JCH-Plugin. Da gibt es eine Option für HTML minifizieren.