Exemples de thèmes - Coppermine Photo Gallery - Documentation & manuel

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

# Exemples de thèmes

Cette page contient une liste des exemples de modifications fréquemment demandées sur le forum d'aide de Coppermine. Les mots ainsi que les éléments supplémentaires peuvent différer de ceux que l'utilisateur veut ajouter. La plupart des utilisateurs cherchent les informations sur comment ajouter de la publicité (comme Google adsense) à un endroit particulier.

Nous pensons que vous avez lu et compris ce qui concerne les bases des thèmes dans Coppermine: donc, vous devez savoir ceci

- Le contenu statique qui est censé être affiché sur toutes les pages Coppermine doit se trouver dans template.html
- Les changements de style (changement des couleurs, look des bordures, etc…) peuvent être réalisés dans style.css
- Les sections de theme.php qui ont besoin d'une modification peuvent être trouvées dans le thème sample

Cette page va uniquement expliquer quelles sections de theme.php doivent être modifiées pour appliquer des fonctions particulières. Vous devrez d'abord apprendre comment copier ces sections. Si vous n'êtes pas familier avec ça, lire le thème sample - pour copier le template; le contenu de cette page suppose que vous avez lu et compris cette section.

## Sommaire

- Contenu additionnel
  - Contenu additionnel dans la page des vignettes
    - Nouvelle ligne entre les lignes de vignettes
    - Nouvelle cellule de table sur chaque page de vignettes
  - Contenu additionnel sur la page des images intermédiaires
    - Directement après les images intermédiaires
    - Directement à côté du négatif de film
  - Contenu additionnel sur la fenêtre pop-up des images originales
  - Éléments de menu supplémentaires
    - Structure de menu entier défini dans un bloc

## Contenu additionnel

