Author Topic: PHP code in einem geparstem Template  (Read 9093 times)

0 Members and 1 Guest are viewing this topic.

Elron

  • Guest
PHP code in einem geparstem Template
on: Sat, 24. July 2004 - 17:24:58
@All
habe das ein problem !
ich möchte in einem template php code verwenden !

z.B.

<?php
$test = "defautl.htm";
echo "<tmpl_include file='$test'>";
?>

wenn ich es dann parse und mir den html code anschauen steht das dort drin!

<?php (('defautl.htm'), 1); ?>

anscheinend ist es nicht erlaubt PHP tags zu verwenden ...
es gib ja die vlipini datei in der man bestimmt was einstellen kann !

vorab danke

Gruß
Elron

Offline ClausVB

  • Administrator
  • Hero Member
  • *****
  • Posts: 566
    • Homepage: clausvb.de
PHP code in einem geparstem Template
Reply #1 on: Sat, 24. July 2004 - 19:46:01
In einem Template PHP inkludieren: <TMPL_PHPINCLUDE name='filename.php'>

Ich habe <TMPL_PHPINCLUDE ...> noch nie benutzt. Anwendung auf eigene Gefahr. :-)

Gruß
Claus

Elron

  • Guest
PHP code in einem geparstem Template
Reply #2 on: Sun, 25. July 2004 - 02:42:06
danke für deine hilfe hat funtioniert!
hast du schon mal ein template in einer variabke abgelegt
und dir varibake mit vlib geparst?

z.b.

<?php

$handle = fopen ("tmpl/default.htm", "r");
while (!feof($handle)) {
   $buffer = fgets($handle);

$addr .= str_replace ( "[kontent]", "<tmpl_include file='$filename'> ", $buffer);

}
fclose ($handle);

?>

und dann irendwie so
$tmpl = new vlibTemplate('$addr');

anstall so
$tmpl = new vlibTemplate('tmpl/index.htm');

das problem ist das die function "new vlibTemplate()"
eine datei erwartet!

haste da vieleich auch eine antwort auf lager ?

Vorab danke

Elron

Offline ClausVB

  • Administrator
  • Hero Member
  • *****
  • Posts: 566
    • Homepage: clausvb.de
PHP code in einem geparstem Template
Reply #3 on: Sun, 25. July 2004 - 12:22:06
Hi Elron!

Versuch mal ohne Rechtschreibfehler und einfach zu posten. Ich vestehe nämlich nur Bahnhof.
Wenn Du meine professionelle Hilfe erwartest, erwarte ich, dass Du dafür professionell postest.

Siehe
Sich Mühe geben und seine Hausaufgaben machen. Zitat: "Bereite Deine Frage vor. Denke sie gut durch. Hastig geschriebene Fragen erhalten hastige Antworten, wenn überhaupt welche."

Du willst erst selbst eine Datei aufmachen und die dann als Template verwenden???

Am besten Du schreibst eine Lösung ohne Templates, postest sie den  Regeln entsprechend und dann sage ich Dir, ob sich das mit vLIB umsetzen lässt oder nicht.

Gruß
Claus

Elron

  • Guest
PHP code in einem geparstem Template
Reply #4 on: Sun, 25. July 2004 - 12:51:44
@@@

sorry ich war super müde und kam nicht klar !

also noch mal
ich möchte einfach ein master template haben worauf ich mich immer beziehen kann !

z.B.
ich definiere einen kontent bereich in meinem template mit dem tag
[Kontent]..

Jetzt will ich bevor das template geparst wird die string ändern !
das heisst aber auch das ich das template in eine variable packen sollte
was ja auch kein problem ist !

jetzt muss es aber so ablaufen das vlib auch variablen parst und nicht nur xxx.htm verstehst was ich meine ?

hintergrund der sache ich das ich auf arbeit mit c# programmiere und wir ein microsoft templating system haben .net (aspx)...
ich finde die lösung in diesem sysem einfach nur geil das sich alles auf ein master template bezieht !

