0251 / 590 837 15
info@a-coding-project.de
;

Farbeinstellungen speichern und auslesen

Code & Blog Logo

Code & Blog Logo

Gestern ging es um die Farben des Standard-Themes. Diese sollen nun in der settings-Tabelle gespeichert werden, so das der User diese Farben im Admin-Bereich verändern kann. Außerdem können so andere Skins auf diese Farben zurückgreifen.

Die Eigenschaften beginnen alle mit „skin“. Danach kommt die Position der Farbe. Bei unseren Farben sieht der Insert-String so aus:

INSERT INTO `cms_settings` ( `property` , `value` )
VALUES (
'skinbgcolor', 'adadad'
), (
'skinforecolor', '525252'
),(
'skinhighlight1', '7cad00'
), (
'skinhighlight2', 'b3fa00'
);

Der Zugriff auf die Farben erfolgt wieder über die Klasses sys. Sie benötig dazu folgende Funktion:

function getColor($id){
    return "#".getSetting("skin".$id);
 }

Hier wird einfach die Position ($id) an die Funktion übergeben. Dann wird die Farbe mit der Präfix skin aus der Setting-Tabelle geladen. Mit einem # am Anfang wird das Ganze dann zurückgegeben.

Die Verwendung der Farben läuft zum Testen erst einmal direkt in der index.php des Skins (system/skins/default). Später soll diese in eine separate Datei kommen, um die Ladezeit zu verringern.

Das ist der neue Code der index.php. Hier werden einfach die Farben ins CSS reingeschrieben:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml/" xml:lang="de">
  <head>
    <?PHP
      sys::includeHeader();
    ?>
    <style>
      body{
        background-color: <?PHP echo sys::getColor("bgcolor"); ?>;
        color: <?PHP echo sys::getColor("forecolor"); ?>;
      }
      a{
        color: <?PHP echo sys::getColor("highlight1"); ?>;
      }
      a:visted{
        color: <?PHP echo sys::getColor("highlight2"); ?>;
      }
    </style>
  </head>
  <body>
    <div id="breadcrump">
      <?PHP
        sys::displayBreadcrump(" -&gt; ","breadcrump","bc");
      ?>
    </div>
    <?PHP
      sys::includeContent();
      sys::displayGlobalMenu("<ul>","</ul>","<li>","</li>","globalmenu");
      sys::displayLocalMenu("<ul>","</ul>","<li>","</li>","localmenu");
    ?>
  </body>
</html>

Das Design sieht zwar jetzt noch nicht wirklich schön aus, aber die Farben sind schonmal zu sehen. Schaut’s euch an: (Seite kann sich in der Zwischenzeit geändert haben)

http://cms.stevieswebsite.de/testseite.htm

Dies ist ein Beitrag aus der Aktion Code & Blog, in der hier ein eigenes CMS erstellt wird.

Kommentare

Ferid schrieb am 23.03.2010:

Hallo, erstmal ein Riesen Lob an dein Tutorial, auf sowas hab ich schon länger gewartet. Jetzt zu meinem anliegen: Du hast ja deine Style in das Template Dynamisch Reingepackt so das deine Skin datei schnell sehr Groß sein könnte. http://www.webmasterpro.de/coding/article/php-in-css-dss-dynamic-style-sheet.html Unter diesem Link findet man eine Möglichkeit eine Dynamische CSS Datei zu erzeugen und sie dann zu Importieren. Könnte auch sein das ich du das in einem Weiteren Tutorial beseitigt oder anderes gelöst hast, aber ich bin erst bei diesem Punkt und das ist mir aufgefallen. Schöne Grüße

Stefan Wienströer schrieb am 23.03.2010:

Hi, erstmal willkommen im Tutorial. In einem späteren Beitrag haben wir die CSS-Sachen auch schon ausgelagert. Allerdings ist es bei uns noch nicht so schön aufgeteilt. Werd mir das mal im Hinterkopf behalten.

Flotze schrieb am 17.12.2010:

Warum haben die Farben in der SQL andere Namen als beim aufrufen im skin?? Also zum Beispiel skinbgcolor und bgcolor??

Stefan Wienströer schrieb am 17.12.2010:

skin soll in der Settings-Tabelle beschreiben, dass diese Einstellung für die Skins ist. Um den Aufruf im Skin selbst so klein wie möglich zu halten, habe ich es dort entfernt.

Sven schrieb am 15.08.2011:

Hi, vorweg: Klasse Tutorial, alles super beschrieben man kommt gut mit. Zu meinem Problem: Habe bis jetzt alles so gemacht wie beschrieben hat auch alles wunderbar funktioniert. Nur leider klappt jetzt etwas nicht.. Wenn die die testseite.htm aufrufe wird sie mir wie immer angeeigt aber alles ohne farbe... Weiß leider nicht was ich falsch gemacht haben könnte.. Grüße

Stefan Wienströer schrieb am 16.08.2011:

Hi, hast du mal im Html-Quelltext nachgesehen, ob dort die Farbwerte zu sehen sind? Gruß Stefan