Parameter für Farbe in Hexadezimalcode in CSS-Datei einbinden

  • Hallo,


    ich bin grade dabei ein neues Template zu entwickeln.
    Allerdings stehe ich nun vor folgendem Problem:


    ich möchte, dass der Admin über das Backend in den Template Einstellungen zum Beispiel die Hintergrund Farbe ändern kann.
    Ich möchte allerdings, dass die Farbe als Hexadezimal-Code eingegeben werden soll.


    --> Frage 1: Was soll ich beim erstellen des fields bei type eintragen?
    "text" oder gibt es da was extra für Farben ?
    -->Frage 2: wie kann ich nun in der CSS Fatei die Farbe ändern. PHP kann ich da ja leider nicht einfach so aufrufen... Gibt es da einen Trick ?



    Danke schon mal im Voraus.

  • Hi,
    also Text wäre in dem Fall schon richtig.
    Über ein Javascript Regex kannst du das Feld dann so beschränken das man nur Hexadeximale Werte eingeben kann:
    http://stackoverflow.com/questions/19292038/how-to-restrict-a-textbox-only-to-enter-hexadecimal-value
    Hier könntest du auch ein eigenen Fieldtypen deklarieren:https://docs.joomla.org/Creating_a_custom_form_field_type


    Ansonsten gibt es noch das Feld »color« welches einen Colorpicker aufruft:https://docs.joomla.org/Color_form_field_type


    Um nun den Wert des Feldes zu verarbeiten kannst du am einfachsten einfach das CSS als <style> im head zu deklarieren und dort das PHP aufrufen.Die andere Möglichkeit wäre eine PHP-Datei über einen geänderten header als CSS auszuliefern.

    PHP
    <?php
    header('Content-type: text/css');
    ?>


    Viele Grüße

  • Danke erstmal.
    Allerdings würde ich mein CSS gerne ausgelagert behalten ...


    Allerdings verstehe ich nicht was du damit meintest:

    Zitat

    Um nun den Wert des Feldes zu verarbeiten kannst du am einfachsten einfach das CSS als <style> im head zu deklarieren und dort das PHP aufrufen.Die andere Möglichkeit wäre eine PHP-Datei über einen geänderten header als CSS auszuliefern.


    Kannst du mir das nochmal genauer erklären ?

  • Das habe ich verstanden, allerdings habe ich nicht verstanden was @DirtyWorld mit:


    Zitat

    Die andere Möglichkeit wäre eine PHP-Datei über einen geänderten header als CSS auszuliefern.


    meint.


    Danke


    edit:


    Hat das was mit DSS (Dynamic Style Sheets) zu tun ?

  • Du gibst das CSS per echo aus und bindest den Befehl header('Content-type: text/css'); in die PHP-Datei ein. Die PHP-Datei ladest du dann wie andere CSS-Dateien auch per AddStyleSheet in der index.php deines Templates. Schau dir die Standard-Templates an, um zu verstehen wie du auf Template-Params zugreifst.

  • So habe ichs jetzt gemacht:

    PHP
    <?php 
      $farbe = $this->params->get('farbe1');
    ?>
    
    
    <div id="test"><style> div#test{ color: <?php echo $farbe; ?>}</style>
    Hallo Zusammen
    </div>



    Bei der andern Möglichkeit braucht man im Prinzip gar keine .css datei mehr. richtig ?

  • Ja.


    Ich würde noch einen Default-Wert vorgeben. Denn wenn man das Template neu installiert wird sonst nicht vor der Farb-Zuweisung und speichern des Template-Stils als Farbe ausgegeben werden.


    $farbe = $this->params->get('farbe1','#ccc');

  • Danke. ich hab den Default Wert schon in der .xml datei angegeben. Läuft dann doch auf das gleiche hinaus oder ?


    Was würde ein erfahrender Template Designer empfehlen.
    - Alles CSS in eine PHP Datei?
    oder doch lieber
    - Inline (<style></style>) formatierung ?


    Auf jeden Fall mal vielen Dank