page.tpl.php über Seiteninhalt beeinflussen
![](https://www.drupalcenter.de/files/imagecache/upic_mini/pictures/picture-5282.jpg)
am 11.08.2008 - 16:38 Uhr in
Hallo,
gibt es eine Möglichkeit, dass ich beim Erstellein eines neuen Inhaltes einen Wert an page.tpl.php übergebe, um hier Beispielsweise die Breite eines divs zu setzen?
z.B. über PHP-Variablen oder irgend wie anderweitig?
Details:
Ich habe ein Div-Element, das ich auf jeder Seite nutzen will, das aber eine unterschiedliche Größe haben soll, welche ich vom jeweiligen Inhalt aus steuern möchte.
Nun möchte ich das Div-Element gerne in der page.tpl.php setzen, damit ich dies nicht für jeden Inhalt machen muss.
Die Größe des Divs würde ich nun aber gern vom Inhalt aus setzen ...
Gibts da ne Lösung?
Danke!
Michael
- Anmelden oder Registrieren um Kommentare zu schreiben
Ja da gibt es mehrere
am 11.08.2008 - 16:41 Uhr
Ja da gibt es mehrere Loesungswege.
-------------
quiptime
Nur tote Fische schwimmen mit dem Strom.
mehrere
am 11.08.2008 - 16:50 Uhr
Ja da gibt es mehrere Loesungswege.
Gleich mehrere?
Kannst du mir da Beispiele nennen?
Danke!
Michael
page.tpl.php ist eine PHP Datei
am 11.08.2008 - 16:53 Uhr
und dort kannst Du einfach auf alle Funktionen und globalen Variablen zugreifen (global $xy verwenden).
Also entweder Du definierst irgendwo in Deinem Modul eine globale Variable oder Du verwendest phptemplate_preprocess_page in Deiner template.php, um eine Variable im Scope von page.tpl.php zu verwenden.
Edmund
-------
Drupal Migrationen, Modul- und Themeentwicklung, Drupal Hosting - http://www.katp.de
eleganter als Code in die page.tpl.php zu injizieren
am 11.08.2008 - 17:20 Uhr
Wenn Deine Problembeschreibung vor dem Hintergrund einer existierenden Drupalinstallation erfolgt hast Du vermutlich bereits einen Losungsansatz vor Dir.
Du weisst es nur noch nicht.
Das haengt aber vom verwendeten Theme ab UND das Du Dich von Deiner strategischen Vorgehensweise zur Problemloesung entfernst. Letzteres soll heissen Du kannst anders vorgehen - viel eleganter als situationsbezogen Code in die page.tpl.php zu injizieren.
Um zu verstehen wovon ich rede ist ein gewisses Mass an CSS Verstaendnis weitere Vorraussetzung.
Wovon ich rede?
Von CSS Kaskaden.
Sehe Dir mal bitte von einzelnen Seiten des Drupalcenter den HTML Quellcode und dabei insbesondere den Body Tag an.
Das ist es wenn ich sage: Du hast den Loesungsansatz vermutlich bereits vor Dir.
Ausgangspunkt und Steuerung sind also verschiedene CSS Klassen im Body Tag. Ausgehend von diesen Klassen kann man kaskadierend beliebigen Div's nach dem Body Tag verschiedene Eigenschaften in der style.css zuweisen. Das ist es doch was Du erreichen willst. Oder?
Und Jetzt wird Dir hoffentlich auch klar was ich meine wenn ich sage: Aendere Deine strategische Vorgehensweise beim Layouten mit CSS.
PS
Fuer alle die hier nachlesen.
Das kann man eher selten so sagen: Voran Beschriebenes hat Gueltigkeit fuer Drupal 4, Drupal 5, Drupal 6 und Drupal 7.
-------------
quiptime
Nur tote Fische schwimmen mit dem Strom.
Hier mal ein Beispiel: Bei
am 11.08.2008 - 20:09 Uhr
Hier mal ein Beispiel:
Bei der Startseite soll es eine extra cssklassen mit nahmen halbseitig geben, da hier noch Werbung angezeigt werden soll
Auf allen anderen Seiten soll ganzzeitig als CSS Klassen zur Verfügung stehen also
<?php
function themename_preprocess_page(&$vars) {
// ist man auf der startseite setzte halbseitig
if (drupal_is_front_page()) {
$vars['page_css'] = 'halbseitig';
}
else {
$vars['page_css'] = 'ganzseitig';
}
}
?>
Nun steht dir die Variable $page_css in allen Page.tpl.php zur Verfügung und du kannst damit machen was du willst, z.B. als body css klassen setzten
--------------
Blog www.freeblogger.org: Deutscher IRC-Channel: irc.freenode.net #drupal.de ... Jabber-me: dwehner@im.calug.deXING
dereine schrieb Hier mal
am 12.08.2008 - 07:04 Uhr
Hier mal ein Beispiel:
Bei der Startseite soll es eine extra cssklassen mit nahmen halbseitig geben, da hier noch Werbung angezeigt werden soll
Auf allen anderen Seiten soll ganzzeitig als CSS Klassen zur Verfügung stehen also
<?php
function themename_preprocess_page(&$vars) {
// ist man auf der startseite setzte halbseitig
if (drupal_is_front_page()) {
$vars['page_css'] = 'halbseitig';
}
else {
$vars['page_css'] = 'ganzseitig';
}
}
?>
Nun steht dir die Variable $page_css in allen Page.tpl.php zur Verfügung und du kannst damit machen was du willst, z.B. als body css klassen setzten
...
Vielen Dank für die schnellen Reaktionen.
Im letzten Beispiel ist es aber genau die Funktion drupal_is_front_page(), die mir sagt, dass es sich um die Startseite handelt.
Wenn ich aber auf jeder Seite etwas anderes will, kann ich nicht sehen, ob es nun Seite A, B oder C ist.
Gruß
Michael