Templates und DIV Container
-
Guten Abend,
Da mein Topic nicht sonderlich aussagekräftig ist, möchte ich mal eben mein Problem ein bisschen näher erläutern. Letztendlich arbeite ich an einer CMS Geschichte, das soll soweit auch nicht das Problem sein. Für eine schöne und saubere Strukturierung seitens des Betrachters habe ich mich für DIV-Container entschieden, da ich sowieso keine Lust habe mich mit diesem Tabellenlayouten zu befassen. Nun habe ich insgesamt vier DIV Container, einer dient als Banner, Homepagelogo etc, dazu kommt auf der linken und rechten Seite ein Menü und in der Mitte der eigentliche Inhalt.
Ich versuch das Layout mal so zu veranschaulichen:
___
|[]|Da ich nun auch mit Templates arbeite, muss ich mich wirklich fragen wie man folgendes realisieren kann.
Sollte es sich um ein Besucher der Webseite handeln, wird rechts nur ein Login Bereich angezeigt. Hat sich jedoch ein Benutzer erfolgreich angemeldet, erscheinen im Menü rechts einige Links, je nach Authentifizierung. Wie kann ich das über Templates realisieren, ohne das ich wirklich HTML in den PHP Code bringe? Geht das letztendlich überhaupt. Ich komm da wirklich nicht weiter, wahrscheinlich einfach dumm.
Gruß FreewayCola
-
Du brauchst halt einen Switch in deiner Template-Engine, so dass diese ein Template der Form
[IF LOGGED ON]Hier die Links[ENDIF]
oder ähnlich verarbeiten kann. Die Syntax kommt einer richtigen Skritpsprache dann allerdings schon sehr nahe; einer der Gründe, aus denen ich Template-Engines nicht mag.
-
Danke Rexy,
ich weis genau was du meinst. Es ist einfach nur eine Art Ersatz das Template, kurz gesagt ein "Widerspruch", sofern man es umfangreich nutzen möchte.
Somit bleibt nun mein Dokument auch nicht wirklich sauber von PHP bzw. Smarty Code hmpf.
Dann bleib ich bei meinem Format:
require 'header.php'
(sessions, daten html-head bereich, so wie banner und menü container.)... dann
<div id=content>inhalt</div>
require 'footer.php';
Nochmal danke
-
Guck dir mal die Smarty Templateengine an. Ich war zuerst auch skeptisch,
da man Logik mit Ausgabe vermischt, aber in der Praxis hat es sich für mich bewährt.Für deine Lösung sähe die Lösung beispielsweise so ähnlich aus:
template.tpl
<html> <head> <title>Titel</title> </head> <body> <div id="header"> (header) </div> <div id="main"> <div id="left"> ... </div> <div id="content"> ... </div> <div id="right"> {if $user.online eq true} (Benutzermenü) {else} (Login) {/if} </div> </div> <div id="footer"> ... </div> </body> </html>
-
okay Danke,
ich werde es nochmal versuchen!