Blått bälte: page.tpl.php (och regioner)

Itangalo's picture

Detta är den femte delen i guiden Sju steg mot svart bälte i att tema Drupal 6.

Det blåa bältet i att tema Drupal handlar om en av de mest centrala filerna i Drupalteman, nämligen page.tpl.php. I ett tema behövs endast två filer. Det ena är .info-filen, som berättar för Drupal att mappen innehåller ett tema (för rätt Drupalversion). Det andra är page.tpl.php, som fungerar ungefär som temats index.html – alla sidor som visas på webbplatsen matas ut genom page.tpl.php.

Att redigera page.tpl.php

Om man öppnar en page.tpl.php ser man att det i princip är en vanlig (X)HTML-fil, men där själva innehållet på sidan är utbytt mot PHP-variabler. I början av filen finns exempelvis variabeln $language->language och $head_title, som berättar vilket språk sidan har och vad titeln på sidan är. Senare i filen hittar man variablen $content för huvudinnehållet på sidan, och ofta variablerna $left och $right för vänster respektive höger sidospalt. Alla dessa variabler fylls med hjälp av mallfiler och temafunktioner, som tas upp i senare avsnitt, men deras placering sinsemellan kommer från huvudfilen page.tpl.php.

Vill man göra omfattande ändringar i ett tema vill man förmodligen ändra i page.tpl.php. Som med andra ändringar ska du se till att skapa ett undertema till temat du utgår från, och kopiera page.tpl.php till undertemats mapp. (Kolla in grönt bälte – redigera teman: skapa underteman om du inte redan gjort det.)

Om du bygger en page.tpl.php från grunden bör du se till att få med vissa variabler. Några som kan vara lätta att glömma är:

  • $messages, som bland annat innehåller felmeddelanden.
  • $tabs, som visar flikar men mest bara används på adminsidor.
  • $closure, som kan innehålla viktig kod och bör skrivas ut efter allt annat dynamiskt innehåll.

Fler variabler

Det finns en rad variabler som kan användas i page.tpl.php – betydligt fler än de som brukar synas i de page-filer man öppnar. I temat Zen inleds page.tpl.php-filen med en utmärkt dokumentation över vilka variabler som finns tillgängliga (så som eventuell administratörstatus hos besökaren och sökväg till aktuell temakatalog).

Variabler kan förstås inte bara användas för att mata ut innehåll, utan också för att utföra logiska tester. (“Om användaren är administratör, skriv ut extralänkar.”) Man ska dock se till att hålla all komplicerad logik i en separat fil – vanligtvis template.php. Logik i page.tpl.php bör begränsa sig till enkla if-satser. (Se svart bälte – lägga till nya variabler om du har behov av mer avancerad logik.)

Olika mallar för olika webbsidor

En finess med page.tpl.php är att man genom att namnge varianter av filen på olika sätt kan man använda olika mallar på utvalda delar av sin sajt. Exempelvis kommer page-node-1.tpl.php att användas när man besöker nod nummer 1 på sajten, medan page-user.tpl.php kommer att användas när någon användarprofil laddas.

I regel kommer Drupal att leta efter en temafil med ett namn som motsvarar den interna sökvägen till sidan som visas (där node/1 motsvarar page-node-1.tpl.php). Om filen inte hittas letar Drupal efter mer och mer generella mallfiler (som page-node.tpl.php), för att till slut falla tillbaka på temats default – page.tpl.php. Eventuella specialanpassade page-filer skapar man förmodligen lättast genom att kopiera originalfilen och sedan göra de ändringar man vill, men teoretiskt kan man förstås skriva dem från grunden också.

Det finns ett par undantag till regeln om sökväg/filnamn som är värda att nämna. Den första är redigeringssidan för noder, som specialtemas genom page-node-edit.tpl.php (och inte exempelvis page-node-1-edit.tpl.php). Det andra är mallnamnet page-front.tpl.php, som om den finns alltid används för sajtens förstasida, oavsett vilken den är. Ett praktiskt sätt att se vilka möjliga mallfiler man kan använda istället för page.tpl.php är att utnyttja Theme Developer i modulen Devel.

Om man skulle vilja utöka reglerna för hur Drupal letar efter mallar går det att genomföra med lite PHP. Kolla in http://drupal.org/node/223440 för information om hur det funkar.

En viktig sak att känna till är att defaultfilen måste finnas i samma katalog som eventuella varianter för att Drupal ska bry sig om den. Det går alltså inte att lägga in page-node.tpl.php i sitt undertema utan att dessutom ha med page.tpl.php. (Som sagt måste alla teman innehålla en page.tpl.php-fil för att fungera, men underteman kan klara sig utan den så länge modertemat innehåller filen.)

Regioner

Regioner är platser på webbsidan där dynamiskt innehåll kan placeras – vanligtvis block. Det brukar betyda spalter av olika slag, men det är förstås upp till formgivaren att bestämma hur de olika regionerna ska synas.

I page.tpl.php representeras varje region av en enkel variabel, och som default finns $head, $content, $left, $right och $footer. Man kan enkelt lägga till fler regioner genom att redigera i temats .info-fil och skriva rader i stil med region[min_region] = Min region. Det kommer att ge upphov till regionvalet Min region i listan med block, och allt som läggs i den regionen kommer att kunna matas ut genom regionen $min_region.

Defaultregionerna ovan finns bara med om man inte deklarerar någon region över huvud taget. Vill man lägga till en enda region till dessa ska man också lägga till alla standardregioner, om man inte vill sitta med endast en region i slutändan. Om man använder regioner som motsvarar standardregionerna kan det vara klokt att använda standardregionernas namn, eftersom det i vissa lägen gör det lättare att samordna blockinställningar mellan olika teman.

Det blå bältet i att tema Drupal får du om du kan hantera page.tpl.php. Det betyder att du både ska kunna använda varianter av page.tpl.php för att ge olika delar av webbplatsen avvikande struktur och att kunna lägga till fler regioner i temat.

Groups:
Login or register to post comments

Toppenguide!

nenne-gdo - Fri, 2009-07-24 10:40

Det är verkligen en toppenguide detta, enkel men informativ. Väntar med spänning på de 2 sista delarna!