Local Links MOD nicht nur für eigene Seite

In diesem Forum können Mod-Autoren ihre Mods vorstellen, die sich noch im Entwicklungsstatus befinden. Der Einbau in Foren im produktiven Betrieb wird nicht empfohlen.
Forumsregeln
phpBB 2.0 hat das Ende seiner Lebenszeit überschritten
phpBB 2.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 2.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf phpBB 3.0, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Antworten
Parse Error
Mitglied
Beiträge: 272
Registriert: 27.12.2006 20:44
Kontaktdaten:

Local Links MOD nicht nur für eigene Seite

Beitrag von Parse Error »

Hallo,

ich hätte gern, dass beim Local Links MOD nicht nur Links zur eigenen Website sondern z.B. auch zu www.zdf.de im selben Fenster (target="_self") geöffnet werden. (Externe Links werden ja üblicherweise in einem neuen Fenster geöffnet. Das soll auch so bleiben - nur halt für www.zdf.de nicht.)

Leider habe ich keinen Plan, wie der im Grunde genommen recht kurze MOD diesbezüglich angepasst werden müsste.

Kann mir jemand helfen? :)

P.E.
Nicht nur für Kletterer: Deutsches Slackline Forum
Parse Error
Mitglied
Beiträge: 272
Registriert: 27.12.2006 20:44
Kontaktdaten:

Beitrag von Parse Error »

Hi,

ich habe es jetzt wie folgt versucht. Und zwar habe ich in der bbcode.php in der function bbencode_second_pass($text, $uid) unterhalb von...

Code: Alles auswählen

    // MOD LOCAL URL BEGIN
    // do any local urls first...

    // [url]xxxx://www.phpbb.com[/url] code..
   $local_patterns[1] = "#\[url\]([a-z]+?://){1}(".$_SERVER["SERVER_NAME"].")([a-z0-9\-\.,\?!%\*_\#:;~\\&$@\/=\+]*)\[/url\]#si";
   $local_replacements[1] = $bbcode_tpl['url_local1'];

   // [url]www.phpbb.com[/url] code.. (no xxxx:// prefix).
   $local_patterns[2] = "#\[url\](".$_SERVER["SERVER_NAME"].")([a-z0-9\-\.,\?!%\*_\#:;~\\&$@\/=\+]*)\[/url\]#si";
   $local_replacements[2] = $bbcode_tpl['url_local2'];

   // [url=xxxx://www.phpbb.com]phpBB[/url] code..
   $local_patterns[3] = "#\[url=([a-z]+?://){1}(".$_SERVER["SERVER_NAME"].")([a-z0-9\-\.,\?!%\*_\#:;~\\&$@\/=\+]*)\](.*?)\[/url\]#si";
   $local_replacements[3] = $bbcode_tpl['url_local3'];

   // [url=www.phpbb.com]phpBB[/url] code.. (no xxxx:// prefix).
   $local_patterns[4] = "#\[url=(".$_SERVER["SERVER_NAME"].")([a-z0-9\-\.,\?!%\*_\#:;~\\&$@\/=\+]*)\](.*?)\[/url\]#si";
   $local_replacements[4] = $bbcode_tpl['url_local4'];
... folgendes hinzugefügt:

Code: Alles auswählen

    // [url]xxxx://www.phpbb.com[/url] code..
   $local_patterns[5] = "#\[url\]([a-z]+?://){1}(zdf.de)([a-z0-9\-\.,\?!%\*_\#:;~\\&$@\/=\+]*)\[/url\]#si";
   $local_replacements[5] = $bbcode_tpl['url_local1'];

   // [url]www.phpbb.com[/url] code.. (no xxxx:// prefix).
   $local_patterns[6] = "#\[url\](zdf.de)([a-z0-9\-\.,\?!%\*_\#:;~\\&$@\/=\+]*)\[/url\]#si";
   $local_replacements[6] = $bbcode_tpl['url_local2'];
Funktioniert aber leider nicht. Auch nicht, wenn man zdf.de in zdf\.de ändert. Wie bringe ich den MOD dazu, nicht nur $_SERVER["SERVER_NAME"] sondern auch zdf.de als "local" zu behandeln?

P.E.
Nicht nur für Kletterer: Deutsches Slackline Forum
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Beitrag von gn#36 »

Ich nehme doch an, dass du die Adresse mit www. angeben willst, oder? Dann sollte das auch in dem Pattern drin vorkommen:

