Dies wurde in phpBB3 aus mehreren Gründen geändert, der wichtigste Grund dazu war allerdings das Ziel phpBB3 XHTML 1.0 Strict-Valide zu bekommen.
Wichtig:
Es wird empfohlen, diese Modifikation nicht vorzunehmen.
Durch das Erzwingen der Öffnung von Links in externen Fenstern mittels target="_blank" geht die XHTML Validität verloren. Bei bestimmten Konfigurationen (Betriebssystem/Browser/Javascript) lassen sich die Links möglicherweise gar nicht mehr öffnen. Außerdem werden die User bei ihrer Wahl, einen Link in dem gleichen oder einem anderen Fenster zu öffnen bevormundet.
Alle modernen Browser besitzen die Möglichkeit, einen Link auf einfache Weise - meist durch Verwendung der mittleren Maustaste - in einem anderen Tab oder Fenster zu öffnen, so dass man diese Wahl dem User überlassen sollte.
Um das alte Browserverhalten zu erzwingen gibt es bereits mehrere Modifikationen, wir stellen Dir nun eine davon in unserer Knowledge Base vor.
Modifizieren von selbst entdeckten Links ( Magic URL )
Um das Verhalten von selbst entdeckten URLS ( Links ohne das verwenden vom URL-BBCode ) zu ändern ist ein kleiner Eingriff in die Dateiincludes/functions_content.php nötig:
ÖFFNE:
includes/functions_content.php
SUCHE:
CODE: Alles auswählen
$html = "$whitespace<!-- $tag --><a$class href=\"$url\">$text</a><!-- $tag -->$append";
CODE: Alles auswählen
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 URLs
Als nächstes müssen wir das Verhalten von url-BBCodes verändern.Dies findet in der Datei bbcode.html statt.
Wir gehen nun von einem Standard prosilver Style aus:
ÖFFNE: styles/prosilver/template/bbcode.html
SUCHE:
CODE: Alles auswählen
<!-- BEGIN url --><a href="{URL}" class="postlink">{DESCRIPTION}</a><!-- END url -->
CODE: Alles auswählen
<!-- BEGIN url --><a href="{URL}" onclick="window.open(this.href);return false;" class="postlink">{DESCRIPTION}</a><!-- END url -->
HTML Ersetzung
Zuletzt müssen wir noch die Ausgabe vom HTML Code modifizieren:ÖFFNE:
includes/functions.php
SUCHE:
CODE: Alles auswählen
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',
);
ERSETZE MIT:
CODE: Alles auswählen
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',
);
Quelle: http://www.phpbb.com/kb/article/links-o ... ew-windows