# Coppermine Photo Gallery v1.5.x: Documentation et manuel

# Contenu dynamique (Piloté par PHP)

Coppermine est piloté par PHP ce qui veut dire que les pages sont crées dynamiquement sur le serveur lorsque c'est nécessaire et envoyées vers le client. N'ayez pas peur: vous n'avez pas besoin de connaître PHP pour utiliser Coppermine - c'est l'avantage des scripts préfabriqués. Néanmoins, certains voudront personnaliser leur installation de Coppermine pour faire des choses qui ne seront possibles qu'en ajoutant ou en modifiant le code PHP. Si vous commencez juste avec Coppermine, vous n'avez pas besoin de lire cette section- seuls des fonctions avancées y sont expliquées:

## utiliser anycontent.php

Pour afficher du contenu personnalisé dans le bloc {GALLERY}, vous pouvez utiliser le fichier "anycontent.php" qui se trouve dans le répertoire racine de Coppermine. Modifiez-le (en utilisant un éditeur de texte) et téléchargez-le sur votre serveur web. Par défaut, le bloc "anycontent" est désactivé. Pour l'activer (et définir l'endroit ou il doit être affiché sur la page principale), utilisez le réglage "contenu de la page principale" dans la configuration de Coppermine.
L'affichage de ce que vous aurez dans le fichier anycontent.php ne se fera que sur la page index (c.à.d. la liste des catégories et des albums). C'est pourquoi cela n'a pas de sens d'utiliser anycontent.php pour afficher le logo d'un site qui devrait apparaitre sur toutes les pages de votre galerie. A la place, vous pouvez par exemple afficher un message de bienvenue aux nouveaux utilisateurs, qui explique ce que vous pourrez trouver sur votre galerie.

Vous pouvez par exemple utiliser anycontent pour afficher un message de bienvenue. Toutefois, vous ne voudrez pas que le message de bienvenue s'affiche pour toutes les pages index de toutes les catégories; Généralement vous ne voulez ce type de message que sur la page d'accueil de votre galerie ce qui équivaut à la catégorie de base (ou à aucune catégorie), et vous ne voudrez l'afficher que pour les visiteurs non identifiés.
Ceci dit, voici un exemple pour le contenu du fichier anycontent.php:

    <?php
      // La constante USER_ID est remplie par Coppermine.
      // Elle n'est pas définie si le visiteur n'est pas identifié.
      // Elle est définie à l'ID de l'utilisateur enregistré identifié.
      if (!USER_ID) {
        // Entre les accolades, le code qui ne sera exécuté que si la condition ci-dessus est remplie
    	// , c.à.d. si nous avons un visiteur (quelqu'un qui n'est pas identifié):
    	// Vérifions que nous sommes à la catégorie racine (c.à.d. si il n'y a pas de catégorie spécifique définie)
    	if ($superCage->get->keyExists('cat') == FALSE) {
    		echo 'Bonjour Visiteur. Pourquoi ne pas vous <a href="register.php">enregistrer</a> (c'est gratuit!) pour voir plus d'images?';
    	}
      }
    ?>

## Haut de page et pied de page personnalisés

#### Objectif

La fonction haut de page et le pied de page personnalisé de Coppermine est prévue pour inclure des éléments HTML statiques ou dynamiques dans toutes vos pages Coppermine. Un des usages pourrait être l'inclusion d'un menu dynamique général pour la navigation générale de votre site dans Coppermine. Vous pouvez définir l'emplacement ou le contenu sera inséré en éditant themes/votre_theme/template.html et en modifiant l'emplacement des conteneurs {CUSTOM_HEADER} et {CUSTOM_FOOTER}. Dans la plupart des cas, la position par défaut dans le fichier HTML template (juste après la balise `<body>` et juste avant la balise `</body>`) est satisfaisante; ne les déplacez que si vous avez bien compris le concept de base.

#### Concept

