3.x/Koppelingen in nieuw venster

Uit phpBB.nl Wiki
Ga naar: navigatie, zoeken
Bron: Links in New Window door CyberAlien

In phpBB3's prosilver stijl openen alle koppelingen (links) in hetzelfde venster. Hier lees je, waarom dit zo is en hoe je het eventueel kunt veranderen.

Waarom openen links in hetzelfde venster

Hier is bewust voor gekozen. De ontwerpers van prosilver hebben zich strict aan de richtlijnen voor XHTML 1.0 gehouden; dit zijn regels, opgesteld door het World Wide Web Consortium. XHTML is vrijwel hetzelfde als gewone HTML, maar wordt ook begrepen door XML-browsers. Omdat XML-browsers heel strikt zijn, zullen deze een foutmelding opleveren, wanneer de code niet precies volgens de richtlijnen is geschreven.

Is dat erg? Niet echt. Vrijwel iedereen surft op het internet met een browser, die ouderwetse HTML prima begrijpt. Mogelijk zal XML in de toekomst HTML gaan verdringen, maar zeker niet in de komende jaren.

Oplossing

Door de volgende codewijzigingen uit te voeren, openen koppelingen in een nieuw venster. Door deze aanpassing is de code dus niet meer strict XHTML 1.0.

Je kunt verwijzingen ook zonder aanpassing in een nieuw venster openen met <shift+klik>. Als je een browser met tabbladen gebruikt, kun je met <ctrl+klik> of muiswielklik een pagina in een nieuw tabblad openen. Op deze manier leg je de keuze bij de gebruiker, die zich vaak ergert aan nieuwe vensters, die openen zonder dat hij of zij daar om vraagt!

Code wijzigingen

Door deze wijzigingen in de HTML- en PHP-code door te voeren, zullen koppelingen voortaan automatisch in een nieuw venster openen.

Forums met type=link

Zoek in styles/prosilver/template/forumlist_body.html naar deze regel:

  <a href="{forumrow.U_VIEWFORUM}" class="forumtitle"> 

...en vervang deze door dit:

  <a href="{forumrow.U_VIEWFORUM}" class="forumtitle" target="_blank">

Links in berichten

Zoek in styles/prosilver/template/bbcode.html naar deze regel:

  <a href="{URL}" class="postlink">{DESCRIPTION}</a> 

...en vervang deze door dit:

  <a href="{URL}" onclick="window.open(this.href);return false;" class="postlink">{DESCRIPTION}</a>

Zoek vervolgens in includes/functions_content.php naar deze regel (rond regel 603):

   	$html	= "$whitespace<!-- $tag --><a$class href=\"$url\">$text</a><!-- $tag -->$append";

...en vervang deze door dit:

   	$html	= "$whitespace<!-- $tag --><a$class href=\"$url\"" . (($type != MAGIC_URL_EMAIL) ? " onclick=\"window.open(this.href);return false;\"" : "") . ">$text</a><!-- $tag -->$append";

Als laatste moet je in includes/functions.php naar de volgende regel zoeken (rond regel 2740):

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

...en vervang deze door dit:

   case 'bbcode_htm':
        return array(
           '#<!\-\- e \-\-><a href="mailto:(.*?)">.*?</a><!\-\- e \-\->#',
           '#<!\-\- l \-\-><a (?:class="[\w-]+" )?href="(.*?)(?:(&|\?)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',
        );