Mandag, 21 september 2009

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:
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.
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>.
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.
Fredag, 25 september 2009
God pointe med at bruge template overwrites, istedet for at ændre i core-filerne. Jeg har tidligere blot gjort det i core-filerne, men når man så opdaterer sitet, så forsvinder de jo alle sammen.
Torsdag, 01 oktober 2009
Torsdag, 01 oktober 2009
Jeg har pt. lidt bøvl med at få lov til at vise php-kode i artikler på en ordentlig måde - så kode-eksemplet er lidt misvisende. Jeg håber alle forstår princippet alligevel.
Er der nogen der har anbefalinger til en nem måde at vise php i artikler, så læg gerne en kommentar herunder.
Søndag, 04 oktober 2009