Autoclicker
Den eigenen Autoclicker schreiben!
Trashtalk
Der Platz für das, was keinen interessiert
Es geht weiter
Endlich gibts Neues!
Alte News
Sie sind in: Home >Entwicklung >PPWizard >Rekursion mit PPW

Beispiel: Rekursion mit PPWizard

Auf dieser Seite gibt es eine Newsseite. Diese wird automatisch generiert, zusammen mit der Zusammenfassung auf jeder anderen Seite (unter dem Menü). Hier beschreibe ich kurz, wie ich diese realisiert habe.
Die Einträge auf der eigentlichen Newsseite werden mittels einem Makro hinzugefügt. Gleichzeitig wird die Zusammenfassung auch daraus generiert.
Ein Eintrag wird beispielsweise so hinzugefügt:
<$addnews Title="Ein neuer Eintrag"
Text="Dies ist ein Test, der zum Testen dient">
Das Makro $addnews wird also mit zei Parametern aufgerufen, dem Titel und dem zugehörigen Text. Daraus die Einträge in der Newsseite zu generieren funktioniert so:
#(
#define newsadd
Title: {$title=''}<br />
{$text=''}
<hr>
#)
So wird jeder Eintrag hinzugefügt.
Daraus lässt sich aber nicht direkt eine Zusammenfassung generieren. Wenn man die Zusammenfassung genauso generieren würde, hätte man alle Newseinträge auf allen Seiten. Eine Lösung für dieses Problem besteht darin, immer nur eine bestimmte Anzahl der neusten Einträge anzuzeigen.
Ich habe das Problem dadurch gelöst, dass ich zwei $addnews Makros benutze. Das eine erzeugt die eigentliche Seite, das andere die Zusammenfassung. Beide in verschiedenen Dateien untergebracht.
Das Makro für die Zusammenfassung sieht in etwas so aus:
#define newscount 0
#(
#define newsadd
#evaluate+ newscount <$newscount>+1
#evaluate ^news[newscount]^ \
^'{$title=! !}<br />{$text=! !}'^
#define+ newscont <$newsconthandler '3'>
#)
Dieses Macro wird immer aufgerufen, sobald eine neue Seite erzeugt wird.
Zur Funktionsweise: In $news[newscount] wird der fertige Text gespeichert. Mit [newscount] wird auf die in $newscount enthaltenen Zahl zugegriffen. Es werden also die Macros $news1, $news2 und so weiter definiert.
Anschließend wird $newscont neu definiert. An dieser Stelle wird ein weiteres Makro aufgerufen. Es heißt $newsconthandler. Die 3 gibt an, dass die drei neusten Newseinträge in der Zusammenfassung angezeigt werden sollen. Das Makro sieht so aus:
#define newssubcount 0
#(
#define newsconthandler
#evaluate+ newssubcount <$newssubcount>+1
#ifdef news[newssubcount]
#if [<$newssubcount> <= {$#1}]
<$news[newssubcount]><$newsconthandler '{$#1}'>
#endif
#endif
#)
Dieses Makro ruft sich nun maximal drei mal selbst auf. Dabei wird $newssubcount jedes mal um eins erhöht und, solange die Zahl kleiner oder gleich 3 ist. Die 3 als Maximum wird wieder übergeben.
Gleichzeitig wird immer ein Newseintrag ($news[newssubcount]) zur Rückgabe hinzugefügt.

Ergebnisse

Diese Anwendungsbeispiel ist vielleicht nicht optimal geeignet, diese Fähigkeit von PPWizard darzustellen, da das Problem auch auf andere Weisen gelöst hätte werden können. Auch ist dieses Verfahren nicht sehr schnell. Es ist vermutlich effizienter, wenn man es anders löst.
Auf den Gedanken, Rekursion in PPWizard zu testen, bin ich gekommen, als ich das Menü durck ein dynamisches Makro ersetzt habe. Das Menü auf meiner Seite erstell sich dem Namen der Seite und ist so sehr einfach einzusetzen.

Valid XHTML 1.0!Valid CSS!
Quelle: ppw_recur.it
Ausgangsdatei: ppw_recur.de.html
Erzeugt: 2 Aug 2006 21:44:50
Zuletzt geändert: Mon Jan 9 2006 at 5:16:08pm