Deprecated: Function set_magic_quotes_runtime() is deprecated in /var/www/sda/3/a/fredomkb/forum/include/common.php on line 59

Warning: Cannot modify header information - headers already sent by (output started at /var/www/sda/3/a/fredomkb/forum/include/common.php:59) in /var/www/sda/3/a/fredomkb/forum/header.php on line 41

Warning: Cannot modify header information - headers already sent by (output started at /var/www/sda/3/a/fredomkb/forum/include/common.php:59) in /var/www/sda/3/a/fredomkb/forum/header.php on line 42

Warning: Cannot modify header information - headers already sent by (output started at /var/www/sda/3/a/fredomkb/forum/include/common.php:59) in /var/www/sda/3/a/fredomkb/forum/header.php on line 43

Warning: Cannot modify header information - headers already sent by (output started at /var/www/sda/3/a/fredomkb/forum/include/common.php:59) in /var/www/sda/3/a/fredomkb/forum/header.php on line 44
Projets pour Spip et PunBb / Code pour avoir une bannière aléatoire

MiniGriSpip

Petit site de test et de démonstration du squelette MiniGriSpip 1.6...
Accueil du site > Accueil forums > Squelette MiniGriSpip > Code pour avoir une bannière aléatoire
Projets pour Spip et PunBb - Petit forum de discussion autour de quelques projets personnels pour SPIP et PunBb.
     

Annonce

Bonjour et bienvenue sur les forums techniques de MiniGriSpip :-)

Quelques liens : Et Mgs alors ? - Balise #TMP - MiniGriSpip 1.6 - Mise-à-jour Calendrier

IMPORTANT : La participation à ces forums est strictement réservée aux membres inscrits, merci de votre compréhension.

ATTENTION : L'inscription au forum est désormais fermée pour cause de spams en trop grande quantité.

01/03/2011 - FredoMkb

  • Code pour avoir une bannière aléatoire

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /var/www/sda/3/a/fredomkb/forum/include/parser.php on line 552

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /var/www/sda/3/a/fredomkb/forum/include/parser.php on line 553

#1 11-04-2008 23:11:09

gigi
Novice
Date d'inscription: 06-04-2008
Messages: 21

Code pour avoir une bannière aléatoire

Bonsoir, je tente en vain de faire un code qui affiche aléatoirement une bannière, avec une police  différente à chaque affichage du site, mais la je suis dans une impasse...

Je m'explique, j'ai un fichier txt qui contient le nom d'image, une phrase, la police et la taille de celle ci.
Le code devrait lire ce fichier et l'utiliser pour générer l'affichage!

Quelqu'un aurait une piste?

Merci d'avance!

PS: je me rends bien compte que ce n'est pas un problème avec spip ou ce squelette, mais je tente en vain de trouver une réponse!

Hors ligne

 

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /var/www/sda/3/a/fredomkb/forum/include/parser.php on line 552

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /var/www/sda/3/a/fredomkb/forum/include/parser.php on line 553

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /var/www/sda/3/a/fredomkb/forum/include/parser.php on line 552

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /var/www/sda/3/a/fredomkb/forum/include/parser.php on line 553

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /var/www/sda/3/a/fredomkb/forum/include/parser.php on line 537

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /var/www/sda/3/a/fredomkb/forum/include/parser.php on line 537

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /var/www/sda/3/a/fredomkb/forum/include/parser.php on line 537

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /var/www/sda/3/a/fredomkb/forum/include/parser.php on line 537

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /var/www/sda/3/a/fredomkb/forum/include/parser.php on line 537

#2 12-04-2008 00:35:45

FredoMkb
Guide
Date d'inscription: 01-11-2006
Messages: 372
Site web

Re: Code pour avoir une bannière aléatoire

Bonjour Gigi :-)

Question qui, en effet, sort un peu du cadre de Mgs, mais j'aurai peut-être un début de piste :

Au lieu d'utiliser un fichier de type texte, pourquoi ne pas utiliser les feuilles de style pour gérer les différents affichages ?

Je n'ai pas de disponibilité suffisante pour développer maintenant, mais si ton besoin n'est pas urgent, je pourrai consacrer un peu de temps pour t'expliquer cette technique plus amplement à partir de dimanche soir (pas avant, je suis trop pris d'ici là).

à+ :-)


Fredo d;o)
"Un pas à la fois me suffit..." (Gandhi)

Hors ligne

 

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /var/www/sda/3/a/fredomkb/forum/include/parser.php on line 552

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /var/www/sda/3/a/fredomkb/forum/include/parser.php on line 553

#3 12-04-2008 09:52:00

gigi
Novice
Date d'inscription: 06-04-2008
Messages: 21

Re: Code pour avoir une bannière aléatoire

Bonjour Fredo,

Tous aide est bonne à prendre smile

Je patiente sans problème, mais je vais tous de même tenter de trouver par moi même!^^
Je n'ais pas encore les bons réflex / habitudes donc je pensais qu'un fichier txt était plus "abordable pour moi big_smile mais je ne suis pas contre l'idée du Css.

Merci

Hors ligne

 

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /var/www/sda/3/a/fredomkb/forum/include/parser.php on line 552

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /var/www/sda/3/a/fredomkb/forum/include/parser.php on line 553

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /var/www/sda/3/a/fredomkb/forum/include/parser.php on line 537

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /var/www/sda/3/a/fredomkb/forum/include/parser.php on line 537

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /var/www/sda/3/a/fredomkb/forum/include/parser.php on line 537

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /var/www/sda/3/a/fredomkb/forum/include/parser.php on line 537

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /var/www/sda/3/a/fredomkb/forum/include/parser.php on line 537

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /var/www/sda/3/a/fredomkb/forum/include/parser.php on line 614

#4 14-04-2008 02:50:55

FredoMkb
Guide
Date d'inscription: 01-11-2006
Messages: 372
Site web

Re: Code pour avoir une bannière aléatoire

Bonjour Gigi smile

Bon, comme promis (mieux vaut tard que jamais wink ), voici une petite explication d'une méthode d'affichage aléatoire en utilisant principalement les feuilles de style.

Cette méthode n'est pas la seule possible, d'autres sont envisageables et peut-être même plus efficaces, mais celle-ci a l'avantage d'être assez simple et souple d'utilisation.

Nous allons donc voir comment générer le bandeau du squelette Mgs (version 1.6) en changeant l'image de fond de manière aléatoire parmi 3 possibilités, puis comment afficher un texte descriptif suivant l'image de fond choisie.






Partons donc de trois images de fond pour le bandeau, que nous nommerons "mgs_ban_img_N.jpg" et que nous placerons dans le dossier "images" du dossier du squelette.
Le nom comprend les infos suivantes :

- "mgs" est le préfixe du squelette ;
- "ban" abreviation de "bandeau" ;
- "img" pour "image" (ça va sans dire wink ) ;
- "N" qui est le numéro de chaque image (de 1 à 3 donc pour notre exemple).






Une fois les images en place dans le bon dossier, nous allons ajouter et modifier certains codes à quelques fichiers du squelette, à savoir :

- "mes_fonctions.php" ;
- "local_fr.php" ;
- "inc/inc-bandeau.html" ;
- "mgs_style.css".

Petit conseil, fait une sauvegarde de ces fichiers, avant toute modification, afin de conserver une version originale en cas de besoin.






Commençons donc par le fichier "mes_fonctions.php", dans lequel nous allons ajouter un bout de code Php qui sera ensuite utilisé comme filtre Spip et qui servira à retourner un nombre aléatoire suivant les valeurs fournies. Le filtre se nommera "mgs_rand" et son code Php est le suivant :

Code:

function mgs_rand($min, $max) {
/* Fonction pour retourner une valeur aleatoire */
    return mt_rand($min, $max);
}

Édite donc le fichier "mes_fonctions.php" et place ce code au début (juste après la balise d'ouverture de Php "<?php"), enregistre les modifications de ce fichier.






Passons maintenant au fichier "local_fr.php", qui contient l'ensemble des textes affichés par le squelette, et où nous allons mémoriser les 3 différents textes de description que nous souhaitons afficher suivant l'image choisie aléatoirement.

Après la lettre "// B", entrons les lignes de code suivantes :

Code:

'mgs_ban_txt_1' => 'Bonjour Monde !',
'mgs_ban_txt_2' => 'Bienvenue !',
'mgs_ban_txt_3' => 'Bonne Visite !',

Nous avons donc un texte différent pour chaque image (bon, c'est vrai, il sont un peu nazes mes textes  blink , mais ce ne sont que des exemples wink ), à toi de les personnaliser selon tes besoins.

Nous verrons plus loin, avec les feuilles de style, comment afficher ces textes suivant l'image choisie.






Voyons maintenant les modifications à apporter au fichier "inc/inc-bandeau.html", qui affiche le bandeau d'en-tête du squelette.

Au départ, dans le squelette original, la première partie du code de ce fichier se présente de la manière suivante :

Code:

<div id="mgs_bandeau">
    [<div id="mgs_logo_site">(#LOGO_SITE_SPIP|#URL_SITE_SPIP|image_reduire{96})</div>]
    <div id="mgs_nom_site">[<h1>(#NOM_SITE_SPIP)</h1>]</div>
    [<div id="mgs_desc_site">(#DESCRIPTIF_SITE_SPIP)</div>]
</div>

Nous allons modifier ce code pour avoir ceci :

Code:

<div id="mgs_bandeau" class="mgs_ban_img_[(#REM|sinon{1}|mgs_rand{3})]">
    [<div id="mgs_logo_site">(#LOGO_SITE_SPIP|#URL_SITE_SPIP|image_reduire{96})</div>]
    <div id="mgs_nom_site">[<h1>(#NOM_SITE_SPIP)</h1>]</div>
    <div id="mgs_desc_site" class="mgs_ban_txt_1"><:mgs_ban_txt_1:></div>
    <div id="mgs_desc_site" class="mgs_ban_txt_2"><:mgs_ban_txt_2:></div>
    <div id="mgs_desc_site" class="mgs_ban_txt_3"><:mgs_ban_txt_3:></div>
</div>

Petite explication :

Tout d'abord nous avons ajouté une "class" au bloc principal, lequel contient le nom du style que nous allons utiliser par gérer les différents affichages.

Le nom de ce style reprend les mêmes infos que les images, mais à la place du numéro nous avons placé un bout de code qui aura pour rôle de générer un nombre aléatoire entre 1 et 3.

Ce bout de code n'est autre chose que l'utilisation sous forme de filtre du code Php que nous avons ajouté au fichier "mes_fonctions.php".

Si la syntaxe de ce code te paraît bizarre, c'est que Spip nécessite des données pour leur appliquer un filtre, c'est pourquoi on a utilisé la technique du "#REM" et du filtre "sinon" (pour plus amples explications, voir par ici et par là).

Nous avons aussi dans ce code trois blocs "div" très semblables, mais dont la "class" diffère et dont le contenu reprend les clés des valeurs ajoutées au fichier "local_fr.php", qui assureront l'affichage des différents descriptifs selon l'image choisie aléatoirement.

Enfin, petit détail mais qui a son importance, il faut ajouter, tout au début de ce fichier, le code suivant :

Code:

#CACHE{0}

Ce code demande à Spip de calculer le contenu de ce fichier à chaque rechargement de la page, sans le mettre en cache, afin que le choix aléatoire soit visible.






Enfin, voyons comment régler l'affichage de tous ces codes avec les styles.

Après avoir édité le fichier "mgs_style.css", cherchons le style nommé "#mgs_bandeau", dans lequel nous allons effacer l'attribut "background-image".

Juste après ce code, nous allons ajouter les styles suivants :

Code:

.mgs_ban_img_1 {
    background-image: url(images/mgs_ban_img_1.jpg);
}
.mgs_ban_img_2 {
    color: #ffffff;
    background-image: url(images/mgs_ban_img_2.jpg);
}
.mgs_ban_img_3 {
    color: #ffffff;
    font-size: 20px;
    background-image: url(images/mgs_ban_img_3.jpg);
}

Ces styles correspondent donc aux différentes images que nous souhaitons afficher de manière aléatoire dans le bandeau. On peut affiner l'affichage d'autres éléments contenus dans ce bloc suivant l'image choisie, c'est le cas ici pour les images 2 et 3 où le texte de description est quelque peu modifié.

Jusqu'à là tout va bien, il nous reste à gérer l'affichage des textes suivant l'image choisie aléatoirement, car pour l'instant les 3 textes vont s'afficher simultanément.

Ajoutons donc, juste après, les styles suivants :

Code:

.mgs_ban_img_1 div.mgs_ban_txt_2, .mgs_ban_img_1 div.mgs_ban_txt_3 {
    display: none;
}
.mgs_ban_img_2 div.mgs_ban_txt_1, .mgs_ban_img_2 div.mgs_ban_txt_3 {
    display: none;
}
.mgs_ban_img_3 div.mgs_ban_txt_1, .mgs_ban_img_3 div.mgs_ban_txt_2 {
    display: none;
}

Ces style n'ont qu'un simple et unique rôle, masquer les blocs "div" qui ne correspondent pas à l'image affichée, donc, lorsque l'image choisie aléatoirement est la numéro 1, il faut masquer les blocs 2 et 3, lorsque c'est la 2 qui est choisie, il faut masquer les blocs 1 et 3, et ainsi de suite...






Ne pas oublier d'enregistrer toutes les modifications de ces fichiers puis de vider le cache de Spip avant de recharger les pages du navigateur.

Et bien, nous arrivons à la fin (enfin wink ) de l'explication de cette méthode, qu'on pourrait résumer de la manière suivante :

1. Numéro aléatoire, généré par un filtre Spip, placé sur le style d'un bloc Html ;
2. Styles d'apparence et d'affichage correspondants aux différents numéros aléatoires possibles.

C'est tout simple (façon de dire wink ), il faut seulement être un minimum méthodique, surtout pour le nom des styles et des images, pour ne pas se perdre en route...

Pour voir le résultat de toute cette explication, j'ai mis en ligne un petit site Spip "bidon", juste pour que tu puisses tester le résultat obtenu par cet exemple (recharge plusieurs fois la page pour pouvoir apprécier les changements de bandeau, qui peuvent parfois être les mêmes puisque un même numéro aléatoire peut être tiré successivement), c'est par ici : BlogAs-Test

Bon, comme tu verras, je ne me suis pas trop cassé la tête pour choisir les images et les textes  blink c'est juste à titre d'exemple pour illustrer la méthode...

Voilô... si tu as des questions, n'hésites pas... à+ smile


Fredo d;o)
"Un pas à la fois me suffit..." (Gandhi)

Hors ligne

 

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /var/www/sda/3/a/fredomkb/forum/include/parser.php on line 552

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /var/www/sda/3/a/fredomkb/forum/include/parser.php on line 553

#5 14-04-2008 18:56:08

gigi
Novice
Date d'inscription: 06-04-2008
Messages: 21

Re: Code pour avoir une bannière aléatoire

top

Rien à dire, je vais tester ca se soir!

PS: je tente de modifier "selon mes gouts" le squelette ou plustot l'affichage, je ne sais pas si je peux poster cela sur ton forum pour apporter ma petite contribution!?^^ Tous en gardant à l'esprit que la forme ne sera surement pas la bonne mais le résultat oui!^^
Comme je boss sur mon site en local tous les articles que je fais pour avoir un suivit ne sont pas visible...

Hors ligne

 

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /var/www/sda/3/a/fredomkb/forum/include/parser.php on line 552

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /var/www/sda/3/a/fredomkb/forum/include/parser.php on line 553

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /var/www/sda/3/a/fredomkb/forum/include/parser.php on line 537

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /var/www/sda/3/a/fredomkb/forum/include/parser.php on line 537

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /var/www/sda/3/a/fredomkb/forum/include/parser.php on line 537

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /var/www/sda/3/a/fredomkb/forum/include/parser.php on line 537

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /var/www/sda/3/a/fredomkb/forum/include/parser.php on line 537

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /var/www/sda/3/a/fredomkb/forum/include/parser.php on line 614

#6 21-04-2008 14:15:01

FredoMkb
Guide
Date d'inscription: 01-11-2006
Messages: 372
Site web

Re: Code pour avoir une bannière aléatoire

Gigi smile

Tout ce qui pourrait éventuellement être utile pour d'autres utilisateurs du squelette, est bien-sûr le bienvenue dans ce forum.

Si c'est juste pour partager le résultat de ton développement, je te propose de publier un lien dans cette discussion...

Pour des explications sur la manière de faire tel ou tel chose, de résoudre telle ou telle limitation ou pour partager des bouts de code, etc, il suffit d'ouvrir une discussion dans le présent forum en essayant de mettre un titre suffisamment explicite...

Merci à toi smile

PS. Désolé pour cette réponse un peu tardive suite à une absence de quelques jours...


Fredo d;o)
"Un pas à la fois me suffit..." (Gandhi)

Hors ligne

 

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /var/www/sda/3/a/fredomkb/forum/include/parser.php on line 552

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /var/www/sda/3/a/fredomkb/forum/include/parser.php on line 553

#7 21-04-2008 18:44:24

gigi
Novice
Date d'inscription: 06-04-2008
Messages: 21

Re: Code pour avoir une bannière aléatoire

smile Je ne peux malheureusement pas encore partager mon résultat car je travaille en local...

Je ne sais pas si il y a des services gratuit d'hébergement?!

Mais il est claire que pour contribuer, je suis près à mettre en publication, faire des topic d'explication (à mon niveau biensur car je suis proche du zéro pour le html, css, ...).

Hors ligne

 
  • Code pour avoir une bannière aléatoire

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Suivre la vie du site RSS 2.0 | SPIP | Mgs MGS |