View previous topic :: View next topic |
Author |
Message |
kid Smarty Rookie
Joined: 04 Jul 2004 Posts: 13
|
Posted: Sun Jul 04, 2004 5:24 pm Post subject: Template mit enthaltenen Template Blöcken |
|
|
Hallo,
ich hab noch nicht so den Einstieg zu Smarty gefunden.
Ich hab eine Produktseite mit 20 Produkten. Jedes Produkt wird als ein Block dargestellt. Der Block soll ein eigenes Template haben. Wie realisiere ich das, ohne jedesmal die Seite neu generieren zu lassen?
Ich hab mal gelesen am besten mit einer Funktion in Smarty selber schreiben ?!? - Gibbet dazu irgendwo ein HowTo oder sowas?
Also die Problematik müsste ja oft auftreten.
Viele Grüße,
Alexander |
|
Back to top |
|
kills Smarty Elite
Joined: 28 May 2004 Posts: 493
|
|
Back to top |
|
kid Smarty Rookie
Joined: 04 Jul 2004 Posts: 13
|
Posted: Mon Jul 05, 2004 6:38 pm Post subject: |
|
|
Hallo,
ne, die Schleife mein ich nicht. jetzt müsste ein Block je ein Template sein.
Also mal Pseudocode mässig:
Code: |
template Liste
solange i<20 zeige produkte an {
template produkt
zeige produkt(i)
template produkt ende
i++
}
template Liste ende |
Die Problematik sind die geschachtelten Templates, nicht die Schleife.
Oder cacht der das so trotzdem richtig? |
|
Back to top |
|
kid Smarty Rookie
Joined: 04 Jul 2004 Posts: 13
|
Posted: Mon Jul 05, 2004 6:40 pm Post subject: |
|
|
Also das Produkt sollte ein eigenes Template haben, weil das an vielen Stellen immer wieder so ausgegeben wird. Deshalb macht eine feste Programmierung in der Schleife in dem Fall keinen Sinn. |
|
Back to top |
|
messju Administrator
Joined: 16 Apr 2003 Posts: 3336 Location: Oldenburg, Germany
|
Posted: Mon Jul 05, 2004 7:39 pm Post subject: |
|
|
kid wrote: | Oder cacht der das so trotzdem richtig? |
ja tut "er".
Code: | {foreach from=$produkte item=produkt}{include file="produkt.tpl"}{/foreach} | (das gleiche template für verschiedene produkte)
oder
Code: | {foreach from=$produkte item=produkt}{include file=$produkt.template}{/foreach} | (verschiedene templates für verschiedene produkte) |
|
Back to top |
|
coach Smarty Regular
Joined: 03 Jun 2004 Posts: 65
|
Posted: Tue Jul 06, 2004 7:17 am Post subject: |
|
|
Moin,
Code: | {foreach from=$produkte key=produkt item=produkt_template}{include file=$produkt_template}{/foreach} |
(du überweist also z.B. aus einer DB den Typ des Templates einem Produk zu)
Falls du nun aber z.B. jeden Block separat cachen möchtest, dann kommst du evtl. um ein Plugin (siehe ein paar Postings weiter meinen Artikel) nicht herum.
Alternativ könntest du die Schleife im PHP-Script machen und z.B. 20 mal testen, ob das Produkt[$i] im Cache ist, bei Bedarf aus der DB holen, dann fetch() und alle Produkte zusammenfügen. Dies z.B. wieder in einem "Master"-Template, der quasi aus einem Array einfach nur HTML-Schnipsel holt (diese hast du vorher im PHP-Sript per fetch() geholft und in ein Array gepackt).
Coach |
|
Back to top |
|
messju Administrator
Joined: 16 Apr 2003 Posts: 3336 Location: Oldenburg, Germany
|
Posted: Tue Jul 06, 2004 7:59 am Post subject: |
|
|
coach wrote: | Alternativ könntest du die Schleife im PHP-Script machen und z.B. 20 mal testen, ob das Produkt[$i] im Cache ist, bei Bedarf aus der DB holen, dann fetch() und alle Produkte zusammenfügen. Dies z.B. wieder in einem "Master"-Template, der quasi aus einem Array einfach nur HTML-Schnipsel holt (diese hast du vorher im PHP-Sript per fetch() geholft und in ein Array gepackt). |
das klingt für mich unnötig kompliziert. bei 20 produkten würde ich die ganze seit cachen, fertig. wenn sich ein produkt ändert, wird der cache für diese seite gelöscht, fertig. |
|
Back to top |
|
kid Smarty Rookie
Joined: 04 Jul 2004 Posts: 13
|
Posted: Thu Jul 08, 2004 9:35 am Post subject: |
|
|
Sauberst, danke für die Infos.
Dann werd ich das mal so angehen. |
|
Back to top |
|
|