Erweiterung BBCode um interne Links
Verfasst: 29.07.2006 16:50
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):
Meine Erweiterung ist, daß nun folgendes als interner Link gehandhabt wird:
Dabei habe ich folgende Dinge in der Datei includes/bbcode.php eingefügt:
nach:
folgendes eingefügt:
nach:
folgendes eingefügt:
nach:
folgendes eingefügt:
In der Datei templates/template_name/bbcode.tpl habe ich noch folgende Änderung gemacht:
nach:
folgendes eingefügt:
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
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]
Code: Alles auswählen
[link=xxxx://www.phpbb.com]phpBB[/link]
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']);
Code: Alles auswählen
$bbcode_tpl['link'] = str_replace('{LINK}', '\\1', $bbcode_tpl['link']);
$bbcode_tpl['link'] = str_replace('{DESCRIPTION}', '\\2', $bbcode_tpl['link']);
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'];
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'];
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);
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);
nach:
Code: Alles auswählen
<!-- BEGIN url --><a href="{URL}" target="_blank">{DESCRIPTION}</a><!-- END url -->
Code: Alles auswählen
<!-- BEGIN link --><a href="{LINK}">{DESCRIPTION}</a><!-- END link -->
Viele Grüße und Danke für Meinungen!
Iovialis