Brunt bälte: Andra template-filer

We encourage users to post events happening in the community to the community events group on https://www.drupal.org.
Itangalo's picture

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

Med det bruna bältet i att tema Drupal når vi det kanske mest intressanta i Drupals temalager – tpl.php-filer (hädanefter ibland kallade tippelfippar, efter förslag i boken Front End Drupal). Med hjälp av dem kan man påverka stora delar av Drupals utseende, utan att behöva grotta ner sig i komplicerade temafunktioner eller knepig PHP.

Man skulle kunna säga att det är här det roliga börjar.

Hur tippelfippar fungerar

En tippelfipp är en liten (eller ibland stor) mall som Drupal använder för att formatera en viss sorts data. Det finns tippelfippar som styr rutan med kommentarer, det finns tippelfippar som styr en nods uppbyggnad, och det finns tippelfippar som ger ramen runt varje block.

Till sin uppbyggnad liknar tippelfippar page.tpl.php (som kan ses som tippelfipparnas hövding) – de innehåller (X)HTML-kod med delar av innehållet utbytt mot PHP. För varje tippelfipp finns det ett antal variabler man kan använda – som skiftar mellan olika tippelfippar – och dessa kan användas både för direkt utmatning och för logiska villkor. (Dokumentation om vilka variabler som finns tillgängliga borde finnas i respektive tippelfipp.)

Även när det gäller redigering fungerar tippelfippar precis som page.tpl.php. Man skapar helt enkelt en kopia av tippelfippen man vill ändra, lägger den i katalogen för sitt undertema, och redigerar så mycket man orkar. Enkelt, snabbt och effektivt!

Att hitta rätt tippelfipp

Något som däremot kan vara lite svårare när det gäller tippelfippar är att hitta originalfilen. Det finns i princip två sätt att göra det på. Det ena är att leta runt bland alla moduler och include-kataloger som Drupal har, tillsammans med eventuella contrib-moduler som man laddat hem. Det andra är att använda Theme Developer i Devel-modulen, klicka på ett element och få reda på vilken mall som användes när det skapades.

Det senare är att föredra.

Men. Inte all data som visas på en sida är skapad genom tippelfippar. Många av core-modulerna och en del av de större contrib-modulerna använder tippelfippar för det mesta av datan som ska visas, men inte alla. De som inte använder tippelfippar förlitar sig istället på temafunktioner – PHP-funktioner som gör i ordning data för utmatning. Det går faktiskt ganska enkelt att göra om temafunktioner till tippelfippar, men det blir föremål för nästa bälte.

Varianter av tippelfippar

Med page.tpl.php kan man variera filnamnet för att få varianter av filen att användas på utvalda delar av webbplatsen. Samma sak går att göra med vissa tippelfippar. Här är ett urval av några som förhoppningsvis är användbara.

  • node.tpl.php kan ges tillägget -nodtyp (typ node-story.tpl.php), för att tema utvalda nodtyper på ett speciellt sätt. Om du använder nodtyper uppbyggda med hjälp av CCK har du en bra hjälpreda genom modulen Contemplate/Content Template. Genom den modulen kan du få Drupals nuvarande mall för nodtypen (även om den inte finns som en fil), och spara ner i en fil.
  • Tippelfippar för nodtyper kan dessutom få tilläggen -body, -teaser eller -rss, om du vill tema utmatning av noden i fulltext, teaserläge respektive som RSS-flöde. (Använder du inte något av dessa tillägg får du en mall som gäller för samtliga utmatningsformer – vilket betyder att teasers och fulltextnoder ser likadana ut.)
    comment.tpl.php och comment-wrapper.tpl.php kan också ges tillägg för nodtyp, för att tema varje nodtyps kommentarer för sig.
  • block.tpl.php kan ges en rad olika tillägg för att tema enligt olika sammanhang. De filnamn som Drupal letar efter per default är block-modulnamn-delta.tpl.php, block-modulnamn.tpl.php, block-regionnamn.tpl.php och till slut block.tpl.php. Modulnamn är namnet på den modul som skapar blocket (handgjorda block kommer från modulen Block), delta är ett löpnummer som moduler ger varje block som skapas, och regionnamn är alltså systemnamnet på regionen där blocket visas. Genom att variera namnen på tippelfipparna kan man alltså låta enstaka block, block från vissa moduler eller block i vissa regioner få olika mallar.

Om du vill veta fler sätt att ändra namn på tippelfippar rekommenderas Theme Developer. Om du klickar på ett element får du inte bara reda på vilken mall som används för elementet, utan också vilka filnamn som skulle kunna ha använts istället.

När helst du använder varianter av tippelfippar ska du se till att du har defaultfilen i samma katalog som specialfilen – annars kommer specialfallet inte att hittas. (Det funkar alltså inte att baraha node-story.tpl.php i sin temafil om man vill skapa en ändra utseendet på story-noderna – du måste också ha node.tpl.php i samma katalog.)

Du bör också se till att hålla tippelfippar fria från avancerad logik, vilket ibland kan vara lättare sagt än gjort. Om innehållet i din tippelfipp kräver avancerad logik bör du kolla in avsnittet lägga till variabler under svart bälte.

Rött bälte i att tema Drupal har du förtjänat om du kan hantera tippelfippar – det vill säga hitta, redigera och vid behov skapa specialvarianter av tpl.php-filer. Som överkurs kan du också skapa nya variabler, för att hålla tippelfipparna så rena och lättlästa som möjligt.