Seite 1 von 1

BBCode

Verfasst: 15.03.2007 05:18
von Fussball-Philosoph
Hallo zusammen!

Eines vorweg;
Ja, ich habe die Suchfunktion genutzt, um Antworten auf meine Fragen zu bekommen. Aber in Anbetracht von 2963 Ergebnissen, die ich zum Thema BBCode erhalten habe, sollte mir nachgesehen werden, diese Frage direkt an Euch gerichtet zu haben. Danke für Euer Verständnis! :wink:

Zum BBCode;
Ich habe den BBCode in meinem Forum deaktiviert, um in erster Linie der freien Nutzung der Schriftgröße bzw. der Schriftfarbe Einhalt zu gebieten. Bedauerlicherweise hat die Deaktivierung des BBCodes aber auch zur Folge, dass die zitierten Beiträge nicht korrekt dargestellt werden, sondern lediglich umklammert angezeigt werden.

Gibt es eine Möglichkeit den BBCode ausschließlich für die Schriftgröße, Schriftfarbe sowie für die B,I,U-Funktionen zu deaktivieren, so dass die Darstellungen der Zitate und möglicherweise auch die URL-Funktion davon unbetroffen bleiben?

Vielen Dank im Voraus für Eure Antworten!

Gruß,
F-P

Diskrete BBcodes Deaktivieren

Verfasst: 15.03.2007 11:48
von gn#36
Ja die gibt es in der Tat, dazu sind allerdings kleinere Codeänderungen notwendig.
Zunächst einmal sollten natürlich die unerwünschten Buttons aus dem Posting-Template entfernt werden. Hierzu öffne die posting_body.tpl Datei und entferne die Buttons zu den unerwünschten BBcodes.
Im Style SubSilver sähe z.B. der Button für Fettschrift so aus:

Code: Alles auswählen

<input type="button" class="button" accesskey="b" name="addbbcode0" value=" B " style="font-weight:bold; width: 30px" onClick="bbstyle(0)" onMouseOver="helpline('b')" />
Die anderen Buttons sind ganz in der Nähe dieser Codestelle, hier einfach die unerwünschten entfernen.

Als nächste sollte dann der BBcode tatsächlich deaktiviert werden. Hierzu ist die bbcode.php zu bearbeiten. Zu jedem BBcode gibt es Einträge in mindestens 3 Funktionen, in zwei dieser Funktionen sollte der entsprechende Code auskommentiert werden. Ich werde das am Beispiel des Tags einmal durchspielen, für alle anderen funktioniert es ganz genau so, nur dass andere Codestellen auskommentiert werden müssen.
Also: Öffne includes/bbcode.php
Finde in der Funktion bbencode_second_pass($text, $uid)

Code: Alles auswählen

// [b] and [/b] for bolding text.
	$text = str_replace("[b:$uid]", $bbcode_tpl['b_open'], $text);
	$text = str_replace("[/b:$uid]", $bbcode_tpl['b_close'], $text);
Ersetze das durch das hier:

Code: Alles auswählen

// [b] and [/b] for bolding text.
	//$text = str_replace("[b:$uid]", $bbcode_tpl['b_open'], $text);
	//$text = str_replace("[/b:$uid]", $bbcode_tpl['b_close'], $text);
Finde nun in der Funktion bbencode_first_pass($text, $uid)

Code: Alles auswählen

// [b] and [/b] for bolding text.
	$text = preg_replace("#\[b\](.*?)\[/b\]#si", "[b:$uid]\\1[/b:$uid]", $text);
Ersetze dies durch

Code: Alles auswählen

// [b] and [/b] for bolding text.
	//$text = preg_replace("#\[b\](.*?)\[/b\]#si", "[b:$uid]\\1[/b:$uid]", $text);
Effektiv habe ich damit lediglich die Stellen auskommentiert, die die Ersetzung des BBcodes durch den "richtigen" HTML Code durchführen.
Möchtest du [size] auskommentieren, dann musst du natürlich entsprechend nach

Code: Alles auswählen

// size
	$text = preg_replace("/\[size=([1-2]?[0-9]):$uid\]/si", $bbcode_tpl['size_open'], $text);
	$text = str_replace("[/size:$uid]", $bbcode_tpl['size_close'], $text);
und nach

Code: Alles auswählen

// [size] and [/size] for setting text size
	$text = preg_replace("#\[size=([1-2]?[0-9])\](.*?)\[/size\]#si", "[size=\\1:$uid]\\2[/size:$uid]", $text);
suchen. Schau dir die Datei einfach mal an, an den Codezeilen in den beiden genannten Funktionen steht jeweils mit einem Kommentar dran, welche Ersetzung diese Zeile jeweils vornehmen soll, du brauchst sie nur auskommentieren, dann kann der entsprechende BBcode nicht mehr verwendet werden. Achte allerdings darauf dass du die Auskommentierung immer in beiden Funktionen vornimmst (Außer bei den URLs, diese kommen lediglich in der bbencode_second_pass vor.)

Wichtig: Vor den Änderungen (egal welcher Art) immer vorher ein Backup machen.