Drupalin teemojen kustomointi sivukohtaisesti
Opiskelin taas hiukan lisää Drupalia tästä mainiosta kirjasta. Nyt selvisi sekin, miten teemoissa voi helposti tehdä erilaiset layoutit eri sivuille tai sisältötyypeille.
Oletuksena sivupohjana on page.tpl.php. Etusivulle on erikoistapaus page-front.tpl.php, jolla voi siis kustomoida etusivun erilaiseksi. Jos taas URLina on vaikkapa /uutiset/kategoria/otsikko, niin Drupal etsii sivupohjia tässä järjestyksessä ja valitsee niistä ensimmäisenä löytyneen:
- page-uutinen-kategoria-otsikko.tpl.php
- page-uutinen-kategoria.tpl.php
- page-uutinen.tpl.php
- page.tpl.php
Sisältönoodeille puolestaan on normaalisti pohjana node.tpl.php. Se saa muuttujan $page=true silloin, kun ollaan näyttämässä noodia omalla sivullaan. Jos noodi taas esitetään osana listausta, niin $page=false. Kun katsellaan sisältöä, jonka tyyppi on "contenttype", niin Drupal etsii sivupohjia tässä järjestyksessä:
- node-contenttype.tpl.php
- node.tpl.php
Blokeille on vastaava järjestelmä, jonka oletuspohjana on block.tpl.php. Niitä voidaan kustomoida joko moduulin nimen tai regionin (sivupohjan alue, jonne blokki on sijoitettu) mukaan. Delta on tässä moduulin blokkien järjestysnumero, jota käytetään silloin, kun moduuli tarjoaa useita blokkeja:
- block-modulename-delta.tpl.php
- block-modulename.tpl.php
- block-region.tpl.php
- block.tpl.php
Näillä eväillä Drupalilla toteutetun saitin ulkoasun voi kustomoida oikein joustavasti halutulla tarkkuudella.
4 Comments
Tässä on toinen mielenkiintoinen vinkki käyttäjärekisteröinnin kustomoimiseen paremmin:
http://www.chapterthree.com/blog/matt_cheney/howto_fully_theme_and_customize_drupal_user_registration_form
Ja tuohon vielä neuvo, miten sama homma toimii Drupal 6:ssa: http://drupal.org/node/289194
No, tämä yksinkertaistuikin vielä enemmän lisäämällä vain saitin teeman template.php:hen tällainen funktio:
function teemanimi_theme() { return array( 'user_register' => array( 'arguments' => array('form' => null), 'template' => 'user-registration-form')); }
Ja sitten voi luoda oman user-registration-form.tpl.php:n, jossa on esimerkiksi tällainen sisältö:
$value): ?>Tuota muokkailemalla voi tehdä rekisteröitymislomakkeen kentille mitä haluaa...
Valehtelin hiukan tuossa alkuperäisessä artikkelissa. Page-templatejen tunnistus meneekin alkuperäisen nimen mukaan, esim. node/123. Tässä artikkelissa on neuvottu, miten sen saa menemään aliasten mukaan: http://drupal.org/node/139766
You can use Markdown to format your comment:
Separate paragraphs in your text with two newlines