Code: Alles auswählen

    // [url]xxxx://www.phpbb.com[/url] code..
   $local_patterns[5] = "#\[url\]([a-z]+?://){1}(www\.zdf\.de)([a-z0-9\-\.,\?!%\*_\#:;~\\&$@\/=\+]*)\[/url\]#si";
   $local_replacements[5] = $bbcode_tpl['url_local1'];

   // [url]www.phpbb.com[/url] code.. (no xxxx:// prefix).
   $local_patterns[6] = "#\[url\](www\.zdf\.de)([a-z0-9\-\.,\?!%\*_\#:;~\\&$@\/=\+]*)\[/url\]#si";
   $local_replacements[6] = $bbcode_tpl['url_local2'];
Wenn du das machst solltest du über www.zdf.de zugreifen können, deine Variante deckt nur zdf.de ab (ohne www.). Ich gehe jetzt mal davon aus dass der Inhalt von $bbcode_tpl['url_local1'] passend ist.
Zuletzt geändert von gn#36 am 18.06.2007 20:05, insgesamt 1-mal geändert.
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
Parse Error
Mitglied
Beiträge: 272
Registriert: 27.12.2006 20:44
Kontaktdaten:

Beitrag von Parse Error »

Hallo gn#36,

besten Dank - das war es. Auf das www hatte ich ganz vergessen. Es scheint übrigens egal zu sein, ob man einen \ vor .de setzt oder nicht - scheint beides zu funktionieren.
Hier noch schnell die Lösung für die Magic URLs in der function make_clickable($text): Unterhalb von

Code: Alles auswählen

// MOD LOCAL URL BEGIN
// match a local URL and replace with a target="_self" href
$ret = preg_replace("#([\n ])([a-z]+?)://(".$_SERVER["SERVER_NAME"].")((?:/[^\t <\n\r]*)?)#i", "\\1<a href=\"\\2://\\3\\4\" target=\"_self\" class=\"postlink\">\\2://\\3\\4</a>", $ret);
$ret = preg_replace("#([\n ])(".$_SERVER["SERVER_NAME"].")((?:/[^\t <\n\r]*)?)#i", "\\1<a href=\"http://\\2\\3\" target=\"_self\" class=\"postlink\">\\2\\3</a>", $ret);
füge hinzu:

Code: Alles auswählen

// behandle einen Link zu www.zdf.de als local link
$ret = preg_replace("#([\n ])([a-z]+?)://(www\.zdf\.de)((?:/[^\t <\n\r]*)?)#i", "\\1<a href=\"\\2://\\3\\4\" target=\"_self\" class=\"postlink\">\\2://\\3\\4</a>", $ret);
$ret = preg_replace("#([\n ])(www\.zdf\.de)((?:/[^\t <\n\r]*)?)#i", "\\1<a href=\"http://\\2\\3\" target=\"_self\" class=\"postlink\">\\2\\3</a>", $ret);
Danke noch einmal!
P.E.
Nicht nur für Kletterer: Deutsches Slackline Forum
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Beitrag von gn#36 »

es ist nicht egal ob der Backslash vor dem Punkt ist oder nicht. Der Unterschied ist, dass ein Punkt jegliches Zeichen erlaubt, u.a. auch den Punkt, somit ginge dann ohne Slash auch wwwxzdf.de oder etwas ähnliches. Du solltest daher den Slash einbauen, dieser hebt die besondere Bedeutung des Punkts auf und wandelt ihn in einen "normalen" Punkt um. Das gleiche gilt für Klammern () [] {}, das Fragezeichen ? das Plus +, den Stern * ...
-> Alle Zeichen mit Sonderbedeutung können in "normale" Zeichen umgewandelt werden indem der Backslash davor steht.
-> Das gleiche gilt für den Backslash, der ist auch zu behandeln wie ein Zeichen mit Sonderbedeutung (ist es ja auch)
Falls du noch mehr dazu wissen willst such mal nach regulären Ausdrücken.
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
Parse Error
Mitglied
Beiträge: 272
Registriert: 27.12.2006 20:44
Kontaktdaten:

Beitrag von Parse Error »

Danke. :) Hatte das nur gedacht, weil Du weiter oben in Deinem Code selbst einmal den Backslash vor einem Punkt weggelassen hast (www\.zdf.de). Aber nun ist alles klar.

P.E.
Nicht nur für Kletterer: Deutsches Slackline Forum
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Beitrag von gn#36 »

Das lag wohl am Copy & Paste, der Backslash sollte da schon rein...
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
Antworten

Zurück zu „phpBB 2.0: Mods in Entwicklung“