FluxBB.fr

Le site des utilisateurs francophones de FluxBB.

Vous n'êtes pas identifié(e).

#1 23-01-2012 17:44:31

Otomatic
Régisseur
Lieu : Paris, France
Inscription : 12-12-2005
Messages : 3 660
Site Web

Remplacements URL locales au forum ou au site par des chemins relatifs

Bonjour,

-- Remplacements URL locales au forum ou au site par des chemins relatifs --

Lors du passage de PunBB à FluxBB, vous avez, comme moi décidé de mettre un nom de dossier moins significatif pour le forum, par exemple, en passant de mon_site/punbb/ à mon_site/forum/ ou vous avez changé d'hébergeur et votre ancienne URL mon_site/forum/ est remplacée par mon_nouveau_site/forum/ ou vous mettez au point les modifications avec un serveur local sous mon_site_local/forum/ et vous désespérez de voir que toutes les URL internes au forum, par exemple h ttp://mon_site/punbb/viewtopic.php?id=535 pointent maintenant dans le vide et vous voudriez aussi, lorsque vous êtes en local, qu'une URL interne au forum comme h ttp://mon_site/forum/viewtopic.php?id=2546 dirige bien sur le message, mais en local, pas sur le forum réel.
Par la même occasion, et comme le principe est le même, et en accord avec les explications données ici, pourquoi ne pas en profiter pour transformer toutes les URL internes au site présentes dans les messages en liens relatifs.

Donc, dans le fichier config.php, à la fin (juste avant le ?> si il existe), vous ajouter la définition d'une fonction :

//[modif oto] Ajout constante pour transformation des URL internes
// ou des URL d'une ancienne installation chez un autre hébergeur en liens locaux
//entraine modification fonctions handle_url_tag et handle_img_tag du fichier parser.php
//Valeur de la constante LOCAL_LINKS : 
//Pour un forum dont le dossier est à la racine ('mon_site/forum') : '..'
//Si niveau supérieur, ('mon_site/dossier/forum') : '../..'
define('LOCAL_LINKS', '..');
function local_url_oto($full_url) {
  $int_url  = array(
    0 => 'http://mon_site/punbb',
    1 => 'http://mon_site',
    2 => 'http://mon_site_local',
  );
  $loc_link = array(
    0 => LOCAL_LINKS.'/forum',
    1 => LOCAL_LINKS,
    2 => LOCAL_LINKS,
  );
  return str_ireplace($int_url,$loc_link,$full_url);
}

Chez moi, mon site réel étant h ttp://aviatechno.free.fr/forum/ et mon site local h ttp://aviatechno/forum/, cela se traduit par :

//[modif oto] Ajout constante pour transformation des URL internes
// ou des URL d'une ancienne installation chez un autre hébergeur en liens locaux
//entraine modification fonctions handle_url_tag et handle_img_tag du fichier parser.php
//Valeur de la constante LOCAL_LINKS : 
//Pour un forum dont le dossier est à la racine ('mon_site/forum') : '..'
//Si niveau supérieur, ('mon_site/dossier/forum') : '../..'
define('LOCAL_LINKS', '..');
function local_url_oto($full_url) {
  $int_url  = array(
    0 => 'http://aviatechno.free.fr/punbb',
    1 => 'http://aviatechno.free.fr',
    2 => 'http://aviatechno',
  );
  $loc_link = array(
    0 => LOCAL_LINKS.'/forum',
    1 => LOCAL_LINKS,
    2 => LOCAL_LINKS,
  );
  return str_ireplace($int_url,$loc_link,$full_url);
}

Dans l'ordre de remplacement, il faut toujours commencer par l'URL de plus haut niveau.
L'élément 2 du tableau (Site local) n'est là que pour corriger les inadvertances d'écriture d'URL locale au lieu d'url réelle dans les messages.

Dans le fichier include\parser.php remplacer

  // Ok, not very pretty :-)

par :

  // [modif oto] internal URL's transformed into local links
  if(defined('LOCAL_LINKS')) $full_url = local_url_oto($full_url);
  // Ok, not very pretty :-)

et remplacer

  $img_tag = '<a href="'.$url.'">&lt;'.$lang_common['Image link'].' - '.$alt.'&gt;</a>';

par

  // [modif oto] for img internal URL's transformed into local links
  if(defined('LOCAL_LINKS')) $url = local_url_oto($url);
  $img_tag = '<a href="'.$url.'">&lt;'.$lang_common['Image link'].' - '.$alt.'&gt;</a>';

Ce n'est pas parce que l'erreur se propage qu'elle devient vérité. Gandhi
Sont différents : ça et sa - est et ait - à et a - ce et se - mes et mais ou met - été et était - c'est et ces - ce-si et ceci
La vie sans musique est tout simplement une erreur, une fatigue, un exil. Friedrich Nietzsche

Hors ligne

#2 27-01-2012 15:02:29

Mpok
Néo Admin
Inscription : 10-08-2006
Messages : 2 950
Site Web

Re : Remplacements URL locales au forum ou au site par des chemins relatifs

C'est une troisième voie (voir notre discussion précédente), qui a aussi ses avantages (un seul fichier à modifier).
Néanmoins, je ne suis pas plus convaincu.
Déjà parce que je n'ai pas testé (:cool:).
Mais aussi parce que tu fais ici une sorte d'url-rewriting qui (imo) doit être fait dans le .htaccess (lequel peut AUSSI contenir des régles qui contredisent ta fonction).

Bref, le pbm est qu'il n'existe pas de solution miracle qui marche pour tout le monde.
Mais en tout cas, "plénitude ne nuit pas", et c'est aussi une manière efficace (et élégante) de régler la chose pour certains.

Hors ligne

#3 28-01-2012 02:24:14

Spiky
Membre
Inscription : 10-04-2008
Messages : 829

Re : Remplacements URL locales au forum ou au site par des chemins relatifs

Intéressant
Merci Otomatic


I don't play against a team in particular. I play to fight against the idea to lose... Life is beautiful.
Quelque #ID et beaucoup de .CLASS

Hors ligne

Pied de page des forums