tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
0
ZUGRIFFE
364
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    NTDY NTDY ist offline Mitglied Gold
    Registriert seit
    Mar 2004
    Ort
    no-comment
    Beiträge
    136
    Ich habe eine Webseite, die ich mit mehreren Sub-Templates (in Dateiform) bestücken möchte.

    Die jpg-Zeichnung zeigt, wie das Endergebnis aussehen soll.
    1. Die Großbuchstaben A,B,...,Q sind Inhaltselemente
    2. Bezeichnungen wie co2(1), co2(2), green(1), blue(2), ... sind alles Namen für HTML-Template Dateien innerhalb der Datenbank
    3. Bezeichnungen wie g1, l1, l2, b1 sind die Platzhalter, die innerhalb der HTML-Template Datei reserviert sind, in die die Inhalte hinein sollen.
    Die DB-Struktur ist wie folgt:
    id - ID
    parentid - ID des Vaters / Mutter
    position - die Position des Inhalts von oben (ab 0) nach unten
    typ - Template, Inhalt
    platzhalter - steht nur bei Inhalten. Zeigt in welchem Platzhalter der Inhalt stehen soll
    titel - Bezeichner
    zusatz - hier steht der Pfad zur HTML-Template Datei

    Die zip-Datei enthält die derzeitige PHP-Datei, das SQL-Schema und einige Subtemplates

    Die baum.php zeigt bereits, wie das Resulat aussehen sollte. Es fügt also schon die Inhalte innerhalb der Template Datei ein (berücksichtigt aber nicht die Platzhalter)

    Die Funktionen sind wie folgt:
    • hole_template() // holt die Template Datei
    • finde_platzhalter() //findet die Platzhalter, in der Form {#...}
    • hole_inhalt() //holt den Inhalt des Inhaltselements
    Problem:
    Ich würde nun gern wissen wie ich die Inhalte in die entsprechenden Platzhalter der Subtemplates bekomme? Das sql_array ist ja bereits laut Anfrage nach parentid, platzhalter und position sortiert. Die Inhalte müssen nun in die Platzhalter der jeweiligen Template Datei. Hat jemand einen Lösungsansatz, da ich mit meinen Gedanken bereits verhakt bin.

    PHP-Code:
    <html>
    <head>
    <style>
    *{
        font-family:"Courier New", Courier, monospace;
        font-size:12px;
        color: #000;
        font-weight:bolder;
    }
    .CO1, .CO2, .CO3, .green1, .green2, .green3, .blue1, .blue2, .blue3, .light1, .red1, .red2, .red3, .content {
        padding: 10px;
        margin: 10px;
    }
    .CO1 {        background-color:#CCC;    }
    .CO2 {        background-color:#EEE;    }
    .CO3 {        background-color:#BBB;    }
    .green1 {    background-color:#009966;}
    .green2 {    background-color:#3C3;    }
    .blue1 {    background-color:#09F;    }
    .blue2 {    background-color:#66CCFF;}
    .blue3 {    background-color:#9CF;    }
    .light1 {    background-color:#FF0;    }
    .red1 {        background-color:#903;    }
    .red2 {        background-color:#990000;}
    .content {    background-color:#EEE;    width: 100px; border: 3px dotted #000; }
    </style>
    </head>

    <body>
    <?php
        $tpl_placeholder_val 

        
    $db_host 'localhost';
        
    $db_name 'baum';
        
    $db_user 'root';
        
    $db_password '';
         
    $connect mysql_connect($db_host,$db_user,$db_password) or die(mysql_error());
    mysql_select_db($db_name) or die(mysql_error());

    $query "SELECT * FROM baum ORDER BY parentid ASC, platzhalter ASC, position ASC;";
    $sql mysql_query($query) or die(mysql_error());


    while ((
    $row mysql_fetch_assoc($sql)) !== false) {
           
    $sql_array[$row['parentid']][$row['id']] = array('id'=>$row['id'],'parentid'=>$row['parentid'],$row);
    }

    $ausgabe function_neu_rec($sql_array,0);
    echo 
    $ausgabe;

    /* Neue Version */
    function function_neu_rec($array,$zaehler){
        
    $sammeln '';
        
    /**
         * Durchlaufe nun alle Child-Elemente von dem derzeitigen Parent 
         */
        
    foreach($array[$zaehler] as $c_key=>$c_val){
            
    /**
             * Es gibt noch Unterelemente von diesem Element, also Rekursion aufrufen
             */
            
    if($array[$zaehler][$c_key][0]['typ']=='template'){                
                
    $temp function_neu_rec($array,$c_key);
                
                
    /**
                * Hole den Inhalt der Template Datei
                */
                
    $hole_template hole_template($array[$zaehler][$c_key][0]);
                
    /**
                * Finde alle Platzhalter in der Template Datei
                * Bei den Inhalten steht der Platzhalter in die der Inhalt hinein soll
                * Anhand der Parent ID weiß der Inhalt, in welchem Template er sich befinden soll
                */
                
    $platzhalter_im_template finde_platzhalter($hole_template);
                
                
    //echo "<textarea>".$hole_template."\n".print_r($platzhalter_im_template)."</textarea>";
                
                
    $inhalte "<div class=\"".$array[$zaehler][$c_key][0]['titel']."\">".$temp."</div>";
                
    //$inhalte .= "Wrappe nun mit ".$array[$zaehler][$c_key][0]['titel'];
                
    $sammeln .= $inhalte;
            
    /**
             * Es gibt keine Unterelemente, da ich beim Inhalt angelangt bin
             */
            
    }else{
                
    $inhalte '<div class="content">'.$array[$zaehler][$c_key][0]['titel'].' ('.$array[$zaehler][$c_key][0]['platzhalter'].')</div>';
                
    $sammeln .= $inhalte;
            }
        } 
        return 
    $sammeln;
    }

    function 
    hole_inhalt($template){
        return 
    '<div class="content">'.$template['titel'].' ('.$template['platzhalter'].')</div>';
    }

    function 
    hole_template($template){
        return 
    file_get_contents($template['zusatz']);
    }

    function 
    finde_platzhalter($html_datei){
            
    $gefunden_array = array();
            
            
    preg_match_all('/{#(.*)}/',$html_datei,$gefunden);            
            foreach(
    $gefunden[1] as $gefunden_key=>$gefunden_val){
                
    $gefunden_array[] .= $gefunden_val;
            }    
            return 
    $gefunden_array;
    }

    ?>
    </body>
    </html>
    Miniaturansicht angehängter Grafiken Miniaturansicht angehängter Grafiken Rekursiv Platzhalter in Sub-Templates eines Webseite finden-suche.jpg  
    Angehängte Dateien Angehängte Dateien
     

Ähnliche Themen

  1. Anpassung eines CSS-Menü Templates
    Von ElGreco93 im Forum CSS
    Antworten: 8
    Letzter Beitrag: 29.01.10, 18:57
  2. mehrmalige Ausgabe eines templates
    Von blastermaster im Forum PHP
    Antworten: 7
    Letzter Beitrag: 30.09.07, 18:16
  3. Änderung eines Templates
    Von hannelorea im Forum Stellenangebote (entgeltlich)
    Antworten: 4
    Letzter Beitrag: 06.09.07, 20:42
  4. Platzhalter in Templates
    Von ratmanthebat im Forum PHP
    Antworten: 2
    Letzter Beitrag: 23.06.05, 17:40
  5. Webseite mit Templates
    Von boelkstoff im Forum HTML & XHTML
    Antworten: 1
    Letzter Beitrag: 08.03.04, 18:48

Stichworte