haste du vieleicht einen ansatz?

Gruß
Elron und sorry wegen den tippfehler habe echt nicht drauf geachtet !

Offline ClausVB

  • Administrator
  • Hero Member
  • *****
  • Posts: 566
    • Homepage: clausvb.de
PHP code in einem geparstem Template
Reply #5 on: Sun, 25. July 2004 - 13:58:09
Ich verstehe immer noch nicht genau, worauf Du hinaus möchtest, aber den Ansatz verstehe ich.

Ich habe nur 2 Posts gefunden, die sich mit ähnlichen Problemen beschäftigen:
/forum/index.php/topic,174
/forum/index.php/topic,251

Kannst Du nicht ein Beispiel machen:

Ich habe ein Template:

<html>
{tmpl_var name='kontent_mit_vlib'}
{tmpl_var name='[KONTENT]'}
...

Die 'kontent_mit_vlib' wird über "tmpl->setVar" ganz normal geparst, die andere soll ... (einfaches Beispiel bitte ... nichts mit "fopen", etc.)

Wenn Dir die beiden anderen Posts nicht weiterhelfen, dann habe ich die üble Befürchtung, dass vLIB Deinen Wunsch nicht realisieren kann.

Gruß
Claus

Klasse OOP

  • Guest
PHP code in einem geparstem Template
Reply #6 on: Sun, 25. July 2004 - 14:02:01
@ClausVB
sorry wenn ich dich so nerve aber weisst welche fuction in der klasse
class vlibTemplate zuständig ist um per regulären ausdrücken tags zu filter ?

könnte man sie nicht erweiter um mein problem zu lösen ?

Ich möchte ja nur das bevor das template geparst wird ein tag in einen anderen umgeschrieben wird !

z.B.
CODE:

$addr .= str_replace ( "[kontent]", "<tmpl_include file='$filename'> ", $buffer);

[kontent] soll hiermit <tmpl_include file='$filename'> ersetzt werden
somit ist gegeben das man nur ein template braucht und nicht mehrere für
andere seiten!

ich lege eine dir an !
erstelle eine default.php

in der steht
<?
$filename = "default.htm";
require 'parsmasterini.php';
 ?>

in der parsmasterini.php steht der ganze templating kram drin!
uind hiermit <tmpl_include file='$filename'>

$filename == default.htm

steht dann der kontent drin!

das heisst wir haben dann dynamischen kontent...

verstehst was ich meine ?
das ist nähmlich .net konzept

Gruß
Elron

Offline ClausVB

  • Administrator
  • Hero Member
  • *****
  • Posts: 566
    • Homepage: clausvb.de
PHP code in einem geparstem Template
Reply #7 on: Sun, 25. July 2004 - 14:08:15
Hast Du das getestet?

/forum/index.php/topic,174

[Edit]
Hinweis, es ist mit vLIB nicht möglich Template gesteuert zu arbeiten. Ein Template kann kein Skript ansteuern nur umgekehrt.

Dein Master-Template würde ich also in ein Master-PHP-Skript umwandeln, dass dann mit "if ... else" oder "switch" die verschiedenen PHP-Skripte+Template inkludet.

So kanst Du Dir modular alles zusammenbauen.
[/Edit]

Offline ClausVB

  • Administrator
  • Hero Member
  • *****
  • Posts: 566
    • Homepage: clausvb.de
PHP code in einem geparstem Template
Reply #8 on: Sun, 25. July 2004 - 14:10:02
Quote
welche fuction in der klasse 
class vlibTemplate zuständig ist um per regulären ausdrücken tags zu filter ?
Nein, keine Ahnung, aber der SourceCode ist ziemlich übersichtlich, schau einfach mal rein. :wink:

PS: Noch mal, versuch ordentlich zu posten. Du vergisst schon wieder Wörter. Das macht es schwer Deine Posts zu lesen. Bitte benutze die "Preview" Funktion.

Guest

  • Guest
