Introduktion
Varje tema ligger i varsin underkatalog under themes i roten, t.ex. themes/default. Varje tema består sedan av en fil index.php som innehåller koden som behövs för att rendera sidan, och ett valfritt antal bilder m.m.
Php-filen innehåller endast en klass som ärver från Theme (includes/classes/theme.php). Denna fil innehåller ett antal funktioner som kommer att anropas när olika delar av sidan ska ritas upp.
I konstruktorn till sin klass kan man anropa basklassens konstruktor med argumentet false ($this->Theme(false);). Detta gör att funktionerna RenderBody och RenderSidebar kommer att anropas i omvänd ordning.
Alla bilder man refererar till ska skrivas som om html-filen hade legat i roten, dvs du ska skriva tex <img src="themes/default/logo.gif" />.
Denna bild förklarar terminologin
+----------------------------------------------------+
| Header |
+----------------------------------------------------+
+--------------------------------+ +-----------------+
| Body | | Sidebar |
| +----------------------------+ | | +-------------+ |
| | bodyItem | | | | sidebarItem | |
| +----------------------------+ | | +-------------+ |
| +----------------------------+ | | +-------------+ |
| | bodyItem | | | | sidebarItem | |
| +----------------------------+ | | +-------------+ |
| ... | | ... |
| | | |
+--------------------------------+ +-----------------+
+----------------------------------------------------+
| Footer |
+----------------------------------------------------+
Välja tema
Om du bara snabbt vill testa ditt tema kan du på din URL bara lägga till ?theme=tema, tex http://www.itstud.chalmers.se/?theme=notepad. Tema här är alltså namnet på din underkatalog.
Om du vill lägga in ett tema mer permanent så ska du redigera filen useredit.php. Hitta en rad som ser ut såhär:
foreach(array("four", "othe", "sten", "smurfvinter", "notepad")
Lägg till ditt tema i listan här så kommer man att kunna välja det när man går in och redigerar sin användare.
RenderHeader
function RenderHeader(/*string*/ $title, /*string*/ $baseHref, /*array*/ $sections)
Denna renderar början på sidan. $title är titeln på sidan, $baseHref används inte längre ("depricated") utan istället ska RenderCommonHead() anropas för att alla sökvägar ska fungera. $sections är en associativ array med länkar som ska visas på varje sida $section => $link, RenderSections() anropas lämpligtvis.
RenderBody
function RenderBody(/*array*/ $bodyItems)
Denna renderar sedan vart och ett av rutorna i $bodyItems. Dessa är av typen TItem eller subklassen TArticle. Vissa teman renderar dessa olika.
RenderSidebar
function RenderSidebar(/*array*/ $sidebarItems)
Denna renderar rutorna i $sidebarItems. Dessa är av typen TItem.
RenderFooter
function RenderFooter()
Denna avslutar sidan.