Template overrides i Joomla
Mandag 21 september 2009 af Line Wied

Sådan ændrer du Joomlas standard output
Hvis du vil ændre outputtet fra Joomla, kan du selvfølgelig tilpasse corefilerne, og få nøjagtig det output du skal bruge. Men det er uholdbart at ændre de originale corefiler, da de vil blive overskrevet næste gang du opgraderer, og dine tilpasninger vil gå tabt. I stedet kan du ændre Joomlas output i din template ved at bruge template overrides.
Du kan overskrive output fra komponenter og moduler (ikke fra plugins).
Eksempel:
Hvis du vil ændre måden standard modulet 'Latest news' / 'Seneste nyheder' vises, skal du overskrive filen /modules/mod_latestnews/tmpl/default.php. Det gør du ved at kopiere filen til /templates/dinTemplate/html/mod_latestnews/default.php
/modules/mod_latestnews/tmpl/default.php ser sådan ud:
<?php // no direct access
defined('_JEXEC') or die('Restricted access'); ?>
<ul class="latestnews<?php echo $params->get('moduleclass_sfx'); ?>">
<?php foreach ($list as $item) : ?>
<li class="latestnews<?php echo $params->get('moduleclass_sfx'); ?>">
<a href="<?php echo $item->link; ?>" class="latestnews
<?php echo $params->get('moduleclass_sfx'); ?>">
<?php echo $item->text; ?></a>
</li>
<?php endforeach; ?>
</ul>
Lad os sige at du vil ændre listen til en nummereret liste og have et link nederst der fører til din nyhedsside - så ændrer du /templates/dinTemplate/html/mod_latestnews/default.php til:
<?php // no direct access
defined('_JEXEC') or die('Restricted access'); ?>
<ol class="latestnews<?php echo $params->get('moduleclass_sfx'); ?>">
<?php foreach ($list as $item) : ?>
<li class="latestnews<?php echo $params->get('moduleclass_sfx'); ?>">
<a href="<?php echo $item->link; ?>" class="latestnews
<?php echo $params->get('moduleclass_sfx'); ?>">
<?php echo $item->text; ?></a>
</li>
<?php endforeach; ?>
</ol>
<a href="/linkTilFlereNyheder">Se flere nyheder</a>
Joomla bruger automatisk dit template override i stedet for Joomlas standard layout.
Flere anvendelsesmuligheder:
- Tilpas login modulet og fjern linksene "Glemt dit brugernavn?" og "Glemt dit password?".
- Bestem selv layoutet på artikler i et kategori blog layout og flyt dato og forfatternavn til bunden af artiklen.
- Sørg for at artiklens titel automatisk kommer med i Læs mere-linket.
- .. og meget mere.
Hvad så hvis du vil ændre outputtet fra en 3. parts udvidelse?
Det er ikke kun Joomla core output du kan overskrive med template overrides. Det samme gør sig gældene for 3. parts moduler og komponenter. Sålænge de er konstrueret efter MVC-modellen (Model-View-Control). Se på mappestrukturen - hvis den følger mønsteret /components/com_komponentnavn/views/komponentnavn/tmpl/ for komponenter og /modules/mod_modulnavn/tmpl/ for moduler (kan variere lidt for moduler), kan de overskrives med et template override.
SEO optimeret Joomla output med template overrides
Tabellayout gavner ikke din søgemaskineoptimering. Ved at overskrive Joomlas output fra com_content, kan du skabe dit eget tabelfrie layout og en semantisk korrekt kode. Yootheme har lavet et komplet sæt overrides, der overskriver alle Joomlas core komponenter og moduler til tabelfrie layouts og sørger for at headings markeres korrekt med <h1>, <h2> og <h3>.
Mere om template overrides:
Kortfattet beskrivelse af template overrides: http://docs.joomla.org/How_to_override_the_output_from_the_Joomla!_core
Detaljeret gennemgang af template overrides: http://docs.joomla.org/Understanding_Output_Overrides
Hands on: Kig på templaten BEEZ der følger med en Joomla standard installation - den gør flittigt brug af overrides.


Line Wied blogger om CMS systemet Joomla og webdesign. Her er Tips, tricks og vejledninger i professionelt webdesign og udvikling af Joomla templates og lidt om livet i al almindelighed - som iværksætter og webnørd i særdeleshed.
