template parser+content

xlanhackerx

Mitglied
Hallöchen liebe Leute ich habe heute angefangen meine Website mit dem diesem
PHP Templates
Parser auszurüsten. Es funktioniert eigentlich auch alles super, jedoch scheint es mit der Contentvergabe zu stimmen.

Hier meine Index.php

PHP:
<?php
function get_content()
	 {
if(empty($_GET["action"]))
			{
				$_GET["action"] = "start";
			}
			$root = "content/".$_GET["action"].".php";
			if(file_exists($root))
			{
				include($root);
			}
			else
			{
				echo("<center>404 Not Found</center><center>
<h1>Not Found</h1>
<p>Hier exestiert wohl die eigegebene Seite nicht.</p></center>");			
				}
	 }
	 $content = get_content();
	 
	 // Datenbankverbindung aufbauen
$connectionid  = mysql_connect ("localhost", "XXX", "XXX"); 
if (!mysql_select_db ("XXX", $connectionid)) 
{ 
  die ("Keine Verbindung zur Datenbank"); 
} 
	 
	 // TEMPLATE PARSER FÜR DIE TEMPLATES.
function gettemplate($template,$endung="htm")
{
$templatefolder = "templates";
return str_replace("\"","\\\"",implode("",file($templatefolder."/".$template.".".$endung)));
}
function dooutput($template) {
echo $template;
}

//jetzt der Aufruf, wo die Templates geholt wird und die Platzhalter ersetzt werden.
eval ("\$navigation_right .= \"".gettemplate("nav_rechts")."\";");
eval ("\$navigation_left .= \"".gettemplate("nav_links")."\";");
eval ("\$site_kopf .= \"".gettemplate("site_kopf")."\";");
eval ("\$site_fuss .= \"".gettemplate("site_fuss")."\";");
eval ("\$site_content .= \"".gettemplate("content")."\";");


// SQL Abfrage ob Seitenstatus 1 oder 0 wobei 0 die offlineseite entspricht.

$sql = "SELECT * from site_config ";
$result = mysql_query($sql) OR die(mysql_error());
if(mysql_num_rows($result)) {
	   while( $row = mysql_fetch_assoc($result) ) {
    $row = array_map('htmlspecialchars', $row);
	 if ($row["site_status"] == "1" )
     {
     eval("dooutput(\"".gettemplate("site")."\");");
     }
     if ($row["site_status"] == "0" )
     {
      eval("dooutput(\"".gettemplate("site_offline")."\");");
	  }
}
	  }
?>

Ich möchte jetzt nicht noch die ganzen Templates auflisten aber ich erkäre kurz was die site.htm macht. sie listet das ganze auf in site_kopf, site_content, site_fuss.
In der site_content sind 3 nebeneinanderliegende variablen liegen, navigation_links, content, navigation_rechts. Ich möchte in die $content die einzelnen bereiche haben.. allerdings bekomm ich das ganze immer über der ganzen seite anstatt in dem dafür vorgesehenen bereich haben.. Vielleicht hat jemand ne andere Idee für die Contentfunktion

Mfg. Oliver
 
Hmm ich habe mal ne kleinere Verbesserung vorgenommen, nun sind alles funktionen in ner extra php liegen welche includet wird. Desweiteren habe ich mir mal den Code vom "phpkit" angeschaut und ich war echt verblüfft, das system nutzt den gleichen template parser wie aus dem Tutorial beschrieben, ist aber natürlich nur etwas verändert ;-) Nun bin ich auch noch schlauer geworden was das ganze mit dem Content an der passenden Stelle einfügen auf sich hat. Man setzt einfach in der Datei welche "includet" werden soll, z.B. start.php welche dann per index.php?action=start aufgerufen wird am ende
PHP:
eval ("\$content .= \"".gettemplate("start")."\";");
ein.Zur Erläuterung: $content ist die Variable welche als Platzhalter im Haupttemplate eingesetzt wurde. Also wird genau an der Stelle dann die "includete" datei erscheinen.
Trotzdem hab ich immernoch ein kleines Problem.
Ich möchte das login mit index.php?=login realisieren,das soll heißen, sobald mit GET aus einem Loginformular die entsprechenden "Daten" gefüttert wurden, soll das loginscript in der index aufgerufen werden. Das gleiche dann später mit index.php?=logout.
Vielleicht hat ja jemand ne Idee wie man das ganze machen könnte !!

Mfg. Oliver
 
Hallöchen allerseits. Ich hab mal wieder ne veränderung vorgenommen was den contentlademechanismus betrifft.
Mein alter Code war dieser:
PHP:
function get_content()
     {
if(empty($_GET["action"]))
            {
                $_GET["action"] = "start";
            }
            $root = "content/".$_GET["action"].".php";
            if(file_exists($root))
            {
                include($root);
            }
            else
            {
                echo("<center>404 Not Found</center><center>
<h1>Not Found</h1>
<p>Hier exestiert wohl die eigegebene Seite nicht.</p></center>");            
                }
     }
Allerdings hat das nie hingehauen mit dem Content an der richtigen Stelle.
Nun habe ich dieses System verwendet:
PHP:
// Contentfunktion zum laden der Inhalte.

$dateien = array(); //Erstellt einen neuen Array $dateien
$dateien['start'] = "content/start.php"; //für jede Section ein neue Variable
$dateien['userlist'] = "content/userlist.php";  //usw.
$dateien['userinfo'] = "content/userinfo.php";
$dateien['profil'] = "content/profil.php";  
$dateien['suche'] = "content/suche.php"; 
$dateien['register'] = "content/register.php"; 
$dateien['guestbook'] = "content/guestbook.php"; 


if(isset($_GET['action']) AND isset($dateien[$_GET['action']]))
{
  if(!file_exists($dateien[$_GET['action']])) echo "Die Datei ist nicht vorhanden.";

 include $dateien[$_GET['action']]; 
}
else
{
  include $dateien['start']; 
}

Nun eine andere Frage die aber zu dem gleichem Thema gehört.
Ich habe ja in den Templates rechts und links navigationen liegen, d.h. es sollen noch welche hin. Die Variablen stehen bereits in den Templates ( $navigation_left, $navigation_right). Ich möchte jetzt "Navboxen" erstellen bei denen dann alles mit dem phpcode steht, sowie auf die dazugehörigen Templates verwiesen wird. Wie genau könnte man so ein System aufbauen, bzw. Wie könnte ich generell ne Navigation aufbauen die meine oben genannten Variablen nutzt

Hoffe ich habe mich nicht zu verwirrend ausgedrückt !!

Mfg. Oliver
 

Neue Beiträge

Zurück