Variablen in extra Datei schreiben

  • Joomla Version
    5.1.4
    PHP Version
    PHP 8.3.x
    Hoster
    Strato
    Link (URL) zur Seite mit dem Problem
    nicht öffentlich da nur zum testen

    Hallo Zusammen,

    Ich bastel gerade an einem Template bei dem ich in den Templateeinstellungen Farben definiere

    Diese Farben lasse ich dann via

    PHP
    $wa->addInlineStyle(':root {
      --primary: ' . $this->params->get('color-primary') . ';
      .....
    }');

    in der index.php ausgeben

    Das funktioniert auch wunderbar

    Jetzt zu meiner Frage

    Kann ich diese Ausgabe in eine extra Datei z.B. variablen.css oder variablen.php schreiben lassen?

    Hintergrund ist der das ich diese Farbvariablen auch gern in der editor.css nutzen möchte damit der Autor im Editor gleich die richtigen Farben sieht


    Vielen Dank im Voraus

    Gruß

    Marcel

  • Kann ich diese Ausgabe in eine extra Datei z.B. variablen.css ... schreiben lassen?

    Ja, das geht.

    Könntest z.B. die die gewünschten Styles in eine Variable $mycss packen und diese Variable dann in der index.php ausgeben und zusätzlich in eine Datei z.B.: /media/templates/site/deintemplate/css/myeditor.css schreiben...

    In Cassiopeia gibt es z.B. die Variable $fontStyles dort:

    github.com/joomla/joomla-cms/blob/5.1.4/templates/cassiopeia/index.php#L91

    die auch in der index.php zusammengesetzt und so ausgegeben wird.

    Ist es denn ein völlig selbst erstelltes Template oder veränderst du ein vorhandenes Template ?

  • Ist es denn ein völlig selbst erstelltes Template oder veränderst du ein vorhandenes Template ?

    Ja es ist komplett selbst erstellt

    die gewünschten Styles in eine Variable $mycss packen und diese Variable dann in der index.php ausgeben

    Ja so mach ich es gerade

    Ich würde es aber gern so haben

    zusätzlich in eine Datei z.B.: /media/templates/site/deintemplate/css/myeditor.css schreiben

    genau das ist die Frage wie ich das machen kann

  • Es gibt da mehrere Möglichkeiten:

    • Du könntest eine PHP Datei als CSS einbinden, die dann onthefly sich als CSS generiert und die Variable ausgibt (com_ajax + template helper)
    • Du könntest ein Plugin schreiben was beim Speichern der template Parameter die Datei schreibt
    • Du könntest in der Index.php checken ob die Datei existiert und aktuell ist und wenn nicht schreiben

    Finde keine der Ideen wirklich schick (außer eventuell das Plugin) da die Lösung die du eh schon hast wahrscheinlich die einfachste ist.

  • Würde die variablen als CSS variablen in der index.php als online style ausgeben. Dann kannst du in den CSS dateien die variablen [var()]verwenden.

    W3Schools.com
    W3Schools offers free online tutorials, references and exercises in all the major languages of the web. Covering popular subjects like HTML, CSS, JavaScript,…
    www.w3schools.com

    JoomGallery::friends ist aktuell noch auf der Suche nach Helfern für die JoomGallery 4 Entwicklung!

    Gesucht sind Leute für die PHP-Entwicklung, zum Testen, Übersetzen und Dokumentieren.

    Bei Interesse melde dich per PM oder Mail bei mir (Elfangor93).

  • Würde die variablen als CSS variablen in der index.php als online style ausgeben. Dann kannst du in den CSS dateien die variablen [var()]verwenden.

    Wäre eine elegante Lösung, geht aber wohl nicht weil das Beitragsinhaltsfeld im Beitrags-Editor in einem iframe ist und das gewünschte dann wohl nicht erscheint:

    ... damit der Autor im Editor gleich die richtigen Farben sieht...

  • Danke für eure Vorschläge

    Sieger66 hat recht

    Im Frontend ist das mit dem ausgeben in der index.php kein Problem das funktioniert auch sehr gut

    Mir geht es darum das der TinyMCE ja die editor.css nutzt und Diese die Variablen nicht kennt

    Somit sieht der Autor nicht die eigentlichen Farben wie sie im Frontend angezeigt werden fängt dann an an den Farben zu spielen und überschreibt ja dann damit die eigentlichen Farben

    Du könntest ein Plugin schreiben was beim Speichern der template Parameter die Datei schreibt

    hast du zufällig auch eine Idee wie ich das anstellen kann?


    Danke im Voraus

    Gruß

    Marcel

  • Somit sieht der Autor nicht die eigentlichen Farben wie sie im Frontend angezeigt werden fängt dann an an den Farben zu spielen und überschreibt ja dann damit die eigentlichen Farben

    Es gibt ja den Vorschau Button im Editor.

    Ich schule meine Autoren von Texten entsprechend, sodass sie wissen, dass der Beitrag im Editor etwas anders aussieht.

    JoomGallery::friends ist aktuell noch auf der Suche nach Helfern für die JoomGallery 4 Entwicklung!

    Gesucht sind Leute für die PHP-Entwicklung, zum Testen, Übersetzen und Dokumentieren.

    Bei Interesse melde dich per PM oder Mail bei mir (Elfangor93).

  • Alternativ könntest du das schreiben der gewünschten Datei z.B.auch nur bei angemeldetem Benutzer im Frontend oder in einem Override der Administrator-Template-Datei erledigen:

    /administrator/templates/atum/html/com_templates/style/edit.php

    oder in einem Child des Atum-Administrator-Template in der index.php z.B.:

    /administrator/templates/atum_myatum/index.php

    Dann würde das nicht im Frontend-Template erforderlich sein...

    Viele Wege führen nach Rom.