Drupal 6 Verschachtelung, one more time
am 21.02.2009 - 16:30 Uhr in
Hallo, ich muss nochmals nachfragen, eines ist mir in Drupal immer noch unklar was den Webseitenaufbau betrifft.
Zur Erklärung:
1)
Ich habe ein Grundlayout in der page.tpl.php.
(header und footer sind fix, und $content liegt in einem div container dazwischen. $content wird über Tenplates gestylt)
2)
Nun dachte ich mir, will ich auf der Startseite im $content eine bestimmte div Verschachtelung haben. Soweit sogut, nun will ich im linken div die Ausgabe des Node "News" haben, und im rechten div die Ausgabe des Node "Pressemeldung".
3)
Ich lege also eine Datei node-news.tpl.php an und eine node-pressemeldung.tpl.php. Bei beiden hake ich an "Auf der Startseite veröffentlichen".
4)
So, aber nun meine Frage. In der page.tpl.php steht nur der Header, dann $content und der Footer. Wie aber sage ich Drupal ohne dass ich in der page.tpl.php um den $content herum divs anlege, gebe mir die node-news.tpl.php in einem rechten div aus vom $content und die node-pressemeldung.tpl.php in einem linken div.
Es würde ja funktionieren wenn ich die node-news.tpl.php style. Aber innerhalb der node-news.tpl.php kann ich ja keine regions definieren, wo ich dann auch noch zusätzlich re. die pressemeldungen (innerhalb der Datei node-news.tpl.php) ausgeben lassen könnte.
Also meine Kernfrage, wie erschaffe ich ein Layout für meine $content, (zB. auf der Startseite) OHNE dass ich die div Struktur in die page.tpl.php schreibe?
(würde ja dann für alle gelten, ausser man definiert regions und blendet je unterschiedlicher Seite immder die richtigen Blöcke mit den "richtigen div Strukturen ein (umständlich), davon abgesehen das mir das nichts dabei hilft 2 nodes nebeneinander auszugeben.)
ODER, geht es dann NUR noch mit Views. Dass ich einen eigenen Block für die Pressemeldungen erstelle mit den Views und in der page.tpl.php eine große Anzahl von Regions definiere und dann je nach Seite die richtigen Blöcke in den richtigen Regions einblenden lasse?
Hoffe das kann wer nachvollziehen. Vermutlich habe ich noch eine andere Denkweise was den Aufbau von Themes betrifft (habe zuvor mit typo3 gearbeitet) und wäre dankbar für eine Erklärung wie man das in Durpal angeht.
mfg,
KeepOn
- Anmelden oder Registrieren um Kommentare zu schreiben
Sieh Dir das mal
am 21.02.2009 - 18:38 Uhr
Sieh Dir das mal an
http://blip.tv/file/600413
-------------------
gruss
drupalino
gruss
drupalino
Nicht mehr in der TYPO3
am 21.02.2009 - 18:41 Uhr
Nicht mehr in der TYPO3 Mentalität verharren. Mit Drupal ist es anders und in meinen Augen einfacher.
Der Seitenaufbau ist über ein Theme festgelegt. In den Themes sind Regionen definiert. Dort kannst Du über Blöcke das anzeigen lassen was Du willst. Bei der Konfiguration der Blöcke im Theme bestimmst Du auch, auf welchen Seiten diese Blöcke sichtbar sind.
Blöcke kannst Du von Hand anlegen oder aber auch über Views automatisch erzeugen. Bevor ein Block sichtbar ist muß er IMMER erst im Theme einer Region zugewiesen werden. Das ist aber dann auch schon alles. Der Rest erledigt sich über CSS.
Gruß
Werner
.
Werner
drupal-training.de
Moderator und Drupal Trainer
* - - - - - - - - - - - - - - - - - - - - - - - - - - - *
Vielen Dank!
am 21.02.2009 - 20:16 Uhr
für die Antworten.
@Regions, verwenden kann man diese aber nur in der page.tpl.php und nicht in anderen Tempaltes wie zB. einem view Tempalte, oder?
+ 2. Frage, 2 dynamische Inhalte auf der selben Seite macht man dann entweder mit Panels oder mit Views (die Blöcke mit den gewünschten Inhalten erzeugen, und eingeblendet werden können), oder? (oder gibt es noch weitere Möglichkeiten?)
mfg,
KeepOn
Anders herum
am 21.02.2009 - 21:09 Uhr
Du definierst einen View (erstmal nur den Default). Dann sagt Du, wie Du den angezeigt haben möchtest (als Seite oder Block) indem Du einen enstsprechenden Display im View definierst.
Hast Du dabei Block gewählt, gehst Du unter Strukturierung>Blöcke>alle anzeigen>Dein-Theme
Hier legst Du jetzt fest, wo der Block auf der Seite stehen soll (Region).
Ein View ist nichts anderes als eine Datenbankabfrage bei der Du einige Darstellungsvarianten hast. (Siehe Basiseinstellungen: Darstellung). Du kannst entweder den gesamten Record (=Node) anzeigen oder nur einzelne Felder, wie bei Datenbankabfragen üblich.
Wenn du eine Seite aus einem View machst, kannst Du über den Aufruf-Pfad noch Argumente (= Filter) an den View mitgeben. Bei Blöcken gibt es das so nicht. Dann muß man den Umweg über ein Default-Argument gehen, wobei man dann meist PHP-Code einsetzt.
Hoffentlich klärt das ein bischen den Sachverhalt.
Gruß
Werner
.
Werner
drupal-training.de
Moderator und Drupal Trainer
* - - - - - - - - - - - - - - - - - - - - - - - - - - - *
hmmmm
am 21.02.2009 - 21:47 Uhr
verstehe!
Vielen Dank! Habe das gleich mal probiert, sehr komfortabel.
D.h. also immer wenn eine ähnliche Situation vorliegt (also in einem linken div eine Sammlung von news Beiträgen ausgeben und in einem rechten eine Sammlung von Pressemeldungen) immer 2 Views (news & pressemeldungen) anlegen in Form von Blöcken.
Dann Regions definieren in der page.tpl.php und diese Blöcke überall ausblenden, ausser auf den gewünschten Seiten.
Was mir dabei noch nicht klar ist, wie verändere ich die div Strukturen. Die view Templates werden ja immer in Schleifen durchlaufen, sprich da kann ich zwar das Design für jeden einzelnen "Newsbeitrag" (zB.) anpassen, jedoch nicht das drumherum. Das muss in einem Template das hierarchisch höher liegt passieren. Jedoch in welchem?
In der page.tpl.php gehts nicht dann wärs ja für alle Templates vorgegeben. In einer block-[region].tpl.php wäre es möglich jedoch ist dann immer die Region schon vordesignt wenn ich mal die Blöcke darin austausche.
Das einzige was mir hier am sinnvollsten erscheint ist wenn ich den jeweiligen Block (block-block-1.tpl.php zB.) mit den umliegenden divs bestücke, und diesen Block dann eben über dem Block für die "Newsmeldungen" einbelnden lasse. Somit stehen im Quelltext meine divs aus dem Block, dann der Inhalt in Form von den Newsmeldungen und dann nochmal ein definierter Block mit den schließenden divs. Und das ganze in Kombination mit dem richtigen ein und ausblenden pro Seite lässt ein gezieltes Design je nach aufgerufener Seite zu. (Nachteil sind u.U. viele definierte Regions in der page.tpl.php)
Ist das zu umständlich gedacht oder ist diese Lösung so vorgesehen in Drupal?
Und an dieser Stelle nochmals vielen Dank dass du dir Zeit nimmst für meine Fragen!
mfg,
KeepOn
Ah moment!
am 21.02.2009 - 22:24 Uhr
Nachtrag, habe ganz vergessen daß es ja möglich ist eigene page templates zu erstellen.
Also auf jeder Page die gewünschte div Struktur erstellen. Blöcke einblenden lassen in den dafür vorgesehenen Regions.
Und fertig ist das dynamische Design.
Erstaunlich wenn ich da manches mit typo3 vergleiche. Wenngleich auch das seine Stärken hat.
mfg,
KeepOn
Du bist immer noch bei
am 21.02.2009 - 22:34 Uhr
Du bist immer noch bei TYPO3.
Klar kann man verschiedene page.tpl.php Files erstellen, aber meist reicht doch einer für Front-page und einer für den Rest. Such Dir ein Theme mit entsprechend ausreichenden Regions und regele den Rest über Sichtbarkeit von Blöcken. Aber das Ganze ist leichter besprochen. Sieh mal in Deine Mail.
Gruß
Werner
.
Werner
drupal-training.de
Moderator und Drupal Trainer
* - - - - - - - - - - - - - - - - - - - - - - - - - - - *
Zwar bisschen alt die Antwort
am 15.01.2012 - 10:59 Uhr
Zwar bisschen alt die Antwort aber genau das hat mir geholfen Drupal zu verstehen. Vielen Dank