Mehrere Fragen zur Theme erstellung (Floating & template.php)
am 08.01.2009 - 16:17 Uhr in
Moin Moin :)
Ich bastel jetzt schon seit längerem an meinem eigenen Theme rum und habe da einige Fragen.
Ich habe mir die neuste deutsche Version gezogen (5.14) und installiert :)
Laut dem http://drupal.org/node/29139 sollte meine template.php so aussehen:
[code]
<?php
function skulltheme_regions(){
return array(
'skullspecial1' => t('Special One'),
'skullspecial2' => t('Special Two'),
'skullboxleft' => t('Footer Left'),
'skullboxmiddle' => t('Footer Middle'),
'skullboxright' => t('Footer Right')
);
}
?>
[/code]
nur leider werden da die linke und rechte Navigationsleiste nicht angezeigt.
Wenn ich die template.php aber abändere, dass sie so aussieht:
[code]
<?php
function skulltheme_regions(){
$my_regions = array(
'skullspecial1' => t('Special One'),
'skullspecial2' => t('Special Two'),
'skullboxleft' => t('Footer Left'),
'skullboxmiddle' => t('Footer Middle'),
'skullboxright' => t('Footer Right')
);
$result = array_merge($my_regions, phptemplate_regions());
return $result;
}
?>
[/code]
Funktioniert alles wunderbar. Aber das ist so doch nicht 100% richtig, oder ?
und als zweites habe ich meine page.tpl.php ich habe für jeden Part eine eigene Region erstellt.
Habe dadurch 5 Regionen mehr als normal (die im oberen Problem) habe denen alle eine ID oder classe zugewiesen
und in der CSS Definiert.
Jetzt habe ich gelesen dass ich die Regionen falsche einsetze....
Es ist eigentlich nicht nur ein floating problem ... du benutzt eigentlich die regionen falsch.
Ich würde in deinem Falle nur eine region für die rechte spalte nehmen und nur eine region für die Footer-Blöcke.
Ein Block direkt in ein Template einzubinden bzw. eine eigene Region dafür anzulegen ist nicht immer sinnvoll.
Wenn man aber lieber eine Region erstellt und mehrere Blöcke dieser zuweist. So kann man die Blöcke beliebig in der Reihenfolge verändern oder um weitere Blöcke erweitern, ohne an der pag.tpl.php Änderungen vornehmen zu müssen.
Die Blöcke liefern ja ihre eigenen divs mit klasen und IDs. Die bereits definierten CSS-Befehle aus der system.css oder der jeweiligen Modul-CSS kann man in seinem template einfach überschreiben/erweitern.(also in der style.css)
So kann man das Problem mit den 2-Spaltigen Boxen auch lösen.
Das Float problem löst du dann eigentlich am besten wenn du nicht jeden einzelnen Block der rechten-Spalte ("side") floatest, sondern nur den div "side", der ja alle Blöcke umfasst.
Das verstehe ich nicht, was gemeint ist. Ich würde mich freuen, wenn sich einer mal kurz bereit erklärt und sich das mal Live anschauen würde, da ich im Umschreiben nicht gerade der beste bin.
Ich lerne gerade die Theme erstellung und möchte es auch richtig machen :)
Cheers
Skull
- Anmelden oder Registrieren um Kommentare zu schreiben
Zitat: Funktioniert alles
am 09.01.2009 - 07:52 Uhr
Funktioniert alles wunderbar. Aber das ist so doch nicht 100% richtig, oder ?
Warum sollte das nicht richtig sein? skulltheme_regions() überschreibt die bestehende Funktion phptemplate_regions(). Damit ist auch klar, dass diese Funktion nachgebaut werden muss und die darin enthaltenen Informationen zusätzlich eingebaut werden müssen. Es kommt noch ein bisschen drauf an, ob du D5 oder D6 verwendest, aber grundsätzlich ist es in Drupal so, dass wenn eine Funktion überschrieben wird, diese Funktionalität nachgebaut werden muss. Es ist als keine Vererbung, im Fall von einfach Informationen hinzufügen sondern ein überschreiben.
Es gibt auch ausnahmen, z.B. in D6 die preprocess Funktionen oder den hook_alter_table. Dort können die bestehenden Informationen erweitert werden.
______________________________
Yet Another Drupal Site (YADS)
http://www.rapsli.ch
******************************
Moin auch :) Danke Dir, das
am 09.01.2009 - 15:01 Uhr
Moin auch :)
Danke Dir, das beruhigt mich ja schonmal, dass ich zumindest das schonmal richtig gemacht habe :)
Muss ich dann die Zeilen:
" $my_regions = array( "
und
$result = array_merge($my_regions, phptemplate_regions());
nicht auch anpassen, dass da auch die skulltheme_regions ist, anstatt " $my_regions ?
Cheers
Skull