iGalerie

Vous n'êtes pas identifié(e).

Annonce

Un message d'erreur qui s'affiche ? Un mot de passe oublié ? L'ajout de fichier qui ne marche pas ?
Pensez d'abord à lire la FAQ, vous y trouverez probablement une solution à votre problème.

#1 02-07-2020 11:52:50

Grégoire
Membre
Inscription : 02-07-2020
Messages : 3

Développer une extension

Bonjour,

Je souhaite modifier légèrement le code d'iGalerie pour ajouter la possibilité d'associer un fichier audio à chaque image. Toutefois je ne veux pas compromettre la mise à jour ultérieure de l'outil en modifiant le code source "à l'aveugle".

Existe-t-il une manière recommandée de créer une extension ou un plugin ? Avez-vous des pistes ou des recommandations sur la meilleure manière de procéder ?

Le mieux est peut être de développer la fonctionnalité entièrement en javascript et modifier le rendu HTML par ce moyen pour ne pas impacter les templates PHP / HTML ?

Merci de votre aide et de vos idées et bravo pour ce projet open source !

Hors ligne

#2 02-07-2020 16:24:52

David
Développeur d'iGalerie
Inscription : 12-05-2006
Messages : 4 371
Site Web

Re : Développer une extension

Salut,

Il n'y a pas de possibilité de créer un plugin avec iGalerie. Par contre, comme il y a plusieurs demandes pour modifier le thème et qu'en général ce sont des ajouts que l'on peut faire dans la balise <head> (ajout de balises <meta>, Javascript, etc.), j'avais pensé à ajouter dans une prochaine version la ligne suivante juste avant la balise </head> du fichier template/default/index.tpl.php :

<?php $head = __DIR__ . '/custom/head.tpl.php'; if (file_exists($head)) : ?><?php include_once($head); ?><?php endif; ?>

Ainsi, il suffirait de créer un fichier head.tpl.php dans le répertoire "template/default/custom" pour ajouter du code Javascript, des balises <meta>, du code PHP, etc. Et tout ça, sans avoir à modifier les fichiers du thème, ce qui permet d'éviter que ces modifications soient écrasées lors des mises à jour de l'application.

Le fichier head.tpl.php pourrait par exemple ressembler à ça :

<?php
if ($_GET['section'] == 'item')
{
   // Code Javascript uniquement sur la page des images.
}
?>

Mais je ne sais pas si cette idée correspond exactement à ce que tu cherches à faire ?

Hors ligne

#3 02-07-2020 17:37:54

Grégoire
Membre
Inscription : 02-07-2020
Messages : 3

Re : Développer une extension

Ce serait parfait ! Je pense que ça répond aussi au besoin de ceux qui voudraient éventuellement personnaliser un peu le CSS sans se lancer dans la création d'un template complet. Ça me paraît une très bonne idée.

Idéalement, un système équivalent pour l'interface d'administration serait utile aussi dans mon cas.

Si j'ai besoin d'ajouter du code PHP je pense mettre mes fichiers dans un dossier spécifique à la racine. Ça ne sera pas vraiment "intégré" au mécanisme du site mais ça fonctionnera très bien pour mon besoin.

Merci !

Hors ligne

#4 02-07-2020 19:12:49

RV
Membre
Lieu : Toulouse
Inscription : 17-01-2014
Messages : 48
Site Web

Re : Développer une extension

Pareil, je teste ça bientôt smile
Merci
Question, dans le fichier head.tpl.php je mets des balises META simplement comme ça :

<?php
if ($_GET['section'] == 'item')
{
   // Code Javascript uniquement sur la page des images.
<meta name="keywords" content="Des photos en couleur" />
}
?>

Et ça marche ? (en ayant rajouté la ligne template/default/index.tpl.php qui sera dans la prochaine version je suppose).
Je suis limité en php ...

Hors ligne

#5 03-07-2020 08:40:05

Grégoire
Membre
Inscription : 02-07-2020
Messages : 3

Re : Développer une extension

Bonjour !

Comme il s'agit d'un fichier de "template" (avec l'extension .tpl.php) seul le code situé à l'extérieur des balises PHP (<?php ... ?>) sera pris en compte. Voici un exemple :

// La balise ci-dessous sera ajoutée sur toutes les pages du site
<script type="text/javascript" src="/exemple/index.js"></script>

// La balise ci-dessous sera ajoutée uniquement sur la page des images
<?php if ($_GET['section'] == 'item') : ?>
    <script type="text/javascript" src="/exemple/item.js"></script>
<?php endif; ?>

Pour afficher des variables PHP dans le template il faut utiliser la fonction "echo" comme ci-dessous :

// Exemple d'utilisation d'une variable existante...
<?php if (!empty($tpl['item']['description_meta'])) : ?>
    <meta property="og:description" content="<?php echo $tpl['item']['description_meta']; ?>" />
<?php endif; ?>

// ... ou d'une nouvelle variable
<?php $timestamp = time(); ?>
<script type="text/javascript" src="/exemple/index.js?<?php echo $timestamp ?>"></script>

Hors ligne

#6 05-07-2020 19:33:00

RV
Membre
Lieu : Toulouse
Inscription : 17-01-2014
Messages : 48
Site Web

Re : Développer une extension

Salut,
J'ai bêtement mis les balises meta dans template/default/custom/head.tpl.php en ayant rajouté la ligne préconisée dans template/default/index.tpl.php et c'est ce que je souhaitais, les balises meta se retrouvent sur toutes pages smile

Jusque là c'est parfait ! Merci!
@+

Hors ligne

Pied de page des forums