Een basis Joomla! template aanmaken
From Joomla! Documentation
It has been suggested that this article or section be split into specific version Namespaces. (Discuss). If version split is not obvious, please allow split request to remain for 1 week pending discussions. Proposed since 8 years ago.
Inleiding
Met deze tutorial wordt een inleiding gegeven tot het maken van Joomla! template. We beschrijven de benodigde essentiële bestanden en code voor het maken van een basis template. Code kan gekopieerd en geplakt worden, er is weinig aanpassing meer nodig.
Het instellen van een directory-structuur
Om de meest eenvoudige template te maken, maak je een nieuwe map aan in de map templates. De naam van deze map met je template is bijvoorbeeld mynewtemplate.
Met je favoriete teksteditor maken we de bestanden index.php
en templateDetails.xml
aan.
Voor een goed georganiseerde template maak je 2 nieuwe mappen aan: images en css. In de css map maak je een bestand met de naam template.css
.
Hoewel het geen probleem is om al je CSS code in je index.php bestand op te nemen, kiezen veel web designers er voor om hun CSS code in een apart bestand te plaatsen. Dit bestand kan met behulp van de link
tag aan meerdere pagina's gekoppeld worden. Dit verkort de laadtijd van je pagina' s, omdat dit aparte bestand kan worden opgeslagen in de cache.
Dit is een overzicht van de mappen en bestandsstructuur:
* mynewtemplate/ ** css/ *** template.css ** images/ ** index.php ** templateDetails.xml
Het maken van een basic templateDetails.xml bestand
Het templateDetails.xml bestand is essentieel. Zonder dit bestand wordt de template niet gezien door Joomla!. Het bestand bevat de metadata over de template.
De syntax van het bestand verschilt per Joomla versie.
In de verouderde versie gebruikte je het volgende:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE install PUBLIC "-//Joomla! 1.5//DTD template 1.0//EN" "http://www.joomla.org/xml/dtd/1.5/template-install.dtd">
<install version="1.5" type="template">
<name>mynewtemplate</name>
<creationDate>2008-05-01</creationDate>
<author>John Doe</author>
<authorEmail>john@example.com</authorEmail>
<authorUrl>http://www.example.com</authorUrl>
<copyright>John Doe 2008</copyright>
<license>GNU/GPL</license>
<version>1.0.2</version>
<description>My New Template</description>
<files>
<filename>index.php</filename>
<filename>templateDetails.xml</filename>
<folder>images</folder>
<folder>css</folder>
</files>
<positions>
<position>breadcrumb</position>
<position>left</position>
<position>right</position>
<position>top</position>
<position>user1</position>
<position>user2</position>
<position>user3</position>
<position>user4</position>
<position>footer</position>
</positions>
</install>
Voor en later gebruikte je de volgende versie. Wijzig version="2.5"
in de versie van je Joomla! installatie.
<?xml version="1.0" encoding="utf-8"?>
<extension version="2.5" type="template">
<name>mynewtemplate</name>
<creationDate>2008-05-01</creationDate>
<author>John Doe</author>
<authorEmail>john@example.com</authorEmail>
<authorUrl>http://www.example.com</authorUrl>
<copyright>John Doe 2008</copyright>
<license>GNU/GPL</license>
<version>1.0.2</version>
<description>My New Template</description>
<files>
<filename>index.php</filename>
<filename>templateDetails.xml</filename>
<folder>images</folder>
<folder>css</folder>
</files>
<positions>
<position>breadcrumb</position>
<position>left</position>
<position>right</position>
<position>top</position>
<position>user1</position>
<position>user2</position>
<position>user3</position>
<position>user4</position>
<position>footer</position>
</positions>
</extension>
Er staat informatie tussen markup-tags (de <element>
s). De beste aanpak is om dit te kopiëren en plakken naar je eigen templateDetails.xml bestand en relevante stukjes (zoals <name>
en <author>
) aan te passen.
Het onderdeel <files>
bevat alle bestanden die je wil gebruiken. Met het element <folder>
kan een hele map in één keer worden gedefinieerd.
Laat de posities zoals ze zijn, dit is een gemeenschappelijke set waarmee je makkelijk schakelt tussen standaard templates.
Het maken van een basic index.php bestand
Het index.php
bestand wordt de kern van elke pagina die Joomla! levert. In wezen, maak je een pagina (zoals een HTML-pagina), maar plaats je PHP code waar de inhoud van uw site moet komen. De template werkt door het toevoegen van Joomla code op de module posities en de component sectie van uw template. Als er iets wordt toegevoegd aan de template, wordt dit weergegeven op alle pagina's, tenzij het is toegevoegd aan een van deze secties via het Joomla CMS (of aangepaste code).
Deze pagina toont de kale code klaar om te knippen en plakken in uw eigen ontwerp.
Begin
Een Joomla template begint met de volgende regels:
<?php defined( '_JEXEC' ) or die( 'Restricted access' );?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
xml:lang="<?php echo $this->language; ?>" lang="<?php echo $this->language; ?>" >
De eerste regel stopt ondeugende mensen om naar uw code te kijken en slechte dingen te doen.
De tweede regel is de Document Type Declaration (DOCTYPE), deze vertelt de browser en web crawlers welke versie van html de pagina gebruikt. Het "doctype" zoals hierboven beschreven is HTML5, een nieuwere versie van HTML welke grotendeels backwards compatibel is, maar is voorzien van veel nieuwe mogelijkheden. Houd er rekening mee dat dit niet goed werkt met Internet Explorer 8 (en ouder) zonder een hack. Onderzoek deze situatie en de wensen van je klant alvorens je besluit welk doctype je wilt gebruiken. Dit is echter wel de versie die in Joomla en hoger wordt gebruikt.
Op de derde regel begint ons HTML document en beschrijft welke taal voor deze website wordt gebruikt. Een html document is verdeeld in twee delen, een head en body deel. De head bevat de informatie over het document en de body zal website code bevatten waarmee u de lay-out definieert..
Head
<head>
<jdoc:include type="head" />
<link rel="stylesheet" href="<?php echo $this->baseurl ?>/templates/system/css/system.css" type="text/css" />
<link rel="stylesheet" href="<?php echo $this->baseurl ?>/templates/system/css/general.css" type="text/css" />
<link rel="stylesheet" href="<?php echo $this->baseurl ?>/templates/<?php echo $this->template; ?>/css/template.css" type="text/css" />
</head>
De eerste regel geeft Joomla de juiste header-informatie. Dit is de pagina titel, meta-informatie, evenals JavaScript code.
De rest maakt twee links naar systeem style sheets en naar uw eigen opmaakmodel (als het genoemde template.css
en is staat in de "css"
map van uw template. Dus als uw template in http://www.mysite.com/templates/my_template/
staat, dan staan de css-bestanden in http://www.mysite.com/templates/my_template/css/
).
Body-Gedeelte
<body>
<jdoc:include type="modules" name="top" />
<jdoc:include type="component" />
<jdoc:include type="modules" name="bottom" />
</body>
Ongelooflijk, dit is voldoende! Ja, het is een heel eenvoudige lay-out, maar het werkt. Alles wordt gedaan door Joomla!. Deze regels, meestal genoemd jdoc staten, vertellen Joomla wat toe te voegen aan de uitvoer van bepaalde onderdelen van het Joomla systeem. Opmerking: u moet ervoor zorgen dat uw menu is ingesteld op de module-positie "top".
Module Posities
De regel, hierboven, die zegt name="top"
voegt een module positie toe genaamd "top" en maakt het Joomla mogelijk modules te plaatsen in deze sectie van de template. De type="component"
regel bevat alle artikelen en de hoofd content (eigenlijk, het component) en is erg belangrijk. Het wordt geplaatst in het midden van de template.
Opmerking:Je kunt je eigen module regels overal waar je wilt in de body plaatsen, maar je moet de corresponderende regel ook toevoegen in de templateDetails.xml die in dezelfde folder als de index.php van je template staat.
Einde
Tenslotte - het laatste stukje:
</html>
Standaard Afbeeldingen
Als je afbeeldingen wilt toevoegen aan de template kan je het op deze manier doen:
<img src="<?php echo $this->baseurl; ?>/templates/<?php echo $this->template; ?>/images/myimage.png" alt="Custom image" class="customImage" />
Hier is de template variabel vul de naam van de template in
Basis CSS
Je kunt op deze manier basis css toevoegen:
<link rel="stylesheet" href="<?php echo $this->baseurl ?>/templates/<?php echo $this->template;?>/css/styles.css" type="text/css" />
Ieder bestand wat toegevoegd is moet in een regel in de templatedetails.xml van de template vermeld worden,behalve als het verwijst naar een sub-folder (die kan weer opgenomen worden in een <folder> element).
Dit wordt het definitieve bestand:
<?php defined('_JEXEC') or die('Restricted access');?>
<!DOCTYPE html>
<html xml:lang="<?php echo $this->language; ?>" lang="<?php echo $this->language; ?>" >
<head>
<jdoc:include type="head" />
<link rel="stylesheet" href="<?php echo $this->baseurl ?>/templates/<?php echo $this->template ?>/css/template.css" type="text/css" />
</head>
<body>
<jdoc:include type="modules" name="top" />
<jdoc:include type="component" />
<jdoc:include type="modules" name="footer" />
</body>
</html>
Het testen van de template
Zoek de sjabloon in de Template Manager, selecteert het en klik op "Standaard"' om de template als standaard in te stellen.
In Joomla! 1.5, uw nieuwe template zal meteen worden getoond in het Templates:Stijlen scherm, bereikbaar via Extensies -> Templates.
+ In de Joomla! 2.5 serie en daarna, moet u Joomla! eerst vertellen dat u een nieuw template heeft gemaakt. Deze functie heet Ontdek extensies en kan benaderd worden via Extensies -> Beheren -> Ontdekken (bijvoorbeeld het Ontdekken tabblad). Klik op Ontdekken (bijvoorbeeld de Ontdekken knop) om uw template te ontdekken, selecteer hem daarna en klik op Installeren om hem te installeren. Uw template zou nu zichtbaar moeten worden bij de Templates (Stijlen), toegankelijk via Extensies -> Templates.
Let op: je kunt jouw template buiten Joomla maken, en deze simpelweg installeren net als elke andere extensie.
TIP: er zijn een paar manieren waarop je een voorbeeld kunt bekijken van de index pagina zoals je deze hebt samengesteld. Voer de stijlen direct in de header van de index pagina toe, of maak een link aan naar het css bestand dat je tijdelijk gaat gebruiken. Je kunt deze links verwijderen voordat je het bestand inpakt tot een zipbestand.
Een template installatie zipbestand maken
Een map met verschillende losse bestanden is een niet aan te bevelen pakket voor distributie. Dus de laatste stap is om een package aan te maken. Dit is een gecomprimeerd bestand die de mappenstructuur en alle bestanden bevat. Dit package kan in ZIP formaat (met een .zip extensie), een TAR-gzip formaat (met een .tar.gz extensiie), of in een TAR-bz2 formaat (met een .tar.bz2 extensie) worden gemaakt.
Als uw template in een map mijntemplate/ staat, dan kunt u via het volgende commando het pakket aanmaken:
- tar cvvzf ../mytemplate.tar.gz *
- zip -r ..\mytemplate.zip *.*
Opmerking voor Mac OS X gebruikers
Opmerking voor template ontwikkelaars die Mac OS X gebruiken: het Finders "Compress" menu item produceert een bruikbare ZIP pakket, maar met een addertje onder het gras. Het slaat de bestanden in de "AppleDouble" indeling op en voegt extra bestanden met namen die beginnen met "._". Dus er wordt een bestand toegevoegd met de naam "._templateDetails.xml", die Joomla 1.5.x soms verkeerd interpreteert. Het resultaat is een foutbericht, "XML parsing error at 1:1. Error 4: Empty document". De oplossing is het comprimeren vanuit de command line en de shell environment variabele instellen "COPYFILE_DISABLE" op "true" zetten voordat het commando "compress" of "tar" gebruikt wordt. Zie het AppleDouble artikel voor meer informatie.
Om de environment variabele in te stellen op een Mac kan je een terminalvenster openen het volgende te typen:
export COPYFILE_DISABLE=true
Ga dan, in dezelfde terminal-venster, naar de directory in waar uw templatebestanden zich bevinden en de voer het zip-commando uit. Bijvoorbeeld, als je templatebestanden zijn gebouwd in een map in je eigen map met de naam myTemplate, dan zou je het volgende kunnen doen:
cd myTemplate zip -r myTemplate.zip *
Conclusie
Als het goed is heb je nu een werkende template gemaakt. Het zal er alleen nog niet heel goed uitzien. Het beste wat je nu kunt doen is experimenteren met de layout.