Veröffentlicht 24. Februar 200619 j Hallo, ich habe mir ein eigenen kleines Templatesystem geschrieben. Nur stehe ich jetzt irgendwie auf ne Schlauch! Ich möchte in der .tpl-Datei einen Bereich einblenden lassen, wenn eine Bedingung erfüllt wird. In etwa so: {if Login} Wird angezeigt wenn eingeloggt {/if} Nur mir fällt jetzt einfach nicht ein, wie ich den Teil wegkriege, wenn die Bedingung wahr bzw. unwahr ist. mfg
24. Februar 200619 j Und schon wieder einer: Stelle Deine Frage konkreter! Wir können und wollen nicht raten um welches System es sich bei Dir handelt. Außerdem: Was ist ein Templatesystem?
24. Februar 200619 j @tallman weg kriegst du es über eine Regular-Expression. Die Frage ist aber eher, wie du die Bedingung überhaupt erst abfragen willst.
24. Februar 200619 j Hm die Frage ist verständlich. Er hat sein eigenes System geschrieben und schwierigkeiten mit dem Parsen. Allerdings kann man da nicht wirklich helfen. Wenn dein Parse auf [if *] trifft muss er die folgenden Zeilen bis [/if] eh lesen. Dann prüfst du die Bedingung und schmeisst den gelesenen Teil entweder weg oder nicht. Das würde ich vermutlich vor dem echten Parsen des Templates tun, weshalb man solche Anweisungen in einigen Sprachen Präprozessoranweisungen nennt Also: - Template preprocessen. Ergebnis ist ein (neues) Template - Template in den Parser schieben. - Ergebnis rauswerfen.
24. Februar 200619 j Du brauchst erstmal ein Regex: /\{if (.*)\}(.*)\{/if\}/siU (kA ob der nun geht oder ob der so gut ist) [0] = Login [1] = Content, wenn Bedingung erfüllt ist Nun musst du in deinem Parser selbst noch definieren, was gemacht werden soll, wenn [0] = Login ist. Wenn nun [0] = Login ist, lässt du z.B. eine Session/ein Cookie o.ä. prüfen und gibst [1] nur aus, wenn die Session oder der Cookie richtig gesetzt sind. So unbedingt schwer ist es nicht, aber man muss bisschen nachdenken.
24. Februar 200619 j Ja, das trifft schon so in etwa den Kern meiner Wünsche *hoffe ich* Ich werde das mal austesten. Danke mfg
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.