| 

.NET C# Java Javascript Exception

Hilfe Design mit Sitemesh

Dies ist das Archiv des ehemaligen Forums zum Thema Groovy, Grails, Griffon und Bean Scripting Framework, welches unter groovy-forum.de existierte. Die neue Adresse des Groovy-Forums ist: http://codekicker.de/fragen/themen/groovy.


Hilfe Design mit Sitemesh

umit - 07.08.2009 15:39
Hallo Leute!
Ich hab ein Tutorial für sitemesh gefunden aber leider hilft der mir nicht viel
[blog.openmind.ws]

Kennt sich jemand mit sitemesh aus?
und was kann man mit sitemesh machen, kann man die Seite wir ein Frameset aufteilen?
Falls ja wie kann man sie einteilen?
bei dem Beispiel verwendet der typ einmal <parameter class=".. "> einmal <ul class="..."> manchmal
<content class="...."> und manchmal schreibt er es direkt ins body.

Ich möchte folgendes:
Ich will genau so eine seite wie der typ aber ich will sie genau einteilen können dh. will ich z.b. in die navigation ein template reinhauen ins
menü ein template
info ein template
und auch ins main content ein template rein

Dabei soll das alles auf einer Seite geschehen nur werden die templates halt dynamisch mittels parameter ausgetauscht.
Und ich will nicht ein menü im layout weil ich das layout für mein allgemeines design, bilder etc. verwende.

Also:
Wie mach ich am besten diese Seite, wo ich alle Templates reintun kann
Ich hab schon folgendes probiert:
<html>
<meta ...Layout="main">//ka. kann den code jetzt nicht auswendig
.....
<content class="navigtion">
<tmpl:navi>
</content>

<content class="info">
<tmpl:info>
</content>

<content class="main">
<tmpl:main>
</content>

<content class="header">
<tmpl:header>
</content>


Re: Hilfe Design mit Sitemesh

milkyman - 07.08.2009 23:18
Hi.

Ich kenne mich mit Sitemesh nicht aus, aber das Tutorial erklärt doch eigentlich ganz gut wie es funktioniert. Du musst dich nur an den fett markierten Texten orientieren. Jede Passage im oberen Template findet sich auch einmal unten in der View wieder. Es gibt eben verschiedene Möglichkeiten die Inhalte ins Template (oben) einzufügen. Der Grails-Standard ist layoutHead, layoutTitle und layoutBody. Dazu kannst du auch was in der bekannten Grails Doku nachlesen. Dieses Prinzip wird auch bei den core Templates (scaffolding) angewendet. Das Template gibt den großen Rahmen vor und an den drei genannten Stellen wird der Inhalt aus der View eingefügt.

Am "class" darfst du dich nicht stören. Das ist "nur" für die CSS Formatierung, hat für den Template-Mechanismus aber keine Bedeutung.

Mit pageProperty kann man wohl einzelne Inhalte/Werte ins Template einfügen.Mit <parameter> und <content> werden diese Werte in der View definiert.

applyLayout ist wieder ein Grails Tag das du in der Grails Doku nachlesen kannst.

Versuch mal das Schritt für Schritt zu verstehen, dann sollte es machbar und auch nachbaubar sein.

PS:
Um die Verwendung von Sitemesh und Templates zu erklären finde ich das Tutorial gut - zumindest kenne ich Sitemesh nicht und konnte nachvollziehen wie es funktioniert. (Sollte ich vielleicht direkt mal anwenden :)

ABER: Ich rate davon ab, ein Design auf Basis von Tabellen zu erstellen. Das hat man vor 5 Jahren vielleicht noch gemacht. Aber heute verwendet man dazu die wesentlich flexibleren DIV-TAGs plus CSS. Dazu findest du auch massenweise Tutorials im Web. Layouts mit CSS ist ein Thema für sich, aber wenn du ernsthaft an guten, flexiblen und Browser-kompatiblen Layouts interessiert bist, kommst du nicht drumrum.

Ein interessantes Tutorial über CSS findest du z.B. hier: refcardz Core CSS Teile 1-3

Bye,
Horst


Re: Hilfe Design mit Sitemesh

vawalda - 08.08.2009 06:23
Servusla,
Ich kann Horst auf jeden Fall bzgl. der Layouterei mittels Tables zustimmen das geht auch mit Divs:
Language: HTML
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de_DE" lang="de_DE"> <head> <title>nur divs</title> </head> <body style="width:1024px;"> <div style="margin:5px; width:100%; height:68px; border:1px solid blue;">das ist oben</div> <div style="margin:5px; width:100%; border:1px solid red;"> <div style="margin:5px; float:left; width:200px; height:450px; border:1px solid green;"> hier w&auml;re dann die Navigation </div> <div style="margin:5px; width:1018px; height:450px; border:1px solid salmon;"> m&ouml;glicher Inhalt </div> <div style="margin:5px; clear:left; height:20px; border:1px solid grey;"> Footer </div> </div> </body> </html>

Ansonsten, ist das was du dir denkst imho nicht so einfach über das layouten mit Sitemesh realisierbar.

Sitemesh ersetzt dir in einem vorgegeben Layout gewisse Bereiche, die durch entsprechende Tags:
Language: HTML
1a. <g:layoutHead /> 1b. <g:layoutBody /> 2. <g:render template="[b]/layouts/bspHeader[/b]" /> 3. <g:pageProperty name="page.[b]leftCol[/b]"/>
gekennzeichnet sind.

So werden bei
1a. Alle link-Tags mit zur Generierung der Seite berücksichtigt.
1b. Der Inhalt des body-Tags mit generiert.
2. Das unter der entsprechenden URL, allerdings mit _gespeicherte Template verwendet (hier wäre das "_bspHeader.gsp" im Ordner "layout").
3. Der content-Tag mit dem Attribut tag="leftCol" wird beim erzeugen der Seite berücksichtigt.

Zitat
umit
Dabei soll das alles auf einer Seite geschehen nur werden die templates halt dynamisch mittels parameter ausgetauscht.
Alles was Sitemesh leisten kann hab ich oben aufgeführt, was also die Dynamik etwas ausbremst ;(
Aber, Controller sind eine Klasse Sache ! :)
Mit dem content-Tag (3.) kannst du alles was du benötigst vom Controller bekommen und ensprechende Anpassungen vornehmen.

Gruß Michl


Stelle deine Groovy-Frage jetzt!


Diese Seite zeigt den Thread "Hilfe Design mit Sitemesh" der ehemaligen Webseite groovy-forum.de, welche durch einen Serverunfall zerstört wurde. codekicker.de hat viele Konversationen über die beliebte Programmiersprache Groovy und zugehörige Frameworks wie das Grails-Framework retten können.

Hast Du eine Frage zum Thema Groovy, Grails oder allgemein Java? Viele ehemalige groovy-forum.de Mitglieder beantworten dir auf codekicker.de deine Frage! Stelle jetzt eine Frage!

Viele weitere Diskussionen zu Grails und Groovy befinden sich auf der Threadübersicht des alten groovy-forum.de.