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

# Modifiez theme.php

Chaque thème contient un fichier theme.php. Toutefois, pour la plupart des thèmes, ce fichier est presque vide. La raison est que seules les choses qui diffèrent du comportement par défaut de Coppermine doivent être définis dans theme.php. Les éléments supposés fonctionner "de la manière normale à Coppermine" sont définis dans le code du noyau central de Coppermine - le fichier theme.php de votre thème personnalisé contient les définitions de variables et de fonctions qui forcent les éléments identiques du code général.

Le fichier "theme.php" contient tous les gabarits HTML utilisés par le script. Vous pouvez les modifier à souhait. Lorsque vous faites des modifications de ces gabarits, soyez attentifs à ne pas modifier les lignes commençant par `<!-- BEGIN xxx -->` et `<!-- END xxx -->`. Ces lignes sont souvent utilisées pour identifier le début et la fin d'un bloc de code spécifique que le script utilise pour afficher la galerie.

## Types d'éléments

A la base il peut y avoir trois sortes de types de contenus dans theme.php (du point de vue du programmeur PHP). Pas de panique, vous n'avez pas besoin d'être programmeur pour pouvoir être capable de modifier votre thème.

- Définitions des constantes
  Pensez aux constantes comme des commutateurs généraux qui peuvent être définis lors de l'exécution du script.
  `define('THEME_HAS_RATING_GRAPHICS',1);`
  La définition de constante utilise toujours la commande PHP `define(...)` et est de ce fait facile à trouver. Comme convention de codage, le nom des constantes utilisées dans Coppermine sont toujours écrites en majuscules.
- Définition des variables
  Les variables peuvent être manipulées (changées) pendant l'exécution. La plus grande majorité des éléments qui peuvent se trouver dans theme.php sont des variables. Les noms de variables commencent toujours par le signe $.
  `$template_sys_menu = <<<EOT
  {BUTTONS}
  EOT;`
- Définition des fonctions
  Les fonctions sont des mécanismes très puissants qui se trouvent dans theme.php, puisqu'elles permettent une grande flexibilité et peuvent être réutilisées. Elles commencent par le mot `function`, suivi par le nom de la fonction et les paramètres entre parenthèses et accolades qui définissent le début de la fonction. La définition de la fonction contient généralement plusieurs lignes de codes qui sont terminées par une accolade.
  `function endtable()
  {
  echo <<<EOT
  </table>
  <!-- End standard table -->
  EOT;
  }`

## Le thème sample - un thème pour copier/coller

Votre installation de Coppermine inclue aussi un répertoire avec le thème "sample". Le thème "sample" inclue chacun de ces fichiers mais ne s'affiche pas dans la liste des thèmes sélectionnables dans l'affichage de votre galerie Coppermine. Le fichier theme.php du thème sample contient une copie de chaque fonction et gabarits utilisables, comme référence. Si vous décidez d'utiliser le thème "sample" pour commencer à créer votre propre thème, vous devrez suivre les instructions concernant theme.php dans la section "documentation pour la mise à jour des thèmes" et commencer par un fichier theme.php vide.

Pour être clair: vous ne devez pas modifier le thème sample (du fait qu'il n'est pas affiché), mais copiez les sections que vous souhaitez changer vers votre thème personnalisé. Ne copiez pas l'ensemble du contenu du fichier themes/sample/theme.php dans votre thème personnalisé, il ne fera qu'encombrer votre thème et rendra sa mise à jour très difficile par la suite. Ne copiez que les sections que vous souhaitez modifier depuis `themes/sample/theme.php` dans `themes/votretheme/theme.php`.

Ceci dit: vous ne devez pas commencer votre propre thème en copiant le thème sample - commencez par un fichier theme.php vide. N'utilisez themes/sample/theme.php que pour copier des sections particulières que vous voulez modifier dans votre thèmes personnalisé et ensuite modifiez les.

