Hallo,
ich habe folgende funktionen:
function gettemplate($template)
{
return str_replace(""","\"",implode("",file($template)));
}
// wird mit eval() augerufen >>> eval(„dooutput(“".gettemplate(„layout“)."");");
Hallo,
ich habe folgende funktionen:
function gettemplate($template)
{
return str_replace(""","\"",implode("",file($template)));
}
// wird mit eval() augerufen >>> eval(„dooutput(“".gettemplate(„layout“)."");");
Aus Datenbank, zu Array, konvertieren via Template
Hallo,
du könntest z.B. die Menüstruktur aus deiner Datenbank lesen
und sie in einem multidimensionalen Array packen.
Dieser Array sollte dann zur Weiterverarbeitung, deine exakte
Menüstruktur enthalten.
Also z.B.:
$arrVar['Menuepunkt1'] = 'ZielUrl';
$arrVar['Menuepunkt1']['Untermenue1'] = 'ZielUrl';
$arrVar['Menuepunkt1']['Untermenue2'] = 'ZielUrl';
$arrVar['Menuepunkt1']['Untermenue3'] = 'ZielUrl';
$arrVar['Menuepunkt2'] = 'ZielUrl';
$arrVar['Menuepunkt3']['Untermenue1'] = 'ZielUrl';
$arrVar['Menuepunkt3']['Untermenue2'] = 'ZielUrl';
$arrVar['Menuepunkt3']['Untermenue2']['WeiteresUntermenue1'] = 'ZielUrl';
Damit die einzelnen Menüebenen korrekt angezeigt werden, muss du
in deinem Template für jede dieser Ebenen in deinem Menü einen
entsprechenden Style, bzw. HTML Schnipsel anlegen.
Template Datei Bsp.:
[{MENUEPUNKT\_NAME}](%257BMENUEPUNKT_URL%257D)
[{MENUEPUNKT\_NAME}](%257BMENUEPUNKT_URL%257D)
[{MENUEPUNKT\_NAME}](%257BMENUEPUNKT_URL%257D)
In diesem Beispiel ist der einzige Unterschied, die Einrückung unter Verwendung von expliziten Leer-Charaktern „& nbsp;“. Man kann natürlich auch DIV-Tags, oder Tabellenzeilen (TR-Tags) für die Formatierung der einzelnen Zeilen verwenden und diese mit entsprechenden Style-Classes versehen.
Nun müssen die einzelnen Teile deines Array zusammengebaut werden, außerdem musst du ja noch wissen, in welcher Menükategorie der Website-Besucher gerade befindet, damit du in deinem Array nur die entsprechende Menüstruktur für die Ausgabe heraus filterst. (Methode 1)
Alternativ kannst du anstatt bei dem sogenannten Rendering des Templates, also dem Zusammenfügen der einzelnen Schnipsel, auch direkt bei dem Auslesen der Array-Struktur aus der Datenbank, nur die relevanten Menüebenen auslesen. (Methode 2)
Sinnvoller ist die Methode 2, da du hier bei größeren Seiten, nur das aus der Datenbank ausliest, was du wirklich brauchst, um die aktuell vom Benutzer angeforderte Menüstruktur anzuzeigen.
Bei Methode 1 benötigst du also eine Funktion, die dir das
Array zusammenbaut, für die aktuelle Ebene im Menü z.B.:
function buildMenueFromArray($requestedMenueCategory),
{
[...]
}
, sowie eine Funktion, die dir das gesamte Menü als Array aus der
Datenbank holt.
Bei Methode 2 ist eine Funktion notwendig, welche dir den passenden
Array aus der Datenbank holt:
function getMenueStructure($requestedMenueCategory)
{
[...]
}
, sowie eine Funktion, die dir diesen Array über deinen Template-
Parser konvertiert zu dem fertigen HTML-Menü.
Die Vorgehensweise ist denke ich klar. Du wirst aber z.B. für die
einzelnen „Programmier-Probleme“, die auf dich zukommen, bei der
Umsetzung dieser beiden Ansätze, viele Lösungsansätze auf den Seiten
http://www.php.net/ , bzw. http://www.php3.de/ (schneller deutscher
Mirror von php.net bei der Schlund + Partner AG), sowie auf http://www.zend.com/ finden.
Kleiner Tip noch am Schluss. Schau dir mal XML und XSL an. Du könntest
hier das gesamte Problem mit einem einzelnen Template lösen und den Array, den du aus der Datenbank ausgelesen hast, direkt über einen XSL-Parser umsetzen. PHP bietet viele mächtige Werkzeuge für die Verarbeitung vom XML/XSL. In der heutigen Entwicklung arbeitet man sowieso fast nur noch mit diesen beiden Technologien, weil diese, egal von welchem Backend, sie es JSP, PHP, ASP, oder was auch immer verwendet werden können und der Entwicklungsprozess, auf Grund des schlankeren Codes in der Backend-Applikation, diesen erheblich verkürzt.
Hoffe ich konnte dir helfen.