Author Topic: tmpl um statische variable erweitern  (Read 1054 times)

0 Members and 1 Guest are viewing this topic.

Pontifex

  • Guest
tmpl um statische variable erweitern
on: Tue, 06. March 2007 - 21:14:34
Hallo

Ich habe folgende Idee.
Ich habe ein Master-Template, und über die URL kann man sich die Content-Seite abrufen.
In der master.html gibt es diese Zeile zum einbinden:
Code: [Select]
{tmpl_include name={var:content}}
In dem Master-Template
Code: [Select]
$tmpl = new vlibTemplate(master.html); gibt es die Zeile
Code: [Select]
<title>{tmpl_var name=titel}</title>Nun soll der Titel aber für die einzelnen Seiten veränderbar sein. Da ich keine externe Datenbank habe, wöllte ich diesen Titel den Contentseiten mitteilen.
Also sowas wie eine Metainformation

content.tmpl
Code: [Select]
{tmpl_var name=titel value=Kund & Cafe}<p>Hier steht der tatsächliche Inhalt<p>
Hat jemand dafür einen Lösungsvorschlag.
Ich würde ja der Funktion "function _parseVar ($wholetag, $tag, $varname, $escape, $format, $namespace)"
gerne das beibrigen was ich wöllte, aber das ist echt kompliziert, wenn man sich mit der tmpl-Enginge so wenig auskennt.


Ich hoffe auf Hilfe.
Viele Grüße
Ponti

Offline ClausVB

  • Administrator
  • Hero Member
  • *****
  • Posts: 566
    • Homepage: clausvb.de
Re: tmpl um statische variable erweitern
Reply #1 on: Wed, 07. March 2007 - 10:21:59
Die Lösungen stehen unter
Navigation with vLIB
und
GET-Parameter mit TMPL_IF

Bei vielen Seiten muss die Logik natürlich in PHP über SWITCH-CASE realisiert werden und die Variable "titel" dann jeweils anders gesetzt werden.

Dieses kann man dann auch modularisieren und zur Not für jede Variable ein eigenes Template nehmen, wenn es zum Beispiel um verschiedene Sprachen geht. Eine einzelne Variable kann aber problemlos in modular_php_require_header.php (SWITCH-CASE) geändert werden, die dann mit "setVar()" übergeben wird. Ein Beispiel dazu.

Gruß
Claus

PS: Deine Mailadressen "Ponti at mailinator.com" und "Ponti at sofort-mail.de" erzeugen Fehlermeldungen in meinem Postfach.

Du hast folgender Bedingungen bei der Registrierung zugestimmt: "You have to use a part of your REAL NAME (e.g. John Doe = "JohnD" or "john.doe") for registration. You have to use a valid mail adress, which is similar to your account name ("[email protected]"). If you do not follow theses rules your account will be DELETED."

Solltest Du nicht innerhalb von 24 Stunden dieser Bedingung nachkommen UND eine reale Mail-Adresse angeben, wird Dein Account gelöscht.
Last Edit: Wed, 07. March 2007 - 10:28:26 by ClausVB

Pontifex

  • Guest
Re: tmpl um statische variable erweitern
Reply #2 on: Wed, 07. March 2007 - 14:53:24
Das trifft eigentlich nicht ganz zu.

Wenn du ein template benutz, und folgendes ist enthalten
Code: [Select]
{tmpl_var name=wissen value=p6}{tmpl_var name=wissen}so funktioniert genau das, was ich haben will.
Es wird p6 ausgegeben. (habe ich erst vor 30min herausgefunden)
Reihenfolge spielt keine Rolle
Code: [Select]
{tmpl_var name=wissen}{tmpl_var name=wissen value=p6}funktioniert auch.


Neues Beispiel:
master.html, enthält nun folgendes: {tmpl_var name=wissen}{tmpl_include name={var:content}}
in content
Code: [Select]
{tmpl_var name=wissen value=p6}Das Problem ist nun hierbei, dass die Variablen Seitenintern nur verarbeitet werden. Eine globale Variablenbehandlung wäre gut.

Nun weiß ich nicht, ob ich ein paar Einstellungen verschlafen habe, oder ob das vLibTempalte nicht kann.

Das php selbst die Anwendungslogik trägt ist klar. Wenn ich das aber mittels php lösen will, dann bräuchte ich z.B. eine XML Datei, in der alle Relationen stehen. includierte Seite -> Seitentitel
Das wäre mehr als lästig und unproduktiv.

Besten Dank
Ponti

Offline ClausVB

  • Administrator
  • Hero Member
  • *****
  • Posts: 566
    • Homepage: clausvb.de
Re: tmpl um statische variable erweitern
Reply #3 on: Wed, 07. March 2007 - 15:32:54
Ich habe keine Ahnung, was Du da machst, aber

Code: [Select]
{tmpl_var name=body_text value=gehtDasEcht}
funktioniert gar nicht. Wenn "body_text" mit

Code: [Select]
$tmpl->setvar(body_text, BODY: This is the message set using setvar());
gesetzt wird, wird auch
"BODY: This is the message set using setvar()"
ausgegeben, so wie es richtig ist.

Ich habe mein Beispiel des einfachen TMPL_INCLUDES (lokal) wie folgt abgeändert:

Code: [Select]
<?php
    $tmpl 
= new vlibTemplate(tmpl/include.htm);

    
$tmpl->setVar(inkludiereninclude_part.htm); // DIESE ZEILE IST NEU

    
$tmpl->setVar(normal_partinclude.htm (main template));
    
$tmpl->setVar(include_partinclude_part.htm (included template));
    
$tmpl->setVar(datedate("Y-m-d"));

    
$tmpl->pparse();
?>

Code: [Select]
<p>{tmpl_var name=date}</p>
<tmpl_include file={var:inkludieren}>

Ich habe die Templatevariable "date" jeweils zweimal in den Dateien untergebracht. Das Datum ("date") wird viermal ausgegeben. Es ist also egal, wo die Variable untergebracht ist ... sie wird ausgegeben, wenn sie gesetzt ist.

Gruß
Claus