Seite 1 von 1

url-bbcode anpassen für div id's,

Verfasst: 21.08.2006 18:50
von QO
Hi

Nach langen suchen und experimentieren, hab ich es endlich geschaft, das ich mit dem url-tag und der id von z.B. einer Kategorie ein Link erstellen kann. Jetzt will ich es noch universeller machen und hab dabei ein Problem, denn ich müsste dazu einen Wert um die ersten 3 Zeichen Kürzen...

Vorher erst noch was ich gemacht habe, als Bsp nehmen wir mal die Beiträge,d.h. die id vom viewtopic müsste man eingeben um einen Link dorthin zu erstellen :

Code: Alles auswählen

#
#------- [Open]
#
include/bbcode.php

#
#--------[Find]
#
	$bbcode_tpl['url4'] = str_replace('{URL}', 'http://\\1', $bbcode_tpl['url']);
	$bbcode_tpl['url4'] = str_replace('{DESCRIPTION}', '\\3', $bbcode_tpl['url4']);

#
#-------[After, Add]
#
	$bbcode_tpl['url5'] = str_replace('{URL}', 'viewtopic.php?p=\\1', $bbcode_tpl['url']);
	$bbcode_tpl['url5'] = str_replace('{DESCRIPTION}', 'Beitrag: \\2', $bbcode_tpl['url5']);

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

#
#-------[After, Add]
#
	// [url=id]phpBB[/url] code.. (no xxxx:// prefix).
[code]	$patterns[] = "#\[url=([0-9]+)\](.*?)\[/url\]#si";
$replacements[] = $bbcode_tpl['url5'];
[/code]

Damit kann man folgendes als bbcode eingeben um einen Link zum 3. Beitrag zu bekommen:

Code: Alles auswählen

[url=3]Link zum 3. Beitrag[/url]
Anpassen kann man den code, indem man "viewtopic.php?p="(also was für ne funktion aufgerufen wird), "Beitrag: "(Wenn vor der Beschreibung noch was stehen soll) und "url5" (für jeden weiteren url muss die zahl erhöht werden) ändert.

Mein Problem jetzt

Ich würde gerne mehrere verschiedene Forenfunktionen mit dem url-tag gebrauchen wollen, also muss ich etwas zum unterscheiden der funktionen eingeben können.

Bsp1. Um Beitrags-ID's einzugeben, gibt man folgenden bbcode ein (bt=)

Code: Alles auswählen

[url=bt=3]Link zum 3. Beitrag[/url]
Bsp2. Um Gruppen-ID's einzugeben, gibt man folgenden bbcode ein (gr=)

Code: Alles auswählen

[url=gr=3]Link zum 3. Beitrag[/url]
bt= und gr= werden zur identifizierung der Linkänderung angewendet. Dazu muss mann die von mir eingesetzte Zeile von

Code: Alles auswählen

$patterns[] = "#\[url=([0-9]+)\](.*?)\[/url\]#si";
für bt= nach z.B.

Code: Alles auswählen

$patterns[] = "#\[url=bt=([0-9]+)\](.*?)\[/url\]#si";
ändern und die 3 bereits erwähnten änderung noch.

Ich muss aber diese Zeile

Code: Alles auswählen

	$bbcode_tpl['url5'] = str_replace('{URL}', 'viewtopic.php?p=\\1', $bbcode_tpl['url']);

auch ändern, damit z.B. das bt= nicht im url auch noch vorhanden ist und somit der Link fehlerhaft ist. M.a.W \\1 muss links um 3 gekürzt werden.

Wie mache ich das?

QO

Verfasst: 22.08.2006 00:26
von QO
Hmmm, entweder ich habe etwas falsch gemacht, oder es ging die ganze zeit.

Code: Alles auswählen

#
#------- [Open]
#
include/bbcode.php

#
#--------[Find]
#
   $bbcode_tpl['url4'] = str_replace('{URL}', 'http://\\1', $bbcode_tpl['url']);
   $bbcode_tpl['url4'] = str_replace('{DESCRIPTION}', '\\3', $bbcode_tpl['url4']);

#
#-------[After, Add]
#
   $bbcode_tpl['url5'] = str_replace('{URL}', 'viewtopic.php?t=\\1', $bbcode_tpl['url']);
   $bbcode_tpl['url5'] = str_replace('{DESCRIPTION}', 'Beitrag: \\2', $bbcode_tpl['url5']);

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

#
#-------[After, Add]
#
   // [url=id]phpBB[/url] code.. (no xxxx:// prefix).
[code]   $patterns[] = "#\[url=vt=([0-9]+)\](.*?)\[/url\]#si";
$replacements[] = $bbcode_tpl['url5'];[/code]

Ihr könnt es mal testen. In dem Code oben verlingt es einen mit einem Beitrag. Dazu gebt ihr ihr im Textfeld folgendes ein

Code: Alles auswählen

[url=vt=id]Beschreibung[/url]
Beschreibung und ID könnt ihr frei wählen, die ID ist die vom Beitrag zu dem ein Link hergestellt werden soll...

Falls es bei euch auch funktioniert, dann werd ichs als Snippet schreiben, da dieses eigentlich für alles das im url eine ID hat und beim posten verlinkt werden soll verwendet werden kann.