Cette section explique comment ajouter du contenu additionnel à différentes places dans les affichages de Coppermine. La plupart des utilisateurs veulent afficher des publicités comme contenu additionnel, comme Google adsense ou Adbrite (comme c'est visible sur Yahoo ou ebay).

Comme exemple, nous allons ajouter une petite phrase du genre "votre contenu personnalisé". Vous pouvez bien entendu le remplacer par tout code HTML/JavaScript que vous souhaitez. Ce document ne va pas expliquer comment ajouter le code spécifique HTML pour ces programmes de publicité, ni expliquer comment ils fonctionnent. Il y a de meilleures pages sur le web pour trouver ces informations.

### Contenu additionnel dans la page des vignettes

Modifications qui auront un impact sur l'affichage de la page des vignettes.

#### Nouvelle ligne entre les lignes de vignettes

Cette modification va modifier le séparateur entre les lignes de la table qui compose la page des vignettes: une ligne va être ajoutée, dans laquelle vous pourrez ajouter du contenu textuel ou une bannière de publicité.

Ouvrez `themes/votretheme/theme.php` en utilisant un éditeur de texte, trouvez `$template_thumbnail_view` et modifiez comme indiqué ci-dessous. Si `$template_thumbnail_view` n'existe pas dans votre thème personnalisé, copiez cette section depuis le thème sample d'abord.
Dans la définition de variable pour `$template_thumbnail_view`, trouvez

    <!-- BEGIN row_separator -->
                </tr>
                <tr>
        <!-- END row_separator -->

et remplacez par

    <!-- BEGIN row_separator -->
                </tr>
                <tr>
                    <td colspan="{$CONFIG['thumbcols']}">
                        Votre contenu personnalisé
                    </td>
                </tr>
                <tr>
        <!-- END row_separator -->

#### Nouvelle cellule de table sur chaque page de vignettes

C'est un Mod plus avancé qui requière plus de modifications. Ce qu'il fait est plus subtil: il n'ajoute pas une ligne ou une colonne entière à la page des vignettes, mais remplace une des vignettes sur chaque page de vignettes par une cellule avec votre contenu personnalisé (votre publicité).

Ouvrez `themes/votretheme/theme.php` utilisez un éditeur de texte, trouvez `$template_thumbnail_view` puis modifiez comme expliqué ci-dessous. Si `$template_thumbnail_view` n'existe pas dans votre thème, il vous faudra copier la section d'abord depuis le thème sample.
Dans la définition de variable pour `$template_thumbnail_view`, trouvez

    <!-- END spacer -->

et ajoutez juste après (dans une nouvelle ligne)

    <!-- BEGIN advert -->
                <td valign="top" class="thumbnails" width ="{CELL_WIDTH}" align="center">
                        <table width="100%" cellpadding="0" cellspacing="0">
                                <tr>
                                        <td align="center">
        									Votre contenu personnalisé
                                        </td>
                                </tr>
                        </table>
                </td>
        <!-- END advert -->

Ensuite vous devrez modifier la définition de la fonction pour la fonction nommée `theme_display_thumbnails`. Dans `themes/votretheme/theme.php`, trouvez `function theme_display_thumbnails` comme indiqué ci-dessous. Si cette section particulière n'existe pas dans votre thème, copiez la définition de fonction depuis le thème sample. Pour ce faire, copiez tout ce qui se trouve à partir de (et incluant)

    /******************************************************************************
        ** Section <<<theme_display_thumbnails>>> - START
        ******************************************************************************/

jusqu'à (et y compris)

    /******************************************************************************
        ** Section <<<theme_display_thumbnails>>> - END
        ******************************************************************************/

dans une nouvelle ligne avant `?>` de `themes/votretheme/theme.php`
Dans cette définition de fonction, trouvez

        static $spacer = '';

et ajoutez dans une nouvelle ligne après

        static $advert = '';

Puis trouvez

            $spacer = template_extract_block($template_thumbnail_view, 'spacer');

et ajoutez dans une nouvelle ligne juste après

            $advert = template_extract_block($template_thumbnail_view, 'advert');

Ensuite trouvez

        $thumbcols = $CONFIG['thumbcols'];

et ajoutez dans une nouvelle ligne juste après

        $thumbrows = $CONFIG['thumbrows'];

Maintenant trouvez

        foreach($thumb_list as $thumb) {

et ajoutez avant dans une nouvelle ligne

        // Start modification "random table cell ad"
            $number_of_thumbs = count($thumb_list);
            $advert_position = rand(0,$number_of_thumbs-1);

Descendez et trouvez

            echo template_eval($thumb_cell, $params);

et remplacez cette ligne par

            // Add the advert cell
                if (defined('DISPLAY_ADS_FOR_META_ALBUMS') || is_numeric($aid) == TRUE) {
                	$display_advert = 1;
                } else {
                	$display_advert = 0;
                }
                if ($i == $advert_position && $mode == 'thumb' && $display_advert == 1) {
        	        if ($number_of_thumbs < $thumbcols * $thumbrows) { // We have room to display
        	                                                           // the extra advert cell
        	        	//print_r($thumb_list);
        	        	$thumb_list[($number_of_thumbs+1)] = $thumb;
        	        	echo template_eval($advert, $params);
        		    } else { // We do not have room for the extra advert cell,
        		             // so we'll have to replace one (i.e. drop the
        		             // content of the thumb that should usually reside
        		             // here without the ad)
        		    	echo template_eval($advert, $params);
        		    }
                } else {
                	echo template_eval($thumb_cell, $params);
                }

Vous devez vous assurez de faire ces modifications très attentivement. Il est préférable de sauvegarder votre fichier personnalisé theme.php avant au cas ou quelque chose irait mal, de manière à pouvoir revenir en arrière au cas ou.

### Contenu additionnel sur la page des images intermédiaires (displayimage.php)

L'affichage de la page displayimage.php - La page qui montre les images intermédiaires, inclue dans l'aspect général de votre site, est la page qui retiendra le plus l'attention des visiteurs, puisque vous les avez incité à cliquer sur les vignettes sur les pages précédentes pour arriver à la vue des images intermédiaires. Sur cette page, vous pouvez afficher facilement de la publicité et vous aurez certainement un bon "retour sur clic", mais soyez attentif: le site contient déjà pas mal d'informations - l'encombrer avec de plus en plus de contenu peut devenir dangereux, le visiteur peut se sentir submergé et partir.

#### Directement après les images intermédiaires

Ces instructions s'appliquent pour tout contenu additionnel qui devrait être placé au-dessus, en-dessous ou juste à côté (à droite ou à gauche) de l'image intermédiaire inclue dans votre page. gardez à l'esprit que la place à droite et à gauche risque d'être très petite, en fonction de la résolution d'écran de vos visiteurs et de la taille de vos images intermédiaires, il est donc préférable d'ajouter votre contenu additionnel plutôt au dessus ou en dessous.

Ouvrez `themes/votretheme/theme.php`, trouvez la définition de variable pour `$template_display_media` et modifiez-la comme expliqué ci-dessous. Si cette définition n'existe pas dans votre thème, copiez la d'abord depuis le thème sample, puis modifiez la.
La section qui doit être changée est la table qui habille le conteneur `{IMAGE}`, donc vous devrez modifier

               <tr>
                    <td align="center" class="display_media" nowrap="nowrap">
                            <table cellspacing="2" cellpadding="0" >
                                    <tr>
                                            <td align="center" style="{SLIDESHOW_STYLE}">
                                                    {IMAGE}
                                            </td>
                                    </tr>
                            </table>
                    </td>
                </tr>

Modifiez uniquement le contenu de la table pour que cela corresponde à vos souhaits. Pour ajouter du contenu en dessous, vous aurez à changer ces lignes en

               <tr>
                    <td align="center" class="display_media" nowrap="nowrap">
                            <table cellspacing="2" cellpadding="0" >
                                    <tr>
                                            <td align="center" style="{SLIDESHOW_STYLE}">
                                                    {IMAGE}
                                            </td>
                                            <td align="center" style="{SLIDESHOW_STYLE}">
                                                    Votre contenu personnalisé
                                            </td>
                                    </tr>
                            </table>
                    </td>
                </tr>

#### Directement à côté du négatif de film

Ces instructions s'appliquent à tout contenu additionnel qui devra se placer avant ou après le négatif de film sur la page si l'option correspondante "voir le négatif de film" est activé dans la configuration de Coppermine.

Ouvrez `themes/votretheme/theme.php`, trouvez la définition de fonction pour `theme_display_film_strip` et modifiez-la comme indiqué ci-dessous. Si cette section n'existe pas dans votre thème, vous devrez la copier d'abord depuis le thème sample avant de la modifier.
La section qui doit être changée est à la fin là ou le gabarit est finalement généré. Trouvez

        echo '<div id="filmstrip">';
        starttable($CONFIG['picture_table_width']);
        echo template_eval($template, $params);
        endtable();
        echo '</div>';

Pour ajouter votre contenu additionnel juste avant le négatif de film, vous devrez changer cette portion de code comme ceci

        echo '<div id="filmstrip">';
        echo <<< EOT
        Votre contenu personnalisé
    EOT;
        starttable($CONFIG['picture_table_width']);
        echo template_eval($template, $params);
        endtable();
        echo '</div>';

### Contenu additionnel sur la fenêtre pop-up des images originales

La fenêtre pop-up qui s'affiche lorsque vous cliquez sur l'image intermédiaire peut aussi contenir du contenu additionnel (comme de la publicité). Toutefois, vous devrez vérifier s’il reste assez de place sur l'écran pour ajouter plus de contenu. En d'autres termes: n'affichez du contenu additionnel dans la fenêtre pop-up que si vos images originales ont une dimension inférieure à la résolution minimale de l'écran de vos visiteurs. Si vous ne pouvez affirmer de manière sure quelle est cette taille, vous pouvez considérer 800 x 600 pixels comme un minimum. Rappelez vous aussi qu'avec les téléphones portables ou autres appareils mobiles ayant accès à internet, vous ne serez jamais sur qu'il n'y a pas de résolution plus petite.

Si vous devez placer une publicité dans la fenêtre pop-up des images originales, utilisez de la publicité textuelle plutôt qu'une bannière. Cet avertissement dit, voici comment ajouter du contenu additionnel à la fenêtre pop-up des images originales:

Ouvrez `themes/votretheme/theme.php`, trouvez

    // Display the full size image
    function theme_display_fullsize_pic()

et modifiez cette définition de fonction comme indiqué ci-dessous. Si cet élément de code n'existe pas dans votre thème, copiez la définition de fonction depuis le thème sample, à partir de

    /******************************************************************************
    ** Section <<<theme_display_fullsize_pic>>> - START
    ******************************************************************************/

et se terminant par

    /******************************************************************************
    ** Section <<<theme_display_fullsize_pic>>> - END
    ******************************************************************************/

Pour ajouter le code Adsense ou tout autre contenu personnalisé, ajoutez-le là ou vous le souhaitez dans la section HTML du code mentionné ci-dessus, exemple, juste après la balise de fermeture du conteneur div.
Dans ce cas particulier, vous devrez contourner un autre problème: la taille de la fenêtre est calculée en fonction de la taille de l'image. C'est pourquoi, si vous ajoutez du contenu à la fenêtre, vous aurez à vous assurer que les dimensions de la fenêtre seront augmentées de la taille utilisée par le contenu ajouté. Les dimensions de la fenêtre sont calculées dans la fonction `function theme_html_picture()`. La même méthode s'applique: cherchez la définition de la fonction dans votre thème (`themes/votretheme/theme.php`) Si elle existe, modifié la comme indiqué ci-dessous, sinon, vous devrez la copier/coller depuis themes/sample/theme.php dans une nouvelle ligne avant `?>` de `themes/votretheme/theme.php`.
Le code que vous devez modifier est

                $winsizeX = $CURRENT_PIC_DATA['pwidth'] + $CONFIG['fullsize_padding_x'];  //the +'s are the mysterious FF and IE paddings
                $winsizeY = $CURRENT_PIC_DATA['pheight'] + $CONFIG['fullsize_padding_y']; //the +'s are the mysterious FF and IE paddings

Modifiez comme vous le souhaitez - vous devrez augmenter la valeur des variables de la valeur de l'espace en pixel nécessaire à votre ajout. Par exemple: si vous décidez d'ajouter votre code Adsense en haut de la fenêtre pop-up et que la publicité utilise 200 pixels, changez

                $winsizeX = $CURRENT_PIC_DATA['pwidth'] + $CONFIG['fullsize_padding_x'];  //the +'s are the mysterious FF and IE paddings
                $winsizeY = $CURRENT_PIC_DATA['pheight'] + $CONFIG['fullsize_padding_y']; //the +'s are the mysterious FF and IE paddings

en

                $winsizeX = $CURRENT_PIC_DATA['pwidth'] + $CONFIG['fullsize_padding_x'];  //the +'s are the mysterious FF and IE paddings
                $winsizeY = $CURRENT_PIC_DATA['pheight'] + $CONFIG['fullsize_padding_y'] + 200; //the +'s are the mysterious FF and IE paddings

### Éléments de menu supplémentaires

Cette section explique comment ajouter des éléments de menu à votre menu personnalisé. Si vous besoin d'un seul élément de menu supplémentaire (non pas deux ou trois en plus), votre meilleure option est d'utiliser les options de configuration "nom du lien du menu personnalisé"/"URL du menu personnalisé", car cette méthode ne vous obligent pas à modifier fichiers et est donc moins compliquée. Si un seul élément de menu supplémentaire vous suffit, il n'y a pas besoin de lire cette page – à la place, suivez les liens ci-dessus qui expliquent les options de configuration. Si vous écrivez un plugin et non pas un thème personnalisé, regradez la section "ajout d'un bouton à Coppermine", puisque la méthode pour ajouter un élément de menu en utilisant un plugin diffère de la méthode pour ajouter un menu lors de la conception un thème de votre choix.
Vous continuez à lire, alors cela signifie que vous avez besoin de plus d’éléments de menu personnalisé ou que vous ayez besoin d'un contrôle plus fin sur les éléments de menu.
La façon dont Coppermine crée des éléments de menu dans cpg1.5.x est en quelque sorte entre deux méthodes: la façon classique dont les éléments de menu de Coppermine ont été créés dans les versions précédentes cpg1.5.x est prise en charge ainsi que les méthodes les plus avancés qui permettent une expansion dynamique, des menus. C'est pourquoi la méthode pour ajouter des nouveaux éléments au menu diffère selon le type de technique de création de menu que votre thème personnalisé utilise, c'est à dire sur moteur de thème sur lequel il est basé. Il est prévu de modifier cela dans les futures versions, mais pour l'instant, nous aurons à vivre avec ce qui est là.
Les sections ci-dessous semblent être très longue, mais n'ayez pas peur: vous n'avez pas de lire et comprendre tout ça, mais seulement les trucs qui s'appliquent à votre thème. Cette section est en fait divisée en différentes sous-sections qui expliquent comment les menus travaillent pour les différents types de thèmes.
Pour être vous permettre de comprendre ce dont nous allons parler ci-dessous, vous devez comprendre qu'il y a les types de menus suivants dans Coppermine:

- Structure classique:
  Séparer les contôles de menus administrateurs (avec des liens qui pointent vers configuration de la galerie, configuration des catégories, gestion des utilisateurs, configuration des groupes etc.), Les menus principaux (contenants un lien vers la page d’accueil, un formulaire de contact, la barre latérale, le téléchargement de fichiers, connexion / déconnexion, etc) et les sous-menus (contenants un lien vers la liste des albums, les dernières photos téléchargée, les derniers commentaires, les plus regardées, les favoris, un moteur de recherche etc)
  En règle générale, tous les thèmes qui viennent avec le pack de Coppermine, sauf le nouveau thème curve sont conçues de cette manière.
- Structure imbriquée:
  L'expansion, la structure des menus imbriqués qui déroule tous les éléments de menu possible dans un seul menu et la réorganisation de la position des éléments de menu. Actuellement, seul le thème curve et la contribution de thèmes de certains utilisateurs qui sont basés sur curve sont conçues de cette manière.

#### Structure de menu entier défini dans un bloc

Un exemple typique de la structure du menu entier défini dans un bloc variable est le thème "Hardwired". Pour comprendre le fonctionnement pour votre thème personnalisé utiliser la même technique, ouvrez `themes/votretheme/theme.php` avec un éditeur de texte et trouvez la ligne qui commence par `$template_sys_menu =` pour les menus principaux et/ou `$template_sub_menu =` pour les sous-menus. Déterminer le menu que vous voulez modifier - dans cet exemple, nous allons parler d’un menu principal, mais tout ce qui sera dit ici s'applique pour également pour un sous-menu.
A l'intérieur du menu principal, jetez un œil à la teneur de la définition: si votre thème personnalisé tombe dans la catégorie "ensemble de la structure de menu défini dans un bloc", alors vous devriez trouver une ou plusieurs lignes de code dans le menu principal qui correspond à chaque élément de menu existant actuellement dans votre menu personnalisé lors de la recherche des sorties de votre galerie. Pour le thème câblé, le code ressemble à ceci: // HTML template for sys menu $template_sys_menu = <<< EOT <table border="0" cellpadding="0" cellspacing="0"> <tr> <!-- BEGIN home --> <td><img name="spacer" src="images/spacer.gif" width="5" height="25" border="0" alt="" /></td> <td><img name="buttonlefthome" src="themes/hardwired/images/buttonlefthome.gif" width="17" height="25" border="0" alt="" /></td> <td style="background: url(themes/hardwired/images/buttoncenter.gif);"> <a href="{HOME_TGT}" title="{HOME_TITLE}">{HOME_LNK}</a> </td> <td><img name="buttonright" src="themes/hardwired/images/buttonright.gif" width="7" height="25" border="0" alt="" /></td> <!-- END home --> <!-- BEGIN contact --> <td><img name="spacer" src="images/spacer.gif" width="5" height="25" border="0" alt="" /></td> <td><img name="buttonleftcontact" src="themes/hardwired/images/buttonleftcontact.gif" width="17" height="25" border="0" alt="" /></td> <td style="background: url(themes/hardwired/images/buttoncenter.gif);"> <a href="{CONTACT_TGT}" title="{CONTACT_TITLE}">{CONTACT_LNK}</a> </td> <td><img name="buttonright" src="themes/hardwired/images/buttonright.gif" width="7" height="25" border="0" alt="" /></td> <!-- END contact --> <!-- BEGIN my_gallery --> <td><img name="spacer" src="images/spacer.gif" width="5" height="25" border="0" alt="" /></td> <td><img name="buttonleftmy" src="themes/hardwired/images/buttonleftmy.gif" width="17" height="25" border="0" alt="" /></td> <td style="background: url(themes/hardwired/images/buttoncenter.gif);"> <a href="{MY_GAL_TGT}" title="{MY_GAL_TITLE}">{MY_GAL_LNK}</a> </td> <td><img name="buttonright" src="themes/hardwired/images/buttonright.gif" width="7" height="25" border="0" alt="" /></td> <!-- END my_gallery --> <!-- BEGIN allow_memberlist --> <td><img name="spacer" src="images/spacer.gif" width="5" height="25" border="0" alt="" /></td> <td><img name="buttonleft" src="themes/hardwired/images/buttonleftmemb.gif" width="17" height="25" border="0" alt="" /></td> <td style="background: url(themes/hardwired/images/buttoncenter.gif);"> <a href="{MEMBERLIST_TGT}" title="{MEMBERLIST_TITLE}">{MEMBERLIST_LNK}</a> </td> <td><img name="buttonright" src="themes/hardwired/images/buttonright.gif" width="7" height="25" border="0" alt="" /></td> <!-- END allow_memberlist --> <!-- BEGIN my_profile --> <td><img name="spacer" src="images/spacer.gif" width="5" height="25" border="0" alt="" /></td> <td><img name="buttonleft" src="themes/hardwired/images/buttonleft.gif" width="17" height="25" border="0" alt="" /></td> <td style="background: url(themes/hardwired/images/buttoncenter.gif);"> <a href="{MY_PROF_TGT}" title="{MY_PROF_LNK}">{MY_PROF_LNK}</a> </td> <td><img name="buttonright" src="themes/hardwired/images/buttonright.gif" width="7" height="25" border="0" alt="" /></td> <!-- END my_profile --> <!-- BEGIN enter_admin_mode --> <td><img name="spacer" src="images/spacer.gif" width="5" height="25" border="0" alt="" /></td> <td><img name="buttonleftad" src="themes/hardwired/images/buttonleftad.gif" width="17" height="25" border="0" alt="" /></td> <td style="background: url(themes/hardwired/images/buttoncenter.gif);"> <a href="{ADM_MODE_TGT}" title="{ADM_MODE_TITLE}">{ADM_MODE_LNK}</a> </td> <td><img name="buttonright" src="themes/hardwired/images/buttonright.gif" width="7" height="25" border="0" alt="" /></td> <!-- END enter_admin_mode --> <!-- BEGIN leave_admin_mode --> <td><img name="spacer" src="images/spacer.gif" width="5" height="25" border="0" alt="" /></td> <td><img name="buttonleftad" src="themes/hardwired/images/buttonleftad.gif" width="17" height="25" border="0" alt="" /></td> <td style="background: url(themes/hardwired/images/buttoncenter.gif);"> <a href="{USR_MODE_TGT}" title="{USR_MODE_TITLE}">{USR_MODE_LNK}</a> </td> <td><img name="buttonright" src="themes/hardwired/images/buttonright.gif" width="7" height="25" border="0" alt="" /></td> <!-- END leave_admin_mode --> <!-- BEGIN sidebar --> <td><img name="spacer" src="images/spacer.gif" width="5" height="25" border="0" alt="" /></td> <td><img name="buttonleftad" src="themes/hardwired/images/buttonleftmemb.gif" width="17" height="25" border="0" alt="" /></td> <td style="background: url(themes/hardwired/images/buttoncenter.gif);"> <a href="{SIDEBAR_TGT}" title="{SIDEBAR_TITLE}">{SIDEBAR_LNK}</a> </td> <td><img name="buttonright" src="themes/hardwired/images/buttonright.gif" width="7" height="25" border="0" alt="" /></td> <!-- END sidebar --> <!-- BEGIN upload_pic --> <td><img name="spacer" src="images/spacer.gif" width="5" height="25" border="0" alt="" /></td> <td><img name="buttonleftup" src="themes/hardwired/images/buttonleftup.gif" width="17" height="25" border="0" alt="" /></td> <td style="background: url(themes/hardwired/images/buttoncenter.gif);"> <a href="{UPL_PIC_TGT}" title="{UPL_PIC_TITLE}">{UPL_PIC_LNK}</a> </td> <td><img name="buttonright" src="themes/hardwired/images/buttonright.gif" width="7" height="25" border="0" alt="" /></td> <!-- END upload_pic --> <!-- BEGIN register --> <td><img name="spacer" src="images/spacer.gif" width="5" height="25" border="0" alt="" /></td> <td><img name="buttonleft" src="themes/hardwired/images/buttonleft.gif" width="17" height="25" border="0" alt="" /></td> <td style="background: url(themes/hardwired/images/buttoncenter.gif);"> <a href="{REGISTER_TGT}" title="{REGISTER_TITLE}">{REGISTER_LNK}</a> </td> <td><img name="buttonright" src="themes/hardwired/images/buttonright.gif" width="7" height="25" border="0" alt="" /></td> <!-- END register --> <!-- BEGIN login --> <td><img name="spacer" src="images/spacer.gif" width="5" height="25" border="0" alt="" /></td> <td><img name="buttonleft" src="themes/hardwired/images/buttonleft.gif" width="17" height="25" border="0" alt="" /></td> <td style="background: url(themes/hardwired/images/buttoncenter.gif);"> <a href="{LOGIN_TGT}" title="{LOGIN_LNK}">{LOGIN_LNK}</a> </td> <td><img name="buttonright" src="themes/hardwired/images/buttonright.gif" width="7" height="25" border="0" alt="" /></td> <!-- END login --> <!-- BEGIN logout --> <td><img name="spacer" src="images/spacer.gif" width="5" height="25" border="0" alt="" /></td> <td><img name="buttonleftout" src="themes/hardwired/images/buttonleftout.gif" width="17" height="25" border="0" alt="" /></td> <td style="background: url(themes/hardwired/images/buttoncenter.gif);"> <a href="{LOGOUT_TGT}" title="{LOGOUT_LNK}">{LOGOUT_LNK}</a> </td> <td><img name="buttonright" src="themes/hardwired/images/buttonright.gif" width="7" height="25" border="0" alt="" /></td> <!-- END logout --> </tr> </table> EOT; , mais cela pourrait tout aussi bien ressembler à ceci pour un autre thème: // HTML template for sys menu $template_sys_menu = <<< EOT <ul> <!-- BEGIN home --> <li> <a href="{HOME_TGT}" title="{HOME_TITLE}">{HOME_LNK}</a> </li> <!-- END home --> <!-- BEGIN contact --> <li> <a href="{CONTACT_TGT}" title="{CONTACT_TITLE}">{CONTACT_LNK}</a> </li> <!-- END contact --> <!-- BEGIN my_gallery --> <li> <a href="{MY_GAL_TGT}" title="{MY_GAL_TITLE}">{MY_GAL_LNK}</a> </li> <!-- END my_gallery --> <!-- BEGIN allow_memberlist --> <li> <a href="{MEMBERLIST_TGT}" title="{MEMBERLIST_TITLE}">{MEMBERLIST_LNK}</a> </li> <!-- END allow_memberlist --> <!-- BEGIN my_profile --> <li> <a href="{MY_PROF_TGT}" title="{MY_PROF_LNK}">{MY_PROF_LNK}</a> </li> <!-- END my_profile --> <!-- BEGIN enter_admin_mode --> <li> <a href="{ADM_MODE_TGT}" title="{ADM_MODE_TITLE}">{ADM_MODE_LNK}</a> </li> <!-- END enter_admin_mode --> <!-- BEGIN leave_admin_mode --> <li> <a href="{USR_MODE_TGT}" title="{USR_MODE_TITLE}">{USR_MODE_LNK}</a> </li> <!-- END leave_admin_mode --> <!-- BEGIN sidebar --> <li> <a href="{SIDEBAR_TGT}" title="{SIDEBAR_TITLE}">{SIDEBAR_LNK}</a> </li> <!-- END sidebar --> <!-- BEGIN upload_pic --> <li> <a href="{UPL_PIC_TGT}" title="{UPL_PIC_TITLE}">{UPL_PIC_LNK}</a> </li> <!-- END upload_pic --> <!-- BEGIN register --> <li> <a href="{REGISTER_TGT}" title="{REGISTER_TITLE}">{REGISTER_LNK}</a> </li> <!-- END register --> <!-- BEGIN login --> <li> <a href="{LOGIN_TGT}" title="{LOGIN_LNK}">{LOGIN_LNK}</a> </li> <!-- END login --> <!-- BEGIN logout --> <li> <a href="{LOGOUT_TGT}" title="{LOGOUT_LNK}">{LOGOUT_LNK}</a> </li> <!-- END logout --> </ul> EOT; (C'est ce que nous allons utiliser dans cet exemple par souci de concision).
Comme vous pouvez le voir, chaque élément de menu est encapsulé dans un commentaire de construction comme

    <!-- BEGIN menu_item_name -->

et

    <!-- END menu_item_name -->

Bien que cela ressemble à de simples commentaires HTML qui ne seront pas affichés dans le navigateur, ils sont là pour une raison: avec eux, Coppermine détermine si un élément de menu en particulier, doit être traité. Le script de Coppermine (ce qui est écrit en PHP et n'est donc pas «masqué» dans la mesure où les commentaires HTML sont concernés) est à la recherche de ces blocs de commentaires (avec les mots-clés `BEGIN` et `END` suivie par le nom de l'élément du menu, qui est un mot-clé aussi bien dans ce processus). L'intérieur de chaque bloc de code correspond à un élément de menu, vous pouvez voir l’espace réservé au symbole aussi bien que les accolades qui seront remplacés par du contenu réel lorsque le menu est effectivement transformée – vous en saurez plus sur cela plus tard.
Cela étant dit: si vous envisagez de supprimer un élément de menu en particulier, supprimer uniquement le balisage HTML entre les commentaires, mais laissez les commentaires autour d'eux intacts; si vous envisagez de supprimer le bouton home par exemple (ce qui est quelque chose que vous ne voudriez pas faire dans la "vraie vie"), trouvez

    <!-- BEGIN home -->
                                <li>
                                        <a href="{HOME_TGT}" title="{HOME_TITLE}">{HOME_LNK}</a>
                                </li>
    <!-- END home -->

et les remplacer par

    <!-- BEGIN home -->
    <!-- END home -->

Pour ajouter effectivement un élément propre à votre menu, vous devrez ajouter un bloc de code personnalisé au bon endroit, c'est à dire que vous avez à le placer correctement dans la mesure où la nidification est concerné: il doit résider entre deux menu existants et non l'intérieur de l’un d'eux. En d'autres termes, le code de l’élément du menu personnalisé doit résider après une ligne de commentaire qui termine un menu enregistré (par exemple `<!-- END contact -->`) et avant une autre ligne de code qui démarre le menu enregistré suivant (par exemple `<!-- BEGIN my_gallery -->`). Dans notre exemple, nous voulons ajouter un lien dans le menu qui pointe vers notre forum. L'élément du menu est destiné à se manifester entre le lien et le formulaire de contact du symbole de menu suivant. Pour ce faire, trouver

        <!-- END contact -->

et ajouter après (dans une ligne à part)

        <!-- BEGIN custom_forum_link -->
                                <li>
                                        <a href="../forum/" title="go to the forum">Forum</a>
                                </li>
        <!-- END custom_forum_link -->

Enregistrez vos modifications et téléchargez-les à partir de votre copie locale sur votre serveur web le cas échéant - vous devriez voir les changements immédiatement. Si vous êtes satisfait de ce que vous avez, vous pouvez arrêter de lire - vous venez de comprendre comment ajouter un élément de menu personnalisé à votre thème.
Si vous voulez plus de fonctionnalités (ex: si le lien n'est pas destiné à fonctionner tout le temps, mais seulement si une certaine condition s'applique, par exemple, si le visiteur est connecté) ou si vous voulez pleinement internationaliser le lien afin de répondre aux besoins des visiteurs de différents les pays avec des langues différentes, lisez la suite - nous allons essayer de vous expliquer comment réaliser tout cela.
Afin de comprendre ce qui se passe, nous allons devoir regarder ailleurs "sous le capot" de Coppermine pour voir comment cela fonctionne: les éléments de menu "régulier" contiennent (comme expliqué ci-dessus) un espace réservé pour les symboles qui se remplissent ailleurs.
à suivre...