phpBB3 Mod: Nofollow & neues Fenster für externe Seiten
Tags: Forum | PHP | SoftwareSeltsam, aber anscheinend gibt es kein offizielles Mod für phpBB 3.x für Nofollow-Attribute mit Whitelist für „dofollow“-URL´s?
Darum hier nun eine einfache und schnell zu installierende Lösung für phpBB3:
viewtopic.php öffnen und nach folgenden Zeilen suchen:
$message = bbcode_nl2br($message);
$message = smiley_text($message);
Dahinter den folgenden Code einfügen und ggf. anpassen:
/*****************************************/
/* phpBB3 Nofollow-Links mit Whitelist */
/* (c)2009 www.premium-hosting-24.de */
/*****************************************/
/* Variablen */
$homeurl=$_SERVER['HTTP_HOST'];
/* Konfiguration [START] */
$whitelist = array(
'www.stephan-hertz.de',
'www.premium-hosting-24.de',
'www.your-domain.tld'
);
/* Konfiguration [ENDE] */
$message = preg_replace('/(a class="postlink" href="(.*?)")/','a href="$2" class="postlink"',$message);
$message = preg_replace('/(class="postlink")/','class="postlink" rel="nofollow" target="_blank"',$message);
$message = preg_replace('/(href="http://'.$homeurl.'(.*?)" class="postlink" rel="nofollow" target="_blank")/','href="http://'.$homeurl.'$2" class="postlink"',$message);
// frei schalten der WhiteList
foreach($whitelist as $links) {
$message = preg_replace('/(href="http://'.$links.'(.*?)" class="postlink" rel="nofollow" target="_blank")/','href="http://'.$links.'$2" class="postlink" target="_blank"',$message);
}
// target _blank valide machen:
$message = preg_replace('/(target="_blank")/','onclick="this.target='_blank'"',$message);
/* phpBB3 Nofollow-Links mit Whitelist [END] */
Das Script wandelt zuerst einmal alle Links in das gleiche Format
und löscht dann im Anschluß rel=“nofollow“ target=“_blank“ für lokale Adressen, entfernt rel=“nofollow“ für Links aus der Whitelist und wandelt zum Schluß target=“_blank“ in eine valide Version um.
Dienstag, 29.09.2009 um 21:51 Uhr
Ich setze auch phpBB3 ein und werde das ganze mal ausprobieren. Vielen Dank!
Sonntag, 07.03.2010 um 22:53 Uhr
Hallöchen ich glaub Ihr habt da ne Kleinigkeit vergessen.
die // in der Regex sollte man besser Escapen.
Und in der Letzten Zeile wahren auch ein paar „“'““‚“‚“ verwirbelt.
/*****************************************/
/* phpBB3 Nofollow-Links mit Whitelist */
/* (c)2009 www.premium-hosting-24.de */
/* Fix by heimsath.org :-) */
/*****************************************/
/* Variablen */
$homeurl=$_SERVER['HTTP_HOST'];
/* Konfiguration [START] */
$whitelist = array(
'www.your-domain.de',
'www.your-domain.eu'
);
/* Konfiguration [ENDE] */
$message = preg_replace('/(a class="postlink" href="(.*?)")/','a href="$2" class="postlink"',$message);
$message = preg_replace('/(class="postlink")/','class="postlink" rel="nofollow" target="_blank"',$message);
$message = preg_replace('/(href="http://'.$homeurl.'(.*?)" class="postlink" rel="nofollow" target="_blank")/','href="http://'.$homeurl.'$2" class="postlink"',$message);
# frei schalten der WhiteList
foreach($whitelist as $links) {
$message = preg_replace('/(href="http://'.$links.'(.*?)" class="postlink" rel="nofollow" target="_blank")/','href="http://'.$links.'$2" class="postlink" target="_blank"',$message);
}
# target _blank valide machen:
$trreplace='onclick="this.target='."'".'_blank'."'".'"';
$message = preg_replace('/(target="_blank")/',$trreplace,$message);
/* phpBB3 Nofollow-Links mit Whitelist [END] */
Schönen Abend noch.
Dienstag, 04.02.2014 um 11:10 Uhr
Danke für die Info…habs noch per Google gefunden 🙂