Voici une méthode très simple pour que les liens externes se trouvant sur les pages de votre forum s'ouvrent dans une nouvelle fenêtre (ou onglet en fonction du navigateur).
La seule façon de faire cela en restant valide XHML strict est d'utiliser du javascript. La plupart des méthode existantes passent par une modification de la source des liens. Cela implique que le code javascript est ajouté à chaque lien par le serveur, alourdissant d'autant la page, et qu'il faut modifier toutes les source de liens possible pour que la solution soit complète.
Cette méthode à l'inverse ne va impliquer que l'ajout d'une fonction javascript qui déléguera au navigateurs le soins d'ajouter le code nécessaire à l'ouverture de tous les liens externes dans une nouvelle fenêtre.
Simple et efficace, la méthode peut facilement être utilisée pour n'importe quelle page web.
Ouvrir :
- Code: Tout sélectionner
style/prosilver/template/forum_fn.js
Ajouter en fin de fichier :
- Code: Tout sélectionner
// www.phpBB-SEO.com SEO TOOLKIT BEGIN
// Open external links in new window in a XHTML 1.x compliant way.
function nw_external() {
var current_domain = document.domain;
if (!current_domain || !document.getElementsByTagName) return;
var hrefels = new Array;
var hrefelslen = 0;
var hrefinner = '';
hrefels = document.getElementsByTagName("a");
hrefelslen = hrefels.length;
for (var i = 0; i < hrefelslen; i++) {
hrefinner = hrefels[i].innerHTML.toLowerCase();
if ( (hrefels[i].href == '') || (hrefels[i].href.indexOf('javascript') >=0 ) || (hrefinner.indexOf('<a') >= 0) || (hrefels[i].href.indexOf(current_domain) >= 0) || hrefels[i].onclick != null) {
continue;
}
hrefels[i].onclick = function () { window.open(this.href); return false; };
}
}
onload_functions.push('nw_external()');
// www.phpBB-SEO.com SEO TOOLKIT END
Pour subsilver2, dans :
- Code: Tout sélectionner
style/subsilver2/template/overall_header.html
ajoutez :
- Code: Tout sélectionner
<script language="Javascript" type="text/javascript">
// <![CDATA[
// www.phpBB-SEO.com SEO TOOLKIT BEGIN
// Open external links in new window in a XHTML 1.x compliant way.
window.onload = function() {
var current_domain = document.domain;
if (!current_domain || !document.getElementsByTagName) return;
var hrefels = new Array;
var hrefelslen = 0;
var hrefinner = '';
hrefels = document.getElementsByTagName("a");
hrefelslen = hrefels.length;
for (var i = 0; i < hrefelslen; i++) {
hrefinner = hrefels[i].innerHTML.toLowerCase();
if ( (hrefels[i].href == '') || (hrefels[i].href.indexOf('javascript') >=0 ) || (hrefinner.indexOf('<a') >= 0) || (hrefels[i].href.indexOf(current_domain) >= 0) || hrefels[i].onclick != null) {
continue;
}
hrefels[i].onclick = function () { window.open(this.href); return false; };
}
}
// www.phpBB-SEO.com SEO TOOLKIT END
// ]]>
</script>
avant :
- Code: Tout sélectionner
</head>
Notez que la modif pour subsilver2 marchera pour toute page html, il faudra cependant peut être adapter si vous effectuez d'autres appels à window.onload.
Prosilver dispose quant à lui directement d'une méthode pour faire des appels multiples à window.onload.
Le support pour cette astuce se fait dans ce fil de discussion, à la suite de ce message.

Français |
Anglais





