[3.0.x] Liens s'ouvrant dans une nouvelle fenêtre

Rédigé le: 21 Mai 2008 à 16:56
» Liens s'ouvrant dans une nouvelle fenêtre

Contrairement à phpBB3, phpBB2 ne gérait pas liens de la même façon : en effet, sur l'ancienne version de phpBB, les liens s'ouvraient sur une fenêtre différente. Toutefois, ce procédé n'étant pas valide en xHTML 1.0 Strict - et pour plusieurs autres raisons aussi, phpBB3 a connu une modification dans le comportement de ses liens.

Si vous préférez utiliser la méthode de phpBB2 pour votre forum en phpBB3, ce guide répertorie en détails les modifications à effectuer.


NB: Cette astuce ne marche que pour les nouveaux liens, ce n'est pas rétroactif.

» Modifier les liens automatiques

Première étape, il faut créer des liens auto-détectés (lesquels ne devront pas être entourés du BBCode URL) qui s'ouvrent dans une nouvelle fenêtre lorsqu'on a cliqué dessus. Pour cela, ouvrez le fichier includes/functions_content.php et cherchez la ligne suivante (aux alentours de la ligne 624):

Code: Tout sélectionner
$html    = "$whitespace<!-- $tag --><a$class href=\"$url\">$text</a><!-- $tag -->$append"


Et remplacez cette ligne par la suivante:

Code: Tout sélectionner
if ($type == MAGIC_URL_EMAIL)
        {
            $html    = "$whitespace<!-- $tag --><a$class href=\"$url\">$text</a><!-- $tag -->$append";    
        
}
        else 
        
{
            $html    = "$whitespace<!-- $tag --><a$class href=\"$url\" onclick=\"window.open(this.href);return false;\">$text</a><!-- $tag -->$append";
        


»BBCode URL

La prochaine étape consiste à ouvrir le fichier bbcode.html de votre style (si vous utilisez Prosilver, ceci devrait être le fichier styles/prosilver/template/bbcode.html) et cherchez la ligne suivante:

Code: Tout sélectionner
<!-- BEGIN url --><a href="{URL}" class="postlink">{DESCRIPTION}</a><!-- END url -->


Et remplacez cette ligne par la suivante:

Code: Tout sélectionner
<!-- BEGIN url --><a href="{URL}" onclick="window.open(this.href);return false;" class="postlink">{DESCRIPTION}</a><!-- END url -->


» Aidez phpBB à lire de nouveau la production

Enfin, vous devriez aussi faire le changement suivant qui permettra la production en HTML pour être parsé à nouveau par phpBB: Ouvrez le fichier includes/functions.php et remplacez cette partie que vous trouverez autour de la ligne 2740 * **...

* Pour la version 3.0.9 il faut rechercher ces lignes autour de 3416/3424
** Depuis la version 3.0.10 il faut rechercher ces lignes autour de 3454/3462
** Depuis la version 3.0.11 il faut rechercher ces lignes autour de 3462/3470


Code: Tout sélectionner
          case 'bbcode_htm':
             return array(
                '#<!\-\- e \-\-><a href="mailto:(.*?)">.*?</a><!\-\- e \-\->#',
                '#<!\-\- l \-\-><a (?:class="[\w-]+" )?href="(.*?)(?:(&amp;|\?)sid=[0-9a-f]{32})?">.*?</a><!\-\- l \-\->#',
                '#<!\-\- ([mw]) \-\-><a (?:class="[\w-]+" )?href="(.*?)">.*?</a><!\-\- \1 \-\->#',
                '#<!\-\- s(.*?) \-\-><img src="\{SMILIES_PATH\}\/.*? \/><!\-\- s\1 \-\->#',
                '#<!\-\- .*? \-\->#s',
                '#<.*?>#s',
             ); 


Remplacez cette dernière par la suivante:

Code: Tout sélectionner
          case 'bbcode_htm':
             return array(
                '#<!\-\- e \-\-><a href="mailto:(.*?)">.*?</a><!\-\- e \-\->#',
                '#<!\-\- l \-\-><a (?:class="[\w-]+" )?href="(.*?)(?:(&amp;|\?)sid=[0-9a-f]{32})?" onclick="window\.open\(this\.href\);return false;">.*?</a><!\-\- l \-\->#',
                '#<!\-\- ([mw]) \-\-><a (?:class="[\w-]+" )?href="(.*?)" onclick="window\.open\(this\.href\);return false;">.*?</a><!\-\- \1 \-\->#',
                '#<!\-\- s(.*?) \-\-><img src="\{SMILIES_PATH\}\/.*? \/><!\-\- s\1 \-\->#',
                '#<!\-\- .*? \-\->#s',
                '#<.*?>#s',
             ); 


Une fois votre fichier template mis à jour, n'oubliez pas de vider votre cache par l'intermédiaire du bouton situé sur la page d'accueil de votre panneau d'administration!

Source: Traduction de l'article de phpBB.com.