Erweiterung BBCode um interne Links

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
iovialis
Mitglied
Beiträge: 7
Registriert: 28.07.2006 08:43
Wohnort: Kiew
Kontaktdaten:

Erweiterung BBCode um interne Links

Beitrag von iovialis »

Habe eine Änderung für mich durchgeführt, um zwischen internen (selbiges Fenster) und externen Links (neues Fenster -> Target) zu unterscheiden:
die externen Links gehen alle über folgende BBCode-Angaben (standard):

Code: Alles auswählen

[url]xxxx://www.phpbb.com[/url]
[url]www.phpbb.com[/url]
[url=xxxx://www.phpbb.com]phpBB[/url]
[url=www.phpbb.com]phpBB[/url]
Meine Erweiterung ist, daß nun folgendes als interner Link gehandhabt wird:

Code: Alles auswählen

[link=xxxx://www.phpbb.com]phpBB[/link]
Dabei habe ich folgende Dinge in der Datei includes/bbcode.php eingefügt:
nach:

Code: Alles auswählen

  $bbcode_tpl['url4'] = str_replace('{URL}', 'http://\\1', $bbcode_tpl['url']);
  $bbcode_tpl['url4'] = str_replace('{DESCRIPTION}', '\\3', $bbcode_tpl['url4']);
folgendes eingefügt:

Code: Alles auswählen

  $bbcode_tpl['link'] = str_replace('{LINK}', '\\1', $bbcode_tpl['link']);
  $bbcode_tpl['link'] = str_replace('{DESCRIPTION}', '\\2', $bbcode_tpl['link']);
nach:

Code: Alles auswählen

  // [url=www.phpbb.com]phpBB[/url] code.. (no xxxx:// prefix).
  $patterns[] = "#\[url=((www|ftp)\.[\w\#$%&~/.\-;:=,?@\[\]+]*?)\]([^?\n\r\t].*?)\[/url\]#is";
  $replacements[] = $bbcode_tpl['url4'];
folgendes eingefügt:

Code: Alles auswählen

  // [link=xxxx://www.phpbb.com]phpBB[/link] code..
  $patterns[] = "#\[link=([\w]+?://[\w\#$%&~/.\-;:=,?@\[\]+]*?)\]([^?\n\r\t].*?)\[/link\]#is";
  $replacements[] = $bbcode_tpl['link'];
nach:

Code: Alles auswählen

  // matches an email@domain type address at the start of a line, or after a space.
  // Note: Only the followed chars are valid; alphanums, "-", "_" and or ".".
  $ret = preg_replace("#(^|[\n ])([a-z0-9&\-_.]+?)@([\w\-]+\.([\w\-\.]+\.)*[\w]+)#i", "\\1<a href=\"mailto:\\2@\\3\">\\2@\\3</a>", $ret);
folgendes eingefügt:

Code: Alles auswählen

  // DJ: matches an "link://yyyy" URL at the start of a line, or after a space.
  // DJ: link can only be alpha characters.
  // DJ: yyyy is anything up to the first space, newline, comma, double quote or <
  $ret = preg_replace("#(^|[\n ])([\w]+?://[\w\#$%&~/.\-;:=,?@\[\]+]*)#is", "\\1<a href=\"\\2\">\\2</a>", $ret);
In der Datei templates/template_name/bbcode.tpl habe ich noch folgende Änderung gemacht:
nach:

Code: Alles auswählen

<!-- BEGIN url --><a href="{URL}" target="_blank">{DESCRIPTION}</a><!-- END url -->
folgendes eingefügt:

Code: Alles auswählen

<!-- BEGIN link --><a href="{LINK}">{DESCRIPTION}</a><!-- END link -->
Das Ganze funktioniert soweit, wobei ich betonen möchte, daß ich das aus Eigenbedarf geschrieben hatte und nix passendes dazu fand (einen MOD) - jedenfalls funktioniert es und stelle es hier zur Diskussion, damit jemand einen MOD schreiben kann, denn ich denke, daß es nicht unbedingt eine "saubere" Methode ist.

Viele Grüße und Danke für Meinungen!

Iovialis
Antworten

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