Im Folgenden ist beschrieben wie man Smarty für dein Einsatz mit der Menalto Gallery2 erweitert. Voraussetzungen sind Joomla!, Gallery2 und das zugehörige Joomla!-Plugin zur Integration der Galerie ins CMS.
Man lege eine Datei function.link_user_album.php an. Die Datei und die Funktion müssen so heißen, denn das zugehörige Tag soll {link_user_album} heißen.

<?php
/**
* Smarty plugin
* @package Smarty
* @subpackage plugins
*/
/**
* Smarty {link_user_album} function plugin
*
* Type: function<br>
* Name: link_user_album<br>
* Purpose: link item owners album (assuming that one user can only have one album)
* @param array
* @param Smarty
* @return string
*/

Soweit der Anfang der Datei. Nun fügen wir unsere Smarty-Funktion ein:

function smarty_function_link_user_album($params, &$smarty)
{

global $database; //verwenden des joomla-$database-objekts
$gid=$params['gid']; //im tag übergebene owner-id eines bildes in $gid speichern
$query = “SELECT g_id FROM g2_Item WHERE g_ownerID=’$gid’ AND g_canContainChildren=1″; //album-id des besitzers finden
$database->setQuery( $query );
$rows = $database->loadObjectList();
foreach ($rows as $row) {
if($row->g_id!=7){//ausschließen, dass das root-album angezeigt wird

$ret=”<a href=\”http://www.domain.com/index.php?option=com_gallery2&Itemid=4&g2_itemId=$row->g_id\”>Nutzeralbum anschauen</a>”; //link generieren

}
}
return($ret);//

}

Fertig, das Dateiende nicht vergessen:

?>

Die Datei im Gallery2-Smarty-Verzeichnis ablegen:

…/gallery2/lib/smarty/plugins/

So kann das neue Smarty-Tag verwendet werden (beispielsweise in der photo.tpl des verwendeten themes, um einen Link auf das Photoalbum des Besitzers eines bestimmten Photos anzuzeigen):

{link_user_album gid=`$theme.item.owner.id`}

Hierbei wird mit dem Parameter gid der Besitzer des aktuell angezeigten Bildes übergeben. Unsere Smartyfunktion generiert daraus den Link aufs Nutzeralbum.