"We are back" « oc.at

Templates mit php

jives 17.04.2002 - 16:55 6010 30
Posts

jives

And the science gets done
Avatar
Registered: Sep 2001
Location: Baden
Posts: 3548
Hoi :)

Ich schaffs einfach net, Templates in php einzubinden. Ich möchte ein Template machen, dass z.B beim Login ein Template aufgerufen wird, mit html UND ein paar php-variablen.
Also zb: Thx $user, du wurdest eingeloggt.
Das ganze halt noch mit html formatiert.

Weiß jemand wie das geht?

orpheus

in a nutshell
Avatar
Registered: Mar 2002
Location: Klagenfurt
Posts: 532
Zitat von KaZaa
Hoi :)

Ich schaffs einfach net, Templates in php einzubinden. Ich möchte ein Template machen, dass z.B beim Login ein Template aufgerufen wird, mit html UND ein paar php-variablen.
Also zb: Thx $user, du wurdest eingeloggt.
Das ganze halt noch mit html formatiert.

Weiß jemand wie das geht?

post mal das was du schon hast, ohne genauere angaben kann ich dir schwer helfen... oder sag mir genau WAS du brauchst...

jives

And the science gets done
Avatar
Registered: Sep 2001
Location: Baden
Posts: 3548
Habe tu ich nix, weil ich net weiß wie ich das machen soll.
Sagen wir ich hab ein Formular, bei dem ich mit Username einlogge, dann wird die nächste Seite aufgerufen, die ist reiner php code. Und mit diesem Code will ich dann am Ende ein Template ausgeben (ich denk eine funktion is am besten), in dem nur normales HTML steht. Also zB:

<table cellspacing="0" width="75%" align="center">
<tr><td>
<font size="3" face="Arial">Hello $user!</font>
</td></tr>
</table>

Nur dass er bei der Ausgabe nicht $user ausgeben soll, sondern den Inhalt der Variable $user.

Mah, des is dumm zum erklären, ich versuch mal was zu proggen, damit du siehst was i mein ;)

noledge

CWNE #540
Avatar
Registered: Apr 2001
Location: ::1
Posts: 6838
hm... i versteh ned ganz was du meinst...

echo "hello $user"; :confused:

jives

And the science gets done
Avatar
Registered: Sep 2001
Location: Baden
Posts: 3548
Schon, nur müsste ich da die ganze Tabelle auch mit echo ausgeben, was dann wieder eher Pfusch is als sauberes coding und schwerer bearbeitbar. Aber ich möchte in einer eigenen Template-Datei den HTML-Code auslagern, und dann bei Bedarf aufrufen. Nur so, dass auch php-Variablen in dem Code richtig intepretiert werden.

noledge

CWNE #540
Avatar
Registered: Apr 2001
Location: ::1
Posts: 6838
Zitat von KaZaa
Schon, nur müsste ich da die ganze Tabelle auch mit echo ausgeben

:confused:

wieso musst die ganze tabelle mit echo ausgeben?!

Code: PHP
<?php

// dein php code

?>

<table>

//deine tabelle
<?php echo "hello $user"; ?>
//weiter in deiner tabelle

</table>

Philipp

Here to stay
Registered: Jul 2001
Location: Wien
Posts: 2002
Code: PHP
echo <<<template
<table cellspacing="0" width="75%" align="center"> 
<tr><td> 
<font size="3" face="Arial">Hello $user!</font> 
</td></tr> 
</table> 
template;

Tex

got r00t?
Avatar
Registered: Aug 2000
Location: salzburg
Posts: 1844
es gibt auch spezielle template-klassen, mit denen du den php-code komplett vom design trennen kannst. ich mach das meistens mit it[x]

jives

And the science gets done
Avatar
Registered: Sep 2001
Location: Baden
Posts: 3548
@noli:
Ok, so gehts auch :) Aber ich hab zB. eine Tabelle mit 5 Spalten und 10 Zeilen, da wird das <?php ?>

1. Lästig
2. Unübersichtlich
3. möcht ich Dateien mit REINEM php :)


@Phillip
Hmm, das check ich net ganz, was macht dein Code?


@All
Mal sehen ob ich die Erklärung besser hinbekomm ;)

Ich weiß das es sinnfrei is, aber als Beispiel ists zu gebrauchen:

1. Formular:
Code:
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body bgcolor="#FFFFFF" text="#000000">
<form name="form1" method="post" action="test.php">
  <input type="text" name="user">
  <input type="submit" name="Submit" value="Submit">
</form>
</body>
</html>


2. test.php: Soll jetzt den Inhalt von test.htm ausgeben, mit reinem PHP. Am besten wäre eine Funktion.


3. test.htm
Code:
<html>
<head>
<title>Test 1-2-3</title>
</head>

<body>

<table border="1" width="50%" align="center" bdrcolor="blue">
<tr><td>
<font face="Arial" size="2">Hello $user!</font>
</tr></td>
<table>

</body>
</html>

Thx 4 helping me :)

bernhard

Little Overclocker
Registered: Feb 2001
Location: NÖ
Posts: 51
Im Sinne besserer Trennung von code und template ist folgende Erweiterung von noledges Vorschlag empfehlenswert. Wenn Du die Schnittstelle genau spezifizierst, wird das template damit auch für Dritte ohne besondere Programmierkenntnisse relativ leicht wart- und an besondere Bedürfnisse/Vorlieben anpaßbar, sofern es sich um ein halbwegs überschaubares Projekt handelt (Gästebuch, kleines Forum etc.).

login.php:
<?
  $user=verify(login,pass); // Pseudocode; damit "was dasteht".
  include("template.php");
?>

template.php:
<html>
  <body>
    Hallo <? print($user); ?>!
  </body>
</html>

Die extension von template.php ist prinzipiell egal, solange der filetyp von PHP geparst wird.

jives

And the science gets done
Avatar
Registered: Sep 2001
Location: Baden
Posts: 3548
Ich weiß das man es auch so lösen kann, aber ich mag die Methode net :) Mir ists anders lieber, schon allein von der besseren Editierbarkeit der Templates her.

Tex

got r00t?
Avatar
Registered: Aug 2000
Location: salzburg
Posts: 1844
deshalb auch mein vorschlag mit der eigenen templateklasse!

da kannst du dann zb ein template in der form schreiben:


<table>
<tr>
<td>
Hello {USER}!
</td>
</tr>
</table>

in der php-datei gibst du dann nur an, welchen wert {USER} erhalten soll.

jives

And the science gets done
Avatar
Registered: Sep 2001
Location: Baden
Posts: 3548
Und wie geb ich das Template dann aus?

Tex

got r00t?
Avatar
Registered: Aug 2000
Location: salzburg
Posts: 1844
du schreibst eine php-datei, die liest eine html-datei (das template) ein und füllt die einzelnen werte, so wie du es willst! ich such schnell ein beispiel, vielleicht ist es dir dann klarer.

Tex

got r00t?
Avatar
Registered: Aug 2000
Location: salzburg
Posts: 1844
Code: PHP
<? 

// IT Templatesystem einbinden
include "IT.php";
 
// Instanz der Templateklasse erzeugen, Pfad zu den Templates angeben
$tpl = new IntegratedTemplate("templates/");

// Dokumentvorlage laden - lädt templates/index.html
$tpl->loadTemplateFile("index.html");
 
// Ersetzungen vornehmen
$tpl->setVariable("TITLE", "Online-Shop");

// Seite ausgeben  
$tpl->show();
?>

ist ein kurzes beispiel zu "integrated templates"... es gibt natürlich noch viel mehr möglichkeiten.
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz