PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   PHP Grundlagen (http://www.selfphp.de/forum/forumdisplay.php?f=12)
-   -   Smarty Template Wiederholung auf einer Seite (http://www.selfphp.de/forum/showthread.php?t=12950)

Agentmulder79 19.03.2006 20:55:57

Smarty Template Wiederholung auf einer Seite
 
Hallo, folgendes Problem:

Ich habe mit Smarty ein Template (piktogramm.tpl) erstellt. Nun soll es fünf Dateien (daten1.php, daten2.php, ... daten5.php) geben, welche mit den Inhalten für das Template versehen sind.
Beim Template handelt es sich um ein kleines Piktogramm, welches verschiedene Referenzdaten beinhalten soll.

Problem:
Ich möchte das Template auf einer Internetseite fünf mal anzeigen lassen.

<?php {include "daten1.php";}?>
<?php {include "daten2.php";}?>
<?php {include "daten3.php";}?>
<?php {include "daten4.php";}?>
<?php {include "daten5.php";}?>

Alle fünf php-Dateien verweisen auf das gleiche Smarty Template (piktogramm.tpl)

Doch leider wird immer nur der erste Datensatz angezeigt. Glaube das liegt daran, dass Smarty keine Wiederholungen des Templates zulässt.

Gibt es eine Möglichkeit, dies zu unterbinden, so dass alle fünf Datensätze gleichzeitig in das eine Template (welches dann fünfmal untereinander erscheinen soll) eingefügt werden.

Vielen DAnk für Eure Hilfe

Opendix 19.03.2006 22:30:42

AW: Smarty Template Wiederholung auf einer Seite
 
hä? wo steht den dieser code, den du da oben gepostet hast drin? :S

warum machst du nicht eine php seite welche du aufrufst, z.b. index.php, da bindest du die seiten daten1.php, daten2.php, ... ein und kannst dann ja 5 mal die display-funktion von smarty aufrufen...

Agentmulder79 19.03.2006 23:50:42

AW: Smarty Template Wiederholung auf einer Seite
 
Die include-Befehle stehen in der index.php.

in jeder der daten(x).php steht folgender code: (mit unterschiedlichen Inhalten für name und zusatz):

<?php
error_reporting(E_ALL);
define('SMARTY_DIR', 'Smarty/');
require(SMARTY_DIR.'Smarty.class.php');
$smarty = new Smarty;
$smarty->assign('name', 'Wohnhaus');
$smarty->assign('zusatz', 'Fam. Berger');
$smarty->assign('info', 'xxx');
$smarty->display('piktogramm.tpl');
?>

Somit rufe ich ja fünf mal die display Funktion auf, jedoch erscheint leider nur ein Template mit dem ersten Datensatz bzw. der daten1.php-Datei. Das Template soll aber ja fünf mal untereinander erscheinen mit jeweils unterschiedlichen Inhalten (auf einer Seite)

Opendix 20.03.2006 08:28:46

AW: Smarty Template Wiederholung auf einer Seite
 
mach folgenden code in die index.php:

PHP-Code:

error_reporting(E_ALL); 
define('SMARTY_DIR''Smarty/'); 
require(
SMARTY_DIR.'Smarty.class.php'); 
$smarty = new Smarty

p.s. benutze die php-tags des forums ;)

Agentmulder79 20.03.2006 12:52:47

AW: Smarty Template Wiederholung auf einer Seite
 
Wenn ich diesen Code in die index.php schreibe, werden die Templates gar nicht mehr angezeigt.

Hab den php-Code mit <?php ?> direkt an den Anfang der index.php Datei geschrieben, doch leider klappt es nicht.

Sniffer 20.03.2006 16:34:09

AW: Smarty Template Wiederholung auf einer Seite
 
Warum nutzt du nicht einfach die include Funktion von Smarty?

http://smarty.php.net/manual/de/lang...on.include.php

Agentmulder79 20.03.2006 23:31:04

AW: Smarty Template Wiederholung auf einer Seite
 
Bei dieser include Funktion kann ich aber keine php-Dateien einbetten, sondern lediglich mehrere Templates in ein bestehendes Template laden. Das Template soll aber aus der php-Datei raus aktiviert werden.

Vom Prinzip her eigentlich ganz einfach:
Zwei verschiedene php-Dateien werden per include in eine index-Datei geladen. Diese beiden php-Dateien laden ein und dasselbe Template, so dass dieses Template dann zweimal in der index-Datei mit unterschiedlichen Inhalten (aus den zwei php-Dateien) gefüllt werden soll.
ABER WIE FUNKTIONiERT DAS??? Bin voll verzweifelt...

Bisherigen Vorschläge brachten leider keine Lösung - leider (Vielen herzlichen Dank für eure großzügige Hilfe)

Opendix 21.03.2006 07:30:35

AW: Smarty Template Wiederholung auf einer Seite
 
hmm...
schau dir mal diesen link an:
http://smarty.php.net/manual/en/api.display.php

nun ist das bei deinem script ja genau das gleiche...
in der index.php erstelst du erst eine instanz der smarty-klasse
dann bindest du die erste datei ein, welche das template zum ersten mal ausgibt!
genauso machst dus mit den anderen 4 includes... das müsste eigentlich gehen...

zeig doch mal den kompletten code von der index.php und den kompletten eines includes!

Agentmulder79 21.03.2006 15:01:06

AW: Smarty Template Wiederholung auf einer Seite
 
...geht ja leider nicht so. Funktioniert irgendwie nicht

index.php beinhaltet:

PHP-Code:

<?php {include "daten1.php";}?>
<?php 
{include "daten2.php";}?>
<?php 
{include "daten3.php";}?>
<?php 
{include "daten4.php";}?>
<?php 
{include "daten5.php";}?>


eine daten(x).php Datei enthält:
PHP-Code:

<?php 
error_reporting
(E_ALL); 
define('SMARTY_DIR''Smarty/'); 
require(
SMARTY_DIR.'Smarty.class.php'); 
$smarty = new Smarty
$smarty->assign('name''Wohnhaus'); 
$smarty->assign('zusatz''Fam. Berger'); 
$smarty->assign('info''xxx'); 
$smarty->display('piktogramm.tpl');
?>

Die Inhalte sind dann in den jeweiligen daten(x).php Dateien natürlich unterschiedlich.
Die piktogramm.tpl enthält dann die entsprechenden Platzhalter - daran könnte es eigentlich nicht liegen, da es ja einmal richtig angezeigt bzw. ausgegeben wird.

Problem:
Das Template wird nur einmal in der index.php Datei angezeigt - und nicht fünfmal wie gewünscht.

Selbst wenn ich die Smarty-Befehle direkt in die index.php Datei fünfmal schreibe (ohne include) wird das Template nur einmal angezeigt.

Ich denke, dass Smarty eine voreingestellte Funktion besitzt, welche eine Wiederholung eines Templates (ob gewünscht oder nicht gewünscht) auf einer Internetseite einfach verhindert. Aber dies müsste man doch deaktivieren können, oder?

Opendix 21.03.2006 19:18:29

AW: Smarty Template Wiederholung auf einer Seite
 
ich weis ja nicht, was du machst aber bei mir funktioneirt folgendes script:

PHP-Code:


include('smarty/Smarty.class.php');
$smarty = new Smarty();

$smarty -> assign("test""test1");
$smarty -> display("test.tpl");
$smarty -> assign("test""test2");
$smarty -> display("test.tpl");
$smarty -> assign("test""test3");
$smarty -> display("test.tpl");
$smarty -> assign("test""test4");
$smarty -> display("test.tpl"); 

test.tpl wird 4 mal angezeigt wobei die variabel test immer durch den davor zugewiesenen string ersetzt wird...


Alle Zeitangaben in WEZ +2. Es ist jetzt 08:58:12 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.