Impressum · Kontakt · Hilfe
Besucher online · Mitglieder



Portal > Foren > PHP > PHP-Programmierung > Vererbung bei Templates
Antwort
 
Themen-Optionen
Alt 26.03.2006, 18:24   Nach oben    #1
Pain-maker
Neuer Benutzer
 
Registriert seit: 12.01.2006
Beiträge: 21
Standard Vererbung bei Templates

Hi @ all!
Ich würde gerne ein Vererbungssystem für meine Template-Klasse schreiben. Bsp:

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. Ich will also fehlende Templates aus entsprechend übergeordneten Ordner nutzen.

Meine Template-Klasse:
PHP-Code:
<?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);
    }

}

?>
Für jegliche Denkanstöße/Codeschnippsel/Links bin ich sehr dankbar

MFG Pain-maker

Geändert von Pain-maker (26.03.2006 um 18:27 Uhr).
Pain-maker ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 26.03.2006, 19:26   Nach oben    #2
Ben
Erfahrener Benutzer
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.800
Standard

Nun, Du müsstest ja im Prinzip rekursiv von innen nach außen gehen.

Die Bedingung für einen neuen Aufruf der Methode wäre dann der Rückgabewert false der Funktion file_exists().
Also wenn die Datei in "Ordner 2" nicht existiert, dann durchsuche "Ordner 1".

In der Datenbank würdest Du dann ja mit einer "parentID" oder mit "NestedSets" arbeiten (Diskussion).

Eine wirkliche Idee, wie man das kreativ löst habe ich jetzt gerade nicht, aber mir fehlt auch etwas die Konzentration.
Spiel da vielleicht mal was mit rum.

Grüße, Ben.
Ben ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 26.03.2006, 19:34   Nach oben    #3
Pain-maker
Neuer Benutzer
 
Registriert seit: 12.01.2006
Beiträge: 21
Standard

Okay das ist gut, nur ich brauche ja immer den aktuellen Template-Ordner und den Übergeordneten aus der DB.
Ist ein Template nicht vorhanden verschiebt sich das ja.
Wie könnt ich das lösen ohne dabei zich MySQL-Querys zu haben?

Schon mal danke!
Pain-maker ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 26.03.2006, 19:42   Nach oben    #4
Ben
Erfahrener Benutzer
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.800
Standard

Nun, Du gibst ja irgendwo den innersten Templateordner an, oder?
Also Du setzt ja irgendwie diesen Ordner, z.B.

PHP-Code:
<?php

    error_reporting
(E_ALL);

    
$t = new Template('ordner2');
    
$t->load('testfile');

?>
Dann setzt Du die Membervariable "current_tpl_dir" auf den übergebenen Wert ab da gehst Du dann "bergauf".
Den Weg findest Du, indem Du natürlich rekursiv SQL-Queries abfeuerst.

SQL Code:
  1. SELECT
  2.     daten
  3. FROM
  4.     template_dirs
  5. WHERE
  6.     template_dir = 'ordner_x'
Die WHERE-Klausel musst Du dann natürlich zusammenbauen.

Alles ohne Gewähr.
Grüße, Ben.
Ben ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 26.03.2006, 23:15   Nach oben    #5
Ben
Erfahrener Benutzer
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.800
Standard

Hallo,
ich wurde gerade von einem Mitglied auf diesen Thread hier hingewiesen:
http://www.php.de/forum/ftopic56066.html

Nichts für Ungut, aber bitte entscheide Dich für ein Forum. Crosspostings sind nicht so wirklich das Wahre. Du hast im verlinkten Thread ja einige weitere Informationen erhalten.

Ich danke Dir für Dein Verständnis.
Grüße, Ben.
Ben ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 28.03.2006, 15:32   Nach oben    #6
Pain-maker
Neuer Benutzer
 
Registriert seit: 12.01.2006
Beiträge: 21
Standard

Okay hat sich erledigt!
Ich hab's über nen Array und einer while-schlife gut lösen können!

Danke

Mfg Pain-maker
Pain-maker ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 28.03.2006, 15:37   Nach oben    #7
Ben
Erfahrener Benutzer
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.800
Standard

Hm, auch wenn es schon erledigt ist. Über ein Array?
Wie meinst Du das denn? Kann ich gerade gedanklich nicht nachvollziehen ..
Ben ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist Aus.
Trackbacks are An
Pingbacks are An
Refbacks are Aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Problem bei Verarbeitung von Templates (Eigene Klassen) dago PHP-Programmierung 21 31.08.2006 16:02
Templates - Was sie bieten sollten!? MrNiceGuy PHP-Programmierung 26 28.05.2006 22:14
Seite auf Templates umstellen? björn PHP-Programmierung 4 02.05.2006 21:37
[PHP] Ein einfaches Template-System MrNiceGuy Tutorials 0 09.10.2005 18:30
Templates benutzen Niedi PHP-Programmierung 8 12.09.2005 12:41


Alle Zeitangaben in WEZ +2. Es ist jetzt 06:15 Uhr.

Nach oben
Wir nutzen das Zend Framework, vBulletin (vBulletin v3.7.2, Copyright ©2000-2008, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.0.0) und vBSEO.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44