Les débutants ont souvent des problèmes pour comprendre ce qu'est une "section" ce qu'ils doivent copier depuis le thème sample - si vous n'avez pas assez de connaissances en PHP, il est parfois difficiles de comprendre ou commence une définition de fonction et ou elle se termine. C'est pourquoi nous avons "habillé" les sections individuelles qui contiennent plus qu'une ligne par des blocs de commentaires qui essayent d'attirer votre attention: une section commence par le bloc

    /******************************************************************************
    ** Section <<<section_name>>> - START
    ******************************************************************************/

et se termine par

    /******************************************************************************
    ** Section <<<section_name>>> - END
    ******************************************************************************/

ou le nom de la section (`section_name` dans l'exemple ci-dessus) est identique dans le bloc de début et dans le bloc de fin.

L'emplacement ou vous insérez la section que vous copiez depuis le thème sample n'a aucune importance, tant que vous faites attention à ne pas les coller dans une autre section, mais avant ou après une section existante dans votre thème personnalisé. Comme règle, vous pouvez sans risques coller une section dans une nouvelle ligne juste avant `?>` dans votre thème personnalisé (`themes/votretheme/theme.php`)

## Méthode

La méthode pour modifier tout fichier theme.php est réellement facile - suivez simplement ces simples étapes:

- Déterminez quelles sections doivent être modifiées
  Il y a plusieurs différentes manières de le définir:
  - Vous avez trouvé un message correspondant sur le forum d'aide de Coppermine
  - Vous avez trouvé en regardant la table "Liste des éléments dans theme.php"
  - Une autre partie de la documentation vous l'indique
  - Un ami vous l'a indiqué
  - ...
- Trouvez quelles sections existent déjà dans votre thème personnalisé:
  (Votre éditeur de texte favori doit avoir une fonction de recherche. Notepad.exe en a une)
  - Si oui, modifiez themes/votretheme/theme.php. Il n'est pas nécessaire de copier depuis le thème sample
  - Si non, ouvrez themes/sample/theme.php avec un éditeur de texte, trouvez la section que vous voulez modifier, sélectionnez là et copiez la, puis collez là dans une nouvelle ligne avant `?>` de `themes/votretheme/theme.php`. Puis modifiez le contenu que vous avez collé et regardez si ça fonctionne.

## Champ d'application

Bien, qu'est ce qui peut être fait en modifiant theme.php? Seul le ciel est votre limite: seule votre imagination peut être une limite, mais la portée des modifications possibles dans le fichier theme.php est infinie. Néanmoins, les utilisateurs demandent généralement les cinq ou six fonctions ou changent tout le temps. C'est pourquoi nous avons créé une page avec des exemple de thèmes ou les modifications les plus courantes du fichier theme.php sont expliquées – assurez-vous de lire attentivement ces exemples avant de commencer à poser une nouvelle question sur le forum d'aide de Coppermine, vous risquerez sinon de vous voir renvoyer vers un lisez la documentation...

Nous essayons vraiment d'attirer votre attention sur ce bloc; merci de lire les pages d'exemple de thèmes après avoir lu cette page.

## Liste des éléments de theme.php

Élément | Type | Description | Dépendances
--- | --- | --- | ---
define('THEME_HAS_PROGRESS_GRAPHICS',1); | Constante | Coppermine affiche une icône "chargement en cours" lorsque le formulaire de téléchargement est soumis pour signaler qu'il ne doit pas y avoir d'interaction de l'utilisateur pendant que le script est occupé par le téléchargement. Lorsque cette constante est définie, le script va chercher l'icône "téléchargement en cours" dans le répertoire images du thème (themes/votretheme/images/loader.gif). Si cette constante n'est pas définie, l'image de chargement par défaut sera utilisée, prise dans le répertoire générique des images. Lors de la création de votre propre thème, assurez-vous que l'image de chargement existe lorsque vous définissez la constante. | Si défini, un fichier nommé `loader.gif` doit se trouver dans le répertoire images du thème.
define('THEME_HAS_RATING_GRAPHICS',1); | Constante | L'emplacement des images d'évaluation. Si cette constante est définie, le script sera dirigé vers le répertoire images du thème (themes/votretheme/images/) et y cherchera les images d'évaluation. Si pas définie (défaut), les images d'évaluation seront prises dans le répertoire images qui se trouve dans le répertoire racine de Coppermine. | Ressources graphiques des thèmes → Images d'évaluation
define('THEME_HAS_MENU_ICONS',16); | Constante | L'emplacement pour les icônes des menus qui sont affichées si l'option de configuration "Activer les icônes de menu" est activée. Si cette constante est définie, le script sera dirigé vers le répertoire images du thème, sous-répertoire 'icons', `themes/votretheme/images/icons/` et y cherchera les icônes de menu. Si non définie (défaut), les icônes de menu seront prises dans `images/icons/`. A l'inverse de la plupart des autres constantes de thème, la valeur que vous assignez à cette constante a une importance définissez-la à la taille (en pixels) de vos icônes personnalisées. Les icônes personnalisées (comme les icônes par défaut) doivent être carrées. Si vous décidez d'utiliser votre propre jeu d'icônes pour les menus de votre thème personnalisé, il est conseillé de copier le répertoire `images/icons/` dans `themes/votretheme/images/` pour avoir un jeu par défaut, puis commencez à les modifier une à une. |
define('THEME_HAS_NAVBAR_GRAPHICS',1); | Constante | L'emplacement des barres de navigations graphiques ("ecard", "slideshow", "previous"/"next"). Lorsque cette constante est définie, le script sera dirigé vers le répertoire images de votre thème (themes/votretheme/images/) et y cherchera les images de la barre de navigation. Si non définie (défaut) les images des barres graphiques seront prises dans le répertoire images à la racine de Coppermine. | Ressources graphiques des thèmes → Images de barre de navigation
define('THEME_HAS_FILM_STRIP_GRAPHIC',1); | Constante | L'emplacement pour les images du négatif de film. Lorsque cette constante est définie, le script sera dirigé vers le répertoire images de votre thème (themes/votretheme/images/) et y cherchera les images du négatif de film. Si non définie (défaut) les images du négatif de film seront prises dans le répertoire images à la racine de Coppermine. | Si définie, un fichier nommé `tile.gif` doit se trouver dans le répertoire images du thème [Détails]
define('THEME_HAS_FILM_STRIP_GRAPHICS',1); (Attention au S de fin qui est l'unique différence avec la constante précédente THEME_HAS_FILM_STRIP_GRAPHIC) | Constante | L'emplacement pour le graphisme du négatif de film. Lorsque cette constante est définie, le script sera dirigé vers le répertoire images du thème, à savoir themes/yourtheme/images/ et regardera les images de négatif de film (tile1.gif pour la partie supérieure et tile2.gif pour la partie inférieur). S'il n'est pas défini (par défaut), les images du négatif de film seront prises à partir du dossier images qui se trouve dans le dossier racine de Coppermine. | Si définie, un fichier nommé `tile1.gif` et un fichier nommé `tile2.gif` doivent résider dans le dossier images du thème [Détails]
define('THEME_HAS_NO_SYS_MENU_BUTTONS',1); | Constante | Si présent, le système ne cherchera pas à remplacer {BUTTONS} dans le gabarit SYS_MENU |
define('THEME_HAS_NO_SUB_MENU_BUTTONS',1); | Constante | Si présent, le système ne cherchera pas à remplacer {BUTTONS} dans le gabarit SYS_MENU |
function assemble_template_buttons($template_buttons,$buttons) | Fonction | Créer les boutons d'un gabarit en utilisant un tableau de conteneurs. Si cette fonction est utilisée dans ce fichier, elle doit être déclarée avant d'être appelée. |
function addbutton(&$menu,$href_lnk,$href_title,$href_tgt,$block_id,$spacer) | Fonction | Créer un tableau de conteneurs utilisé par la fonction assemble_template_buttons. Si cette fonction est utilisée dans ce fichier, elle doit être définie avant d'être appelée. |
function pageheader($section, $meta = '') | Fonction | Fonction d'écriture d'un en-tête de page. Le premier paramètre $section ne doit pas être touché. Le second paramètre $meta peut être utilisé pour y ajouter vos balises métas personnalisées. Pour ajouter des méta-balises statiques, modifiez template.html |
function pagefooter() | Fonction | Fonction d'écriture du pied de page |
function theme_javascript_head() | Fonction | Fonction pour le JavaScript dans la section `<head>` |
function theme_credits() | Fonction | Fonction pour la section credits |
function starttable($width = '-1', $title = '', $title_colspan = '1') | Fonction | Fonction pour commencer une table 'standard'/td> |
function endtable() | Fonction | Fin d'une table standard | function starttable()
function theme_main_menu($which) | Fonction |  |
function theme_admin_mode_menu() | Fonction |  |
function theme_display_message_block() | Fonction | Fonction pour le bloc theme_display_message_block. Le bloc de messages (à ne pas confondre avec le menu administrateur) affiche un message sur toutes les pages et un flux RSS depuis la page du projet Coppermine pour l'administrateur. Il est conseillé de ne pas la modifier sans savoir ce que vous faites. Cette fonction génère les sections individuelles du bloc. |
function theme_display_cat_list($breadcrumb, &$cat_data, $statistics) | Fonction | Fonction d'affichage de la liste des catégories sur la page d'index. Contient une partie de la logique du noyau et ne doit être modifiée que très rarement. |
function theme_display_breadcrumb($breadcrumb, &$cat_data) | Fonction | Fonction d'affichage de la barre de navigation (généralement pris comme "ligne de menu de base") qui indique dans quelle sous-structure se trouve le visiteur (racine de la galerie → catégorie → sous-catégorie → album). |
function theme_display_album_list(&$alb_list, $nbAlb, $cat, $page, $total_pages) | function | Fonction qui affiche la liste des albums sur la page d'index. Contient une part de la logique du noyau qui n'a que rarement besoin d'être modifiée. |
function theme_display_album_list_cat(&$alb_list, $nbAlb, $cat, $page, $total_pages) | Fonction | Fonction qui affiche l'album de premier niveau d'une catégorie. |
function theme_display_thumbnails(&$thumb_list, $nbThumb, $album_name, $aid, $cat, $page, $total_pages, $sort_options, $display_tabs, $mode = 'thumb', $date='') | Fonction | Fonction qui affiche les vignettes aussi bien dans la vue des albums que des catégories ou des méta-albums |
function theme_display_film_strip(&$thumb_list, $nbThumb, $album_name, $aid, $cat, $pos, $sort_options, $mode = 'thumb', $date='') | Fonction | Affiche le négatif de film | Uniquement pris en compte si Affiche le négatif de film est activé dans la configuration.
function theme_no_img_to_display($album_name) | Fonction | Fonction qui génère l'affichage si un album est vide ou si un élément particulier est inaccessible quelque soit la raison (n'existe pas ou droits manquants) |
function theme_display_image($nav_menu, $picture, $votes, $pic_info, $comments, $film_strip) | Fonction | Gabarit général de l'affichage de l'écran des images intermédiaires (displayimage.php). |
function theme_html_picinfo(&$info) | Fonction | Gabarit qui génère les lignes individuelles de la table des informations des images sous les images intermédiaires | La section information des images doit être déployée
function theme_html_picture() | Fonction | Affiche une image ou tout autre enregistrement se trouvant dans la base de donnée de Coppermine pour une vue individuelle. |
function theme_html_img_nav_menu() | Fonction |  |
function theme_html_rating_box() | Fonction |  |
function theme_html_comments($pid) | Fonction | Affichage des commentaires pour une image spécifique |
function theme_slideshow() | Fonction |  |
function theme_display_fullsize_pic() | Fonction | Affichage de l'image de grande taille |
function theme_vanity() | Fonction |  |
function theme_display_bar($actualValue = 0, maxValue = '100', maxBarSizeInPixels = '400', textColor = 'black', textShadowColor = '', textUnit = '', leftBar = 'red', rightBar = '') | Fonction | Affiche une barre graphique |
function theme_page_title($section) | Fonction | Créer les balises titres pour chaque page. Pour une bonne compatibilité avec les moteurs de recherche, la partie dynamique $section doit venir en premier |
$template_sys_menu | Variable | Gabarit pour sys_menu |
$template_sub_menu | Variable | Gabarit pour sys_menu |
$template_sys_menu_spacer | Variable | Séparateur entre les éléments du sys menu (dans beaucoup de thèmes `::` est utilisé) |
$template_sys_menu_button | Variable | Modifiez celle-ci pour ajouter/changer les classes CSS pour les liens du sys-menu. Le contenu par défaut est
      <!-- BEGIN {BLOCK_ID} -->
            <a href="{HREF_TGT}" title="{HREF_TITLE}">{HREF_LNK}</a>
    		{SPACER}
      <!-- END {BLOCK_ID} -->
$template_sub_menu_spacer | Variable | Séparateur entre les éléments du sous menu. Par défaut, c'est le même séparateur que celui utilisé pour le sys menu. |
$template_sub_menu_button | Variable | Modifiez la pour ajouter/Changer les classes CSS pour les liens menu-menu. Par défaut, la définition pour le sys-menu est prise en compte. |
$template_gallery_admin_menu | Variable | Gabarit HTML pour le menu administrateur de la galerie |
$template_user_admin_menu | Variable | Gabarit HTML pour le menu administrateur de l'utilisateur (le menu additionnel que l'utilisateur non administrateur verra une fois identifié et ayant le droit d'avoir sa galerie personnelle (les droits pour cela sont définis dans le panneau de gestion des groupes). |
$template_cat_list | Variable | Gabarit HTML pour la liste des catégories |
$template_breadcrumb | Variable | Gabarit HTML pour le menu de navigation (le chemin qui indique au visiteur ou il se trouve en terme de structure logique des catégories/albums) |
$template_album_list | Variable | Gabarit HTML pour la liste des albums |
$template_film_strip | Variable | Gabarit HTML pour l'affichage du négatif de film sur la page des images intermédiaires (displayimage.php) |
$template_album_list_cat | Variable | Gabarit HTML pour la liste des albums |
$template_album_admin_menu | Variable | Gabarit HTML pour le menu administrateur ALBUM affiché dans la liste des albums (les éléments de menu (boutons) qui sont affichés à coté de chaque vignette d'album si l'utilisateur identifié est le propriétaire de cet album. Généralement le cas pour l'administrateur. |
$template_thumb_view_title_row | Variable | Gabarit HTML pour la ligne du titre de la vue des vignettes (titre de l'album + options de tri). C'est l'endroit pour effacer les options de tri si vous ne voulez pas les afficher. |
$template_fav_thumb_view_title_row | Variable | Gabarit HTML pour la ligne de titre de la vue des vignettes favorites (titre de l'album + téléchargement). |
$template_thumbnail_view | Variable | Gabarit HTML pour l'affichage des vignettes | La fonction theme_display_thumbnails utilise les variables et définition des conteneurs `{THUMB}`, `{CAPTION}`, `{ADMIN_MENU}` et `{TABS}`
$template_no_img_to_display | Variable | Gabarit HTML pour la vue des vignettes si il n'y a pas d'images à montrer. Si votre galerie nécessite l'enregistrement des visiteurs pour voir les images, vous devrez les encourager à le faire en modifiant le contenu de cette section du thème. | Le conteneur `{TEXT}` est complété et la variable est utilisée dans la fonction theme_no_img_to_display
$template_user_list_info_box | Variable | Gabarit HTML pour la boite d'informations de l'utilisateur dans la liste des utilisateurs |
$template_img_navbar | Variable | Gabarit HTML pour les images de la barre de navigation: La navigation en haut des images intermédiaires vous permet d'aller à la page des vignettes, de déployer/cacher la section des informations des images, démarrer le diaporama, contient le lien vers les cartes électroniques, vous permets de rapporter un fichier à l'administrateur et affiche le lien vers l'image précédente ou suivante de l'album dans lequel se trouve le visiteur. |
$template_display_media | Variable | Gabarit HTML pour l'affichage des images intermédiaires. C'est l'endroit ou les modifications d'aspect des images intermédiaires en relation avec le titre et la description doivent être ajoutées. | La fonction theme_html_picture remplis les conteneurs `{IMAGE}`, `{ADMIN_MENU}`, `{TITLE}` et `{CAPTION}` et utilise cette variable
$template_image_rating | Variable | Gabarit HTML pour la section d'évaluation des images |
$template_image_comments | Variable | Gabarit HTML pour l'affichage des commentaires |
$template_add_your_comment | Variable | Gabarit HTML pour l'affichage du formulaire pour les commentaires |
$template_cpg_die | Variable | Gabarit HTML utilisé par la fonction cpg_die, utilisée pour l'affichage des messages d'erreurs de toutes sortes au visiteur |
$template_msg_box | Variable | Gabarit HTML utilisé par la fonction msg_box qui affiche les messages aux visiteurs en haut de la page (généralement pour donner le résultat des actions faites par l'utilisateur à l'écran précédant). |
$template_ecard | Variable | Gabarit HTML pour les cartes électroniques |
$template_ecard_plaintext | Variable | Gabarit plein texte pour les cartes électroniques (en remplacement des clients ne pouvant pas afficher de mails formatés en HTML) |
$template_report | Variable | Gabarit HTML pour les rapports |
$template_report_plaintext | Variable | Gabarit texte pour les rapports (pour les clients qui ne peuvent pas afficher les mails formatés en HTML) |
$template_report_comment | Variable | Gabarit HTML pour afficher les rapports de commentaires |
$template_report_comment_email | Variable | Gabarit texte pour les rapports (pour les clients qui ne peuvent pas afficher les mails formatés en HTML) |
$template_tab_display | Variable | Gabarit utilisé pour l'affichage des tabulations |
$template_vanity | Variable | Gabarit utilisé pour le pied de page de courtoisie (Vanity) |
$template_sidebar | Variable | Gabarit HTML pour la barre latérale |
$template_zipfile_plaintext | Variable | Gabarit texte pour le fichier lisez-moi optionnel à ajouter à l'archive lors de l'utilisation du téléchargement compressé des favoris |

## Exemples

Une liste d'exemples de modification qui sont souvent demandés se trouve dans la sectionExemples de thèmes.

## Sommaire

Comprendre le processus d'éditer theme.php est vraiment important si vous voulez créer un thème personnalisé, il est donc obligatoire d'être familier avec ce qui a été expliqué sur cette page:

Pour modifier une fonctionnalité particulière d'un thème, jetez un œil à `themes/votretheme/theme.php` et faites une recherche de la section que vous souhaitez voir changer. Si cette section existe, modifier la comme bon vous semble. Si cette section n'existe pas dans votre thème personnalisé, copiez la section correspondante (et uniquement cette section) depuis `themes/sample/theme.php` dans une nouvelle ligne avant `?>` du fichier `themes/votretheme/theme.php`. Puis commencer à éditer le code vous venez de coller.