PHP code in einem geparstem Template
Reply #9 on: Sun, 25. July 2004 - 14:13:08
Wo kann ich mich denn hier anmelden bitte ?
damit ich mein post "edit" kann ?`

Gruß
Elron

Offline ClausVB

  • Administrator
  • Hero Member
  • *****
  • Posts: 566
    • Homepage: clausvb.de
PHP code in einem geparstem Template
Reply #10 on: Sun, 25. July 2004 - 14:15:04
*Claus einen Hammer holt und Elron kräftig eins überbrät, weil er so faul ist*

Das steht in den FAQs, aber es ist auch ein EINZELNER Punkt in der Menüführung oben. Er heißt *oh wunder* "Register"

Hier, damit Du ihn nicht suchen musst:

Registrierstelle (powered beim CVB-Suchdienst)

Und teste zuerst:
"include" filenames from dbase
oder sag mir, warum es damit nicht geht.
Last Edit: Wed, 21. February 2007 - 14:52:26 by ClausVB

Elron

  • Guest
PHP code in einem geparstem Template
Reply #11 on: Sun, 25. July 2004 - 14:57:50
kann ich dir sagen warum ich mir das nicht genauer anschaue!
weil es eine schei... lösung ist!

gut habe es fast geschaft also in zeile
889 in der vlibtemplate.php

wird das template gecacht du kannst es dann nach belieben änder
z.B.

$data = str_replace ( "[kontent]", "hier kommt der eintrag", $data);

fertig fast gelöst nun weiss ich noch nicht wie ich eine variable in die klasse einbaue!!

Gruß
Elron

Offline ClausVB

  • Administrator
  • Hero Member
  • *****
  • Posts: 566
    • Homepage: clausvb.de
PHP code in einem geparstem Template
Reply #12 on: Sun, 25. July 2004 - 16:00:28
Der dort dargestellte reguläre Ausdruck ist sehr kompliziert (@Kelvin: You're a genius!), aber ich glaube, dass

Zeile 893, 903, 913:
$regex.=        's*=s*';

dann die Konstanten enthalten. Da musst Du dann ansetzen.

Viel Spaß!
Claus

Guest

  • Guest
PHP code in einem geparstem Template
Reply #13 on: Mon, 26. July 2004 - 00:26:32
ja habe es ja schon geschafft !
es funktioniert 100%
mein problem ist , wie kann ich eine variable die ausserhalb der klasse definiert ist in der class bzw. function nutzen ?

muss ich da vorher ein func schreiben in der klasse?

beispiel:

test.php wird geöffnet!
in der datei steht drin
<?
$test ="test";
include "../index.php" // hier ist die datei die ein template parsen soll!
bla bla bla
---- hier wird ja dann in der datei die vlibtemplate.php inkludiert!
die vlibtemplate.php hat ausserhalb der klasse ein "echo $test;" was ja auch super klappt aber schreibe ich sie in die klasse bzw. function dann funktioniert das ganze nicht mehr.

ist ja eigentlich auch klar aber ich weiss nicht wie ich eine variable von ausserhalb in der klasse ausführen bzw. nutzen kann

Parse template
?>
ist ja alles OOP programmiert und da habe ich noch nicht so die erfahrungen wie in c#..

haste da für mich vieleicht einen ansatz oder sogar die lösung auf hand ?

Gruß
Elron

Offline ClausVB

  • Administrator
  • Hero Member
  • *****
  • Posts: 566
    • Homepage: clausvb.de
PHP code in einem geparstem Template
Reply #14 on: Mon, 26. July 2004 - 12:00:49
Übergib der Methode doch einfach einen zusätzlichen Parameter mit der Variable.

Vielleicht funktioniert auch ein:
global $test;
in der Methode.

PHP-Fragen sind hier allerdings Off-Topic, deswegen solltest Du sie in einem PHP-Forum stellen.
Last Edit: Wed, 21. February 2007 - 14:53:13 by ClausVB