Javascript in php unter Joomla 5.2.1 und Helix Ultimate Template

  • Joomla Version
    5.2.1
    PHP Version
    PHP 8.2.x
    Hoster
    lokal

    Hallo Zusammen,

    da ich von javascript gar keine und von php nur limitierte Kenntnisse habe und von Joomla auch nur rudimentär Ahnung, habe ich mir eine Anwendung zur Verwaltung aus vielen Code-Schnipseln gebastelt. Das ganze ist so aufgebaut, dass die ganzen Seiten als htim/php-code in separaten dateien liegen und ich im Beitrag der Jommlaseite nur durch eine Zeile aufrufe:

    {source} <?php require_once(pad/datei.inc.php); ?> {/source}

    In dieser Datei kann ich nun mit php alles anstellen was ich will. Unter anderen habe ich nach dem erfolgreichen speichern eines Formulars folgenden Code um das entsprechende Fenster zu schließen:

    if (!$fehlerart) {echo "<script>window.close();</script>";}

    das ist so zu lesen: Wenn kein Fehler dann schließe das Fenster.

    den Schnipsel mit dem javascript-code habe ich im Internet gefunden. Da die Seite alle in php sind, hängen die Darstellung und die Inhalte nur noch vom "Eltern-System", was Joomla ist und der php-vVersion ab.

    In Joomla 4 hat das alles so funktioniert, ohne irgend etwas am Template, der index.php oder in der joomla Konfiguration anzupassen.

    In Joomla 5 geht das nicht mehr, die script-Zeile wird einfach ignoriert. Hat jemand eine Idee, an welchen Schrauben ich in Joomla drehen muss? Die php-Version hat sich nicht geändert.

    Danke für eure Hinweise

  • Das was du machst ist weder sinnvoll noch best practice. Wenn du wenig Ahnung von PHP kannst du dir mit solchen Skripten ganz schön Sicherheitslücken bauen.

    Warum nutzt du Joomla nicht wie vorgesehen? Um Formulare zu bauen, gibt es zig Erweiterungen.

    Ohne dein Code zu kennen oder die Seite untersuchen zu können, wird man hier schwer eine Lösung geben können.

  • Wurde in der funktionierenden Joomla4 Website auch schon das Helix Ultimate Template verwendet ?

    Ist in der Joomla5 Website die Joomla-Erweiterung Sourcerer installiert, korrekt konfiguriert und aktiviert ?

    extensions.joomla.org/extension/sourcerer/

    Ich nutze die Joomla-Erweiterung Sourcerer aber nicht...

    Alternativ geht es auch ohne Sourcerer siehe z.B.:

    ghsvs.de/programmierer-schnipsel/joomla/315-joomla-modul-override-fuer-einbinden-eigener-codes

    Im übrigen hat Viviana in #2 meiner Meinung nach auch völlig recht...

  • Hallo Zusammen,

    erstmal danke für eure Anregungen.

    Elwood, danke für den Hinweis auf das Einbinden von JS-Dateien in das Template!

    Sieger66, danke für die Hinweise zu Sourcerer. Sourcerer ist richtig installiert und funktioniert. Ich bekomme alle PHP-Scripte im Editor zum Laufen. Sourcerer unterstützt in der nicht-Pro-Version leider nicht das Einbinden von JS. Aus diesem Grund ist die Auslagerung in eine PHP-Datei nicht ganz unbegründet.

    @Vivana, auch dir Danke für den Kommentar. Hier möchte ich noch ein bisschen Hintergrund geben. Das Ganze ist ein selbstprogrammiertes Buchhaltungssystem, mit dem ich die Buchhaltung für 2 Unternehmen mache. Das habe ich vor 20 Jahren angefangen. Da hab ich nicht im Traum an Joomla gedacht. und habe das vollständig in PHP erstellt, und immer wenn ich etwas gebraucht habe, habe ich das einfach drangestrickt. Heute sind das 3,79GB Code. Das läuft auf einem NAS bei mir im Büro, ohne Anbindung ins Internet. deshalb kann ich nicht einfach drauf zugreifen lassen und habe auch keine Sorgen wegen eventueller Sicherheitslücken. Das Jetzt in Formulare in Joomla umzuschreiben, brauche ich wieder 20 Jahre. So lange werden die beiden Unternehmen nicht mehr existieren. Die Jommla-Templates sind schöner und schneller zu konfigurieren als tonnenweise PHP-Code anzupassen. So nutze ich den Visuellen Rahmen mit Menüs und Header und Footer aus Joomla und den Content in PHP.

    Meine Frage hier geht exakt um die gepostete Zeile. Andere Javasripte (komplexer Natur) für Diagramme auszugeben oder Löschnachfragen funktionieren einwandfrei. Nur diese einfache Thema das aktuelle Fenster zu schließen geht nicht, auch in der Version "self.close()" nicht.