1
phpBB.nlDocumentatieWiki3.x

Koppelingen in nieuw venster

Uit phpBB.nl Wiki
Ga naar: navigatie, zoeken

phpBB3

Bron: Links in New Window door CyberAlien

In de meeste phpBB3 stijlen openen alle koppelingen (links) in hetzelfde venster. Hier lees je, waarom dit zo is en hoe je het eventueel kunt veranderen.

Inhoud

Waarom openen links in hetzelfde venster

Hier is bewust voor gekozen. De ontwerpers van prosilver, de standaard stijl van phpBB3, hebben zich strikt 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.

De reden dat XHTML verbiedt om links in een nieuw venster te openen, is dat het uitgangspunt van die standaard is dat de gebruiker zelf de keuze moet hebben hoe hij/zij een link opent. Er zijn hele (bijna religieuze) discussies op Internet te vinden over wat nu beter is.

Het is dus een optie om, in plaats van deze wijzigingen uit te voeren, je gebruikers te instrueren hoe ze zelf de keuze hebben voor het al dan niet openen in een nieuw venster. Dit verschilt per browser, maar meestal kun je 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. Sommige gebruikers zijn gewend dat een link naar een andere site in een nieuw venster opent, andere ergeren zich aan nieuwe vensters, die openen zonder dat hij of zij daar om vraagt! Een ander voordeel van het niet uitvoeren van deze aanpassingen is vanzelfsprekend dat je je forum-installatie dichter bij de standaard software houdt, wat altijd beter is met het oog op updates.

Code wijzigingen

Door de volgende wijzigingen in de HTML- en PHP-code door te voeren, openen koppelingen in een nieuw venster. Door deze aanpassing is de code dus niet meer strict XHTML 1.0. Deze instructies zijn voor de stijl prosilver, die standaard geleverd wordt met phpBB3. Veel stijlen zijn hiervan afgeleid. Gebruik je subsilver2 (de andere standaard stijl) of een afgeleide daarvan, dan zal alles niet precies overeenkomen. Je kunt deze instructies echter wel gebruiken als leidraad voor het aanpassen van subsilver2, de principes zijn gelijk.

Forums met type=link

Hiermee worden links op het forum overzicht geopend in een nieuw venster.

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

Hiermee worden links in berichten in een nieuw venster geopend.

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

<!-- BEGIN url --><a href="{URL}" class="postlink">{DESCRIPTION}</a><!-- END url -->

...en vervang deze door dit:

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

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',
			);
		break;

...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',
			);
		break;