Voici comment fonctionne l'inclusion du haut/pied de page personnalisé: si vous avez spécifié un chemin fonctionnel et valide pour inclure votre fichier dans la configuration de Coppermine ("Chemin pour l'inclusion d'un haut de page personnalisé" et "Chemin pour l'inclusion d'un pied de page personnalisé"), le code qui se trouve dans le fichier inclu est inséré à l'emplacement du conteneur (le contenu généré remplacant le conteneur dons la sortie) lorsque le thème est interprété (c.à.d. à chaque fois qu'une page de Coppermine est affichée).

#### Contenu possible

Le fichier inclu peut contenir du HTML, PHP (ou un mélange des deux), mais vous devez comprendre que vous ne pouvez pas inclure toute sortes de code PHP: en fait, les mêmes limitations s'appliquent pour tous les includes PHP - après que les headrers des fichiers sont envoyés, vous ne pouvez pas inclure de code PHP qui essaye de "bidouiller" avec le "header" du fichier (comme avec les cookies). Soyez attentif avec l'ouverture de connections à la base de données: lorsqu'une nouvelle connexion est ouverte la première est perdue.

Cela peut sembler tu chinois pour les non-codeurs, donc regardons quelques exemples:

Le contenu de votre fichier haut de page persionnalisé pourrait être:

    <div style="background-color:blue">
      <a href="/">Site home page</a> -
      <a href="/contact_form.htm">Contactez-nous</a> -
      <a href="http://google.com">Cherchez sur le web</a>
    </div>

En conséquence, cette navigation générale apparaitra en haut de chaque page Coppermine. Jusqu'ici tout va bien direz-vous, mais quel en est le bénéfice? Et bien, il n'y a pas de très gros avantages ici, car vous auriez pu placer ce code dans le fichier template.html avec le même résultat. Toutefois, vous pourriez utiliser ce fichier include personnalisé depusi une autre page non-coppermine de votre site (utilisant la commande PHP include) pour offrir une barre de navigation unique à l'ensemble de votre site. Si les éléments de cette barre de navigation devaient changer, vous n'auriez qu'à modifier ce fichier unique.

#### Contenu dynamique

Pas trop mal, mais il ya quand même d'autres choses que vous pouvez faire: vous pouvez ajouter du contenu dynamique c.à.d du contenu basé sur certaines conditions à remplir (ou pas).
Souvent, vous souhaitez afficher différents contenus en fonction du statut du visiteur (utilisateur enregistrés vs. visiteur), mettez donc un simple switch:

    <?php
    // La constante USER_ID est remplie par Coppermine.
      // Elle n'est pas définie si le visiteur n'est pas identifié.
      // Elle est définie à l'ID de l'utilisateur enregistré identifié.
      if (!USER_ID) {
        // voici ce que le visiteur va voir:
        echo 'Bonjour Visiteur. Pourquoi ne pas vous enregistrer (c'est gratuit!) pour voir plus d'images ?';
      }
    ?>

## Contenu dynamique basé sur le thème (theme.php)

La méthode la plus recommandée pour ajouter du contenu dynamique est de créer/modifier un thème personnalisé. Vous pouvez ajouter du code PHP à theme.php, mais pas à template.html! pour les détails, référez-vous à la section thème de la documentation.

Note: les gens demandent souvent comment ajouter du code PHP dans template.html - la réponse est toujours la même: vous ne pouvez pas ! Quelque soit l'extension ou le nom de fichier utilisé: renommer template.html en template.php ne fera rien d'utile, même si vous changez le code PHP correspondant dans le code principal. Coppermine ne fonctionne simplement pas de cette manière: vous ne pouvez pas ajouter de code PHP directement dans template.html. Vous devez créer un conteneur personnalisé et le remplir avec le code que vous aurez ajouté dans theme.php. Ceci est accessible aux personnes ayant des connaissances PHP intermédiaires - si vous n'avez pas ces connaissances, utilisez une des autres méthodes décrites dans cette page.

## Modifier les fichiers du noyau

Les fichiers du noyau (les fichiers PHP qui font partie du pack Coppermine) peuvent aussi être modifiés pour parvenir à ajouter des fonctions personnalisées. Néanmoins, l'équipe de développement recommande fortement de n'utiliser cette option que si vous êtes absolument certains de ce que vous faites: bien que vous n'ayez pas programmé de mettre à jour Coppermine dans un futur proche, une mise à jour peut devenir obligatoire. La raison en est très simple: chaque élément significatif d'un programme peut contenir des bugs. C'est certainement aussi le cas pour Coppermine. Même si nous essayons de mettre à disposition une application parfaite, il y a certainement des bugs qui vont être corrigés par la suite, dans des mises à jour de maintenance. C'est pourquoi il est impératif de garder votre installation Coppermine à jour. La mise à jour de votre installation Coppermine vous demandera de remplacer tous les fichiers du noyau avec les nouveaux contenus dans la mise à jour. Par conséquent, vos modifications personnalisées des fichiers du noyau seront perdues, et vous devrez réappliquer votre hack.
Ceci dit, vous devrez y penser à deux fois avant de modifier les fichiers du noyau: la plupart des modifications peuvent être accomplies en utilisant les méthodes recommandées pour créer ou modifier un thème plutôt que de modifier les fichiers du noyau. Si vous devez passer par une modification des fichiers du noyau, assurez-vous de bien les commenter et de les noter quelque part. Après une mise à jour, vous pourrez utiliser un visualisateur de différences pour réappliquer vos modifications personnalisées plus facilement.