iGalerie

Documentation d'iGalerie 3

Modification du thème

Options du thème

Le thème par défaut d'iGalerie 3 est personnalisable grâce au panneau Options du thème. Différentes options vous permettent de modifier l'apparence du thème : couleur, bannière, style de certains éléments, etc. Vous pouvez même ajouter du code CSS sans avoir à modifier des fichiers du thème (qui seraient perdues lors des mises à jour d'iGalerie). Toutes les modifications effectuées dans les options du thème se répercutent immédiatement sur la page courante. Ainsi, vous pouvez tester vos idées rapidement sans avoir à recharger la page à chaque fois.

Options du thème
Les "Options du thème" sont disponibles en cliquant sur l'icône située en haut et à gauche de la galerie, visible uniquement des administrateurs connectés.

Modifier le thème

Si vous souhaitez effectuer des modifications du thème, il va falloir passer par les fichiers de template, situés dans le répertoire template/default/ pour le thème par défaut. Mais attention ! Si vous éditez ces fichiers (comme tous les autres fichiers d'iGalerie), toutes vos modifications seront perdues lors des mises à jour de l'application. Car à chaque mise à jour, tous les fichiers d'iGalerie sont remplacés par ceux de la nouvelle version. Pour apporter des modifications à un thème sans qu'elles soient écrasées, vous avez deux possibilités.

La première consiste à faire un copier-coller de tout le thème dans un nouveau répertoire (template/mon_theme/). Cela revient en fait à créer un nouveau thème, qu'il faudra sélectionner dans la section Thèmes de l'interface d'administration. Ainsi, ce nouveau thème ne sera pas écrasé lors des mises à jour et vous pourrez y apporter toutes les modifications que vous souhaitez, voir créer un nouveau thème en partant de zéro.

La deuxième solution consiste à créer un fichier head.tpl.php dans le répertoire template/default/custom/. Le contenu de ce fichier sera ajouté juste avant la balise </head> du fichier index.tpl.php. Cette solution est de loin la plus simple si vous souhaitez simplement ajouter des balises <meta> ou du code Javascript. Cette solution fonctionne aussi pour le thème de l'interface d'administration.

Fichiers de template

Tous les fichiers de template ont une extension .tpl.php. Ce qui signifie que ce sont avant tout des fichiers PHP et que vous pouvez mettre tout le code PHP que vous souhaitez. La connexion à la base de données est toujours active jusqu'à la fin du chargement complet du template. Il est donc possible d'effectuer des requêtes SQL dans les fichiers de template.

Le code de template est un mélange de PHP et de code HTML :

<?php if ($tpl['item']['description']) : ?>
<p id="item_description" class="object_desc"><?php echo $tpl['format_description']($tpl['item']['description']); ?></p>
<?php endif; ?>

Ici, nous sommes sur la page des photos et vidéos (fichier item.tpl.php) et avec PHP nous testons la présence d'une description. Si elle existe, on formate et affiche la description dans une balise HTML <p>.

Notez que l'on aurait très bien pu écrire la même chose de cette manière :

<?php if ($tpl['item']['description'])
{	
   echo '<p id="item_description" class="object_desc">' . $tpl['format_description']($tpl['item']['description']) . '</p>';
}
?>

Mais la première syntaxe est préférable car elle permet de mieux distinguer le code PHP du code HTML et d'écrire le code HTML comme si c'était un fichier .html.

Tableau $tpl

Toutes les données de template se trouvent dans un unique tableau PHP : $tpl. Ces données sont issues des traitements et requêtes SQL permettant de générer tout le contenu d'une page. Par exemple, sur la page d'un album (fichier album.tpl.php), le tableau $tpl va contenir toutes les informations pour générer les vignettes, (titre, stats, etc.), la pagination, le menu, le header (titre, bannière, etc.), les tags, les liens, etc.

Pour faciliter le développement, le contenu de ce tableau, comme celui de n'importe quel autre, peut être affiché en bas de chaque page en utilisant la fonction l(). Par exemple, créez un fichier head.tpl.php dans le répertoire template/default/custom/ avec comme seul contenu la ligne suivante :

<?php l($tpl); ?>

Le tableau (souvent très long !) va ainsi s'afficher en bas de chaque page, sans casser la mise en page HTML. Par contre, ne faites surtout pas ça sur votre site Web, sinon n'importe quel visiteur aura accès à tout le contenu du tableau et pourra ainsi récupérer certaines informations sensibles ! Ou alors, il faudra ajouter une condition :

<?php if ($tpl['user']['admin']) { l($tpl); } ?>

Dans ce cas, seul un administrateur connecté pourra voir le contenu de $tpl.

Fonctions du tableau $tpl

Le tableau $tpl ne contient pas que des données. Il contient également des fonctions. Certaines de ces fonctions sont utilisables partout, sur toutes les pages. Voici les deux fonctions les plus utiles à connaître :

$tpl['config']()

Permet d'accéder à la valeur d'un paramètre de configuration.

<?php if ($tpl['config']('search')) : ?>
<!-- Moteur de recherche activé -->
<?php endif; ?>

Ces paramètres de configuration sont enregistrés dans la table "config" de la base de données. Les valeurs par défaut et type (text => texte, bin => binaire, int => entier) de ces paramètres se trouvent dans le fichier includes/core/Config.class.php, dans l'attribut $_paramsDefault.

$tpl['link']()

Cette fonction est très utile car elle permet de créer facilement un lien vers une page de la galerie. Elle n'accepte qu'un seul argument qui correspond au paramètre GET "q". Pour créer un lien vers la page d'une photo ou vidéo, il suffit de procéder ainsi :

<a href="<?php echo $tpl['link']('item/562-une-photo'); ?>">Lien vers une photo</a>
Tableau $_GET

Le tableau $_GET contient des informations sur la page courante. Il contient le seul paramètre GET utilisé par iGalerie : "q" (par exemple : ?q=item/62-une-photo), ainsi que toutes les informations utiles extraites de ce paramètre. Dans les fichiers de template, ce tableau peut être utilisé pour savoir sur quelle page on se trouve :

<?php if ($_GET['section'] == 'album') : ?>
<!-- Code HTML uniquement sur la page des albums. -->
<?php endif; ?>

Mais il est également possible d'utiliser le tableau $tpl à la place :

<?php if ($tpl['template']['file'] == 'album.tpl.php') : ?>
<script>alert('On est sur la page d\'un album');</script>
<?php endif; ?>

Dernière modification : 24/10/2020