[PHP+MySQL] Design-Klasse mit Vererbungen realisieren

Pain-maker

Mitglied
Hi @ all!

Hab mal wieder eine etwas allgemeine Frage:
Ich würe gerne eine Design-Klasse in meine Template-Klasse einbinden, welche das Design aus der DB ausliest (es sollte nicht nur reiner CSS-Code, sondern auch an bestimmte Felder gerichteter Code sein. Sowas wie z.B. im wbb) und dabei auch über Vererbung von Bilder, CSS-Feldern und Templates verfügt.
Nun hatte ich mir da mal was gecodet, allerdings konnte das nur bedingt vererben, war groß und langsam.
Ich wollte jetzt einfach mal fragen (da ich über Google nicht fündig wurde), ob's irgendwo dafür Code-Schnippsel/Anregungen/Ideen gibt oder ob ihr mir welche liefern könnt.

Bin für jeden Hilfe dankbar :)

In diesem Sinne
Mfg Pain-maker
 
Nun ich suche Ansätze um ein Design für mein Script zu haben was zum einen an bestimmte Felder angebunden ist, welche über ein Script festlegbar sind und in meinen Templates für bestimmte Objekte genutzt werden
Bsp:
SMALLFONT: 10px
MEDIUMFONT: 15px
LARGEFONT: 20px
TABLEA: #000000
TABLEB: #FFFFFF

und zum Anderen auch weitere Möglichkeiten zulässt wie CSS
Bsp:
BODY {
FONT-WEIGHT: bold;
}

Das soll ich einer DB stehen und jedes Design hat eine ID zugeordnet.
Zudem ist dort Bilder- und Templatepfad sowie das Übergeordnete Design angegeben.
Es soll nun das Design ausgelesen, die entsprechenden Template-Vars durch die Design-Vars ersetzt werden und zugleich soll dabei eine Vererbung stattfinden, falls eine Design-Var/Bild/Template nicht gefunden werden.

Bsp:
<tr bgcolor="{tablea}"> -- Ersetzen --> <tr bgcolor="#000000">
(Falls {tablea} nicht definiert ist den Wert des übergeordneten Design nutzen)
Das selbe gilt auch für Bilder/Templates.

Ich suche nun Ansätze wie ich das gut und einfach lösen kann.

Ich hoffe es ist nun klarer geworden!

Danke :)
Mfg Pain-maker
 
Mein Vorschlag: Leg lieber ein Verzeichnis namens „themes“ oder ähnlich an, in dem sich die entsprechenden Dateien (Templates, Grafiken, Stylesheet-Dateien) befinden. Dazu kannst du dann natürlich auch ein Theme-Editor entwickeln.
 
Mehr oder weniger hab ich das ja auch!
Aber ich hätte gern ein Vererbungsprinzip (Mit unendlicher Vererbung) und wüsste gern wie ich das gut realisieren kann.

Danke :)
 
In wie fern? Ich möchte nur Vererbung für meine Templates/Bilder/CSS realisieren.
Mir würde schon ein Denkanstoss für Template-Vererbung für den Anfang reichen.

Danke :)
 
Gut okay beschränke ich es auf Templates.

Code:
01 templates (20/20 Templates)
 |
 +-- 02 templates/test1 (13/20 Templates)
      |
      +-- 03 templates/test2 (4/20 Templates)
Der Template-Ordner "test2" wird benutzt. In ihm sind 4 Templates enthalten. Die anderen Templates sollen aus dem übergeordneten Template-Ordner "test1" genommen werden. Da dort allerdings auch nicht alle Templates enthalten sind, werden die fehlenden wiederum aus dem übergeordnetem Template-Ordner "templates" genommen, der in dem Fall auch der Standard-Ordner ist.
Die Ordner sind in einer DB "templatefolders".

So eine Struktur die praktisch bis ins unendliche gehen kann würde ich nun gerne realisieren.

Meine Template-Klasse:
PHP:
<?php

class template {

	protected $template_dir = "templates/";		// Template-Ordner
	protected $tpl_extension = "tpl";			  // Template-Endung
	protected $template_file = "";				 // Kompletter Pfad zum Template-Ordner
	protected $template_name = "";				 // Template-Dateiname

	protected function load($file) {
		$this->template_name = $file;
		$this->template_file = $this->template_dir.$file;
		if(@!$this->template = file_get_contents($this->template_file)) {
			echo "<p align=\"center\" style=\"padding:0px; margin:0px;\"><span class=\"error\">Das Template \"".$this->template_dir.$file."\" konnte nicht geladen werden!</span></p>";
			return false;
		} else {
			return true;
		}
	}

	public function out($template) {
		$this->load($template.".".$this->tpl_extension);
		return str_replace("\"","\\\"",$this->template);
	}

}

?>

Ich hoffe ihr könnt mir jetzt vielleicht eher helfen.
Danke für Hilfen :)

Mfg Pain-maker
 
Kein Plan ob es dir hilft (weil ich noch nich ganz durch das Prob. durchgestiegen bin):

Schritt 1: Deine vorhandenen Templates usw in entsprechender Variable speichern ($tablea = "foo"; )

Schritt 2: Mit RegEx-Pattern deine ganzen {tablea} usw raussuchen und in einer Variablen ($var) speichern

Schritt 3: Über isset($$var) gucken ob gewünschtes Template existiert, wenn nicht auf nächst höheres Zugreifen.

Damit dein Skript weis was das nächst höhere ist solltest du in SQL einen Stammbaum erstellen und die dazu nötigen PHP-Funktionen

mögl. SQL-Felder: ID; template_name; parent_ID

Ich hoffe es hilft bei dem was du suchst.
 
Zurück