Drupalin teemojen kustomointi sivukohtaisesti

in Drupal

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:

  1. page-uutinen-kategoria-otsikko.tpl.php
  2. page-uutinen-kategoria.tpl.php
  3. page-uutinen.tpl.php
  4. 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ä:

  1. node-contenttype.tpl.php
  2. 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:

  1. block-modulename-delta.tpl.php
  2. block-modulename.tpl.php
  3. block-region.tpl.php
  4. block.tpl.php

Näillä eväillä Drupalilla toteutetun saitin ulkoasun voi kustomoida oikein joustavasti halutulla tarkkuudella.

4 Comments
kennu 15.8.2008 02:16:24

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

kennu 15.8.2008 02:43:32

Ja tuohon vielä neuvo, miten sama homma toimii Drupal 6:ssa: http://drupal.org/node/289194

kennu 15.8.2008 03:35:00

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...

kennu 18.8.2008 04:53:02

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:

  • > quoted text
  • *italic* text
  • **bold** text
  • `code block` (multi-line is ok, whitespace is preserved)
  • [link text](http://www.google.com "link title")

Separate paragraphs in your text with two newlines