Il y a un moment, je lisais un message d'OpenGuppY, qui annonçait le changement de skin de son site et voulait mettre en place, ce qu'il appelait "le fil d'Ariane"
Vous savez le petit message "Vous êtes ici"
Ayant introduit cela dans une de mes skins, je ne me doutais pas que cela pouvait intéresser certains et comme je voyais que notre ami, semblait rencontrer quelques menus soucis, j'avais pensé qu'il faudrait que je mette cette astuce sur mon site
Ben voilà donc préambule de ce petit truc
Je vous propose donc de vous munir d'un traitement de texte basique, style Notepad ou autre et de patience, parce que sur ce coup vous allez aussi bosser un peu.
Allons y ................................
Nous allons donc commencer par créer un fichier : ariane.inc
Début du fichier : (les commentaires sont pour vous, il est inutile de les copier dans le fichier. Je donnerais aussi le fichier complet en fin de messages)
if (stristr($_SERVER["SCRIPT_NAME"], "ariane.inc")) {
header("location:../index.php");
die();
}
Commentaires : nous indiquons que le fichier ariane.inc, ne devra en aucun cas se retrouver dans la barre de lien, si c'est le cas, on peut considérer cela comme une éventuelle attaque ou intrusion et en ce cas, on redirige vers index.php du site avec l'instruction header("location:../index.php");
A partir de là, il nous faut préparer ce que nous voulons faire, à savoir lire l'url qui va être affichée lors d'un clic sur notre site pour pouvoir indiquer au visiteur sa position.
Pour cela, il existe différente manière de faire et nous pourrions parfaitement nous servir d'une variable déjà présente dans GuppY
Plus exactement dans le fichier inc/include.inc et qui est la variable $endurl
Seulement voilà, cette variable fait référence à strip_tags($REQUEST_URI);, donc URL demandée, mais lorsqu'on arrive sur un site, souvent index.php, ne s'affiche pas comme url dans la barre de lien
Il nous faut donc trouver autre chose :
Nous allons donc employer la fonction $PATH_TRANSLATED, qui elle nous donne toute l'url
Suite de la construction de notre fichier :
if ($lng == $lang[0]) {$i = 0;$j = 0;}else {$i = 10;$j = 1;}
commentaire : grâce à l'introduction de ces quelques variables, qui existent déjà dans GuppY, nous allons pouvoir avoir un affichage des noms de nos liens dans deux langues, dès lors que votre site utilise une seconde langue
L'un des morceaux de bravoure :
if (strpos($PATH_TRANSLATED, "index.php") !== false){
$sitemap=CHEMIN."index.php?lng=".$lng;
$nommap=$nom[$i+0];
}
commentaire : je n'explique que ce bout de code pour les liens éventuellement mis en place par vos soins dans GuppY et je vous donnerais également les explications pour les plugins, le reste sera dans le fichier global.
if (strpos($PATH_TRANSLATED, "index.php") !== false){
Heu !!!! C'est quoi que çà
strpos() retourne la position numérique de la première occurrence de index.php dans la chaîne de caractères $PATH_TRANSLATED.
En clair strpos(), va nous dire si index.php est contenu dans l'url demandée
Si c'est le cas (!== false){ :
Alors les variables $sitemap et $nommap valent :
$sitemap=CHEMIN."index.php?lng=".$lng;
$nommap=$nom[$i+0];
Simple, non ???
$sitemap, vas nous donner l'url pour notre lien et $nommap, reprend très exatement la même variable que celle existante pour former votre barre de lien
Pour ce $nommap elle devrait correspondre dans une grande majorité des cas à Accueil ou Home
Nous pourrions donc déjà pratiquement afficher "Vous êtes sur la page : Accueil"
Nous allons continuer par la construction de nos variables à partir des plugins
Car si nous savons très exactement les liens qui peuvent apparaître dans un GuppY de base, il n'en va pas de même dès lors que vous avez des plugins.
Dans un GuppY de base, nous avons index, livre d'or, liens, forum, stats, photos ......
Et dans les plugins ??????????????????
Il va donc falloir connaître les plugins installés, comme le fait GuppY pour les mettre sur la barre des liens !
Ce qui nous donne ce code :
$PluginsDB = ReadDBFields(DBPLUGIN);
for ($i = 0; $i < count($PluginsDB); $i++) {
$plugin_bar_name = "";
@include(CHEMIN."plugins/".$PluginsDB[$i][0]."/plugin.inc");
if (strpos($PATH_TRANSLATED, $plugin_bar_url) !== false) {
$sitemap=CHEMIN."plugins/".$PluginsDB[$i][0]."/".$plugin_bar_url."?lng=".$lng;
$nommap=$plugin_bar_name;
}
}
Explication :
$PluginsDB = ReadDBFields(DBPLUGIN);
$PluginsDB, est la variable qui lit le contenu de la base de données ou figure les nom des plugins que vous avez positionnés sur votre site, grâce à la fonction propre à GuppY ReadDBFields();
DBPLUGIN, étant le nom de cette base à lire
for ($i = 0; $i < count($PluginsDB); $i++) {
On fait une boucle pour lire tous le fichier DBPLUGIN
Cette boucle va lire de la ligne 0 à la ligne XXXXX
$plugin_bar_name = "";
Dès le départ on vide la variable $plugin_bar_name, pour ne pas y avoir d'éventuelles interférences avec cette variable au cas où elle serait déjà présente dans les autres scripts GuppY.
@include(CHEMIN."plugins/".$PluginsDB[$i][0]."/plugin.inc");
On va inclure tous les fichiers plugins.inc contenus dans le fichier de base de données DBPLUGIN
Tous ces fichiers contiennent 3 variables :
$plugin_bar_name = "";
$plugin_bar_url = "";
$plugin_bar_icon = "";
Ce sont les deux premières variables de ces fichiers qui vont nous donner les liens que nous recherchons.
if (strpos($PATH_TRANSLATED, $plugin_bar_url) !== false) {
$sitemap=CHEMIN."plugins/".$PluginsDB[$i][0]."/".$plugin_bar_url."?lng=".$lng;
$nommap=$plugin_bar_name;
}
Vous aurez remarqué que nous nous servons du même code, pour trouver les valeurs de nos variables, à la différence près que pour l'index, nous connaissions parfaitement le nom à afficher ( Accueil ) et le lien (index.php)
Mais ce code :
$sitemap=CHEMIN."plugins/".$PluginsDB[$i][0]."/".$plugin_bar_url."?lng=".$lng;
$nommap=$plugin_bar_name;
va nous retourner ce dont nous avons besoin
Ben voilà, c'est terminé
En dessous je vous donne le fichier complet
Ce que vous attendiez depuis le début :
if (stristr($_SERVER["SCRIPT_NAME"], "ariane.inc")) {
header("location:../index.php");
die();
}
if ($lng == $lang[0]) {$i = 0;$j = 0;}else {$i = 10;$j = 1;}
if (strpos($PATH_TRANSLATED, "index.php") !== false){
$sitemap=CHEMIN."index.php?lng=".$lng;
$nommap=$nom[$i+0];
}
if (strpos($PATH_TRANSLATED, "news.php") !== false){
$sitemap=CHEMIN."news.php?lng=".$lng;
$nommap=$nom[$i+7];
}
if (strpos($PATH_TRANSLATED, "photorama.php") !== false){
$sitemap=CHEMIN."photorama.php?lng=".$lng;
$nommap=$nom[$i+2];
}
if (strpos($PATH_TRANSLATED, "photos.php") !== false){
$sitemap=CHEMIN."photos.php?lng=".$lng;
$nommap=$nom[$i+2];
}
if (strpos($PATH_TRANSLATED, "download.php") !== false){
$sitemap=CHEMIN."download.php?lng=".$lng;
$nommap=$nom[$i+1];
}
if (strpos($PATH_TRANSLATED, "links.php") !== false){
$sitemap=CHEMIN."links.php?lng=".$lng;
$nommap=$nom[$i+3];
}
if (strpos($PATH_TRANSLATED, "faq.php") !== false){
$sitemap=CHEMIN."faq.php?lng=".$lng;
$nommap=$nom[$j+24];
}
if (strpos($PATH_TRANSLATED, "guestbk.php") !== false){
$sitemap=CHEMIN."guestbk.php?lng=".$lng;
$nommap=$nom[$i+9];
}
if (strpos($PATH_TRANSLATED, "fortopic.php") !== false){
$sitemap=CHEMIN."fortopic.php?lng=".$lng;
$nommap=$nom[$j+22];
}
if (strpos($PATH_TRANSLATED, "forum.php") !== false){
$sitemap=CHEMIN."forum.php?lng=".$lng;
$nommap=$nom[$j+22];
}
if (strpos($PATH_TRANSLATED, "stats.php") !== false){
$sitemap=CHEMIN."stats.php?lng=".$lng;
$nommap=$nom[$j+26];
}
$PluginsDB = ReadDBFields(DBPLUGIN);
for ($i = 0; $i < count($PluginsDB); $i++) {
$plugin_bar_name = "";
@include(CHEMIN."plugins/".$PluginsDB[$i][0]."/plugin.inc");
if (strpos($PATH_TRANSLATED, $plugin_bar_url) !== false) {
$sitemap=CHEMIN."plugins/".$PluginsDB[$i][0]."/".$plugin_bar_url."?lng=".$lng;
$nommap=$plugin_bar_name;
}
}
Super !
Et j'en fais quoi de ce fichier maintenant ????
Je suggère de le mettre dans le dossier inc et de l'inclure dans le fichier de votre skin
Il vous ouvrir le fichier ../../inc/img/skin/votre skin /skin.inc et d'ajouter juste avant la première variable de celui-ci la ligne :
include(CHEMIN."inc/ariane.inc");
Ensuite à vous de voir ou vous voulez positionner le petit "Vous êtes => " et d'y ajouter :
.<a class="menu" href="<?php echo $sitemap; ?>"><?php echo $nommap; ?></a>.
(Sans les points rouges du début et de fin de ligne)
Bien entendu, si vous avez des questions .......