BBCode um Text zu ersetzen?
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.
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.
BBCode um Text zu ersetzen?
Hi, ich bastel grad an einem BBCode für mein Forum und komme da gerade nicht weiter...
Und zwar habe ich im Profil ein neues Feld eingefügt über das die User zwischen 2 Optionen wählen können.
Nun möchte ich einen BBCode erstellen, z.B. [bla]Hier ein Text[/bla] welche bewirkt dass User, welche im Profil Option 1 gewählt haben den Text "Hier ein Text" zu sehen bekommen, aber User die Option 2 gewählt haben einen anderen Text, z.B. "Um diesen Text zu sehen musst du im Profil Option 1 auswählen".
Ich habe schon versucht andere BBCode Mods einfach umzubauen, aber die ersetzen ja meist nur den BBCode selber und nicht das was dazwischen ist...
Und zwar habe ich im Profil ein neues Feld eingefügt über das die User zwischen 2 Optionen wählen können.
Nun möchte ich einen BBCode erstellen, z.B. [bla]Hier ein Text[/bla] welche bewirkt dass User, welche im Profil Option 1 gewählt haben den Text "Hier ein Text" zu sehen bekommen, aber User die Option 2 gewählt haben einen anderen Text, z.B. "Um diesen Text zu sehen musst du im Profil Option 1 auswählen".
Ich habe schon versucht andere BBCode Mods einfach umzubauen, aber die ersetzen ja meist nur den BBCode selber und nicht das was dazwischen ist...
Hallo
3 Fragen:
3 Fragen:
- Wie soll der BBCode heißen? Also was soll man bei [bla][/bla] anstelle von eben bla eingeben müssen?
- Wie heißt die Spalte in der prefix_users in der der Wert des neuen Feldes gespeichert wird?
- Welche beiden Werte gibt es (die im neuen Feld in der Datenbank gespeichert werden können), und welcher von beiden bedeutet übertragen "Der Text zwischen den neuen BBCode soll angezeigt werden"?
edit 16.50: Fuck.. war ein Fehler in der Anleitung .. sollte jetzt so stimmen 
edit 17.40: So, jetzt sollte es aber stimmen
Versuchs mal damit:
bbcode.php
suche
ersetzten mit
suche
danach einfügen
suche
davor einfügen
bbcode.tpl
(musst du für jedes Installiertes Template ändern)
am Ende einfügen
(Das muss natürlich noch entsprechend ersetzt werden)
edit 17.40: So, jetzt sollte es aber stimmen
Versuchs mal damit:
bbcode.php
suche
Code: Alles auswählen
function bbencode_second_pass($text, $uid)
{
global $lang, $bbcode_tpl;Code: Alles auswählen
function bbencode_second_pass($text, $uid)
{
global $lang, $bbcode_tpl, $userdata;Code: Alles auswählen
// Patterns and replacements for URL and email tags..
$patterns = array();
$replacements = array();Code: Alles auswählen
// [spoiler] and [/spoiler]
if(!$userdata['user_spoiler'])
{
$patterns[] = "#\[spoiler:$uid\](.*?)\[/spoiler:$uid\]#si";
$replacements[] = $bbcode_tpl['kein_spoiler'];
}
else
{
$text = str_replace("[spoiler:$uid]", $bbcode_tpl['spoiler_open'], $text);
$text = str_replace("[/spoiler:$uid]", $bbcode_tpl['spoiler_close'], $text);
}Code: Alles auswählen
// Remove our padding from the string..
return substr($text, 1);;
} // bbencode_first_pass()Code: Alles auswählen
// [spoiler] and [/spoiler]
$text = preg_replace("#\[spoiler\](.*?)\[/spoiler\]#si", "[spoiler:$uid]\\1[/spoiler:$uid]", $text);
(musst du für jedes Installiertes Template ändern)
am Ende einfügen
Code: Alles auswählen
<!-- BEGIN kein_spoiler -->HTML Code und Text wenn der Spoiler nicht angezeigt werden soll<!-- END kein_spoiler -->
<!-- BEGIN spoiler_open -->HTML Code für Anfang des Spoilers<!-- END spoiler_open -->
<!-- BEGIN spoiler_close -->HTML Code für Ende des Spoilers<!-- END spoiler_close -->
Zuletzt geändert von punkface am 09.03.2006 17:41, insgesamt 1-mal geändert.
Hast du das auch eingebaut:
punkface hat geschrieben:bbcode.php
suchedanach einfügenCode: Alles auswählen
// Patterns and replacements for URL and email tags.. $patterns = array(); $replacements = array();Code: Alles auswählen
// [spoiler] and [/spoiler] if(!$userdata['user_spoiler']) { $patterns[] = "#\[spoiler:$uid\](.*?)\[/spoiler:$uid\]#si"; $replacements[] = $bbcode_tpl['kein_spoiler']; } else { $text = str_replace("[spoiler:$uid]", $bbcode_tpl['spoiler_open'], $text); $text = str_replace("[/spoiler:$uid]", $bbcode_tpl['spoiler_close'], $text); }
//Edit: Habs geschafft 
Das:
musste an anderer Stelle eingefügt werden, nämlich vor
Das:
Code: Alles auswählen
// [spoiler] and [/spoiler]
$text = preg_replace("#\[spoiler\](.*?)\[/spoiler\]#si", "[spoiler:$uid]\\1[/spoiler:$uid]", $text); Code: Alles auswählen
// Patterns and replacements for URL and email tags..
$patterns = array();
$replacements = array();Naja, eigentlich sollte es so sein:
suche
ersetzte mit
suche
ersetzten mit
Die Anleitung war immernoch nicht fehlerfrei.. 
bzw. Ich hab grad noch was entdeckt:
Wenn man ein Beitrag mit einem Spoiler zitiert, sieht man den Spoiler in dem Textfeld auch wenn man im Profil ausgewählt hat, dass man Spoiler nicht sehen will. Dafür muss ich mir noch was überlegen...
suche
Code: Alles auswählen
$text = preg_replace($patterns, $replacements, $text);
// [spoiler] and [/spoiler]
$text = preg_replace("#\[spoiler\](.*?)\[/spoiler\]#si", "[spoiler:$uid]\\1[/spoiler:$uid]", $text);
// Remove our padding from the string..
$text = substr($text, 1);
return $text;
} // bbencode_second_pass() Code: Alles auswählen
$text = preg_replace($patterns, $replacements, $text);
// Remove our padding from the string..
$text = substr($text, 1);
return $text;
} // bbencode_second_pass()Code: Alles auswählen
// Remove our padding from the string..
return substr($text, 1);;
} // bbencode_first_pass() Code: Alles auswählen
// [spoiler] and [/spoiler]
$text = preg_replace("#\[spoiler\](.*?)\[/spoiler\]#si", "[spoiler:$uid]\\1[/spoiler:$uid]", $text);
// Remove our padding from the string..
return substr($text, 1);;
} // bbencode_first_pass() bzw. Ich hab grad noch was entdeckt:
Wenn man ein Beitrag mit einem Spoiler zitiert, sieht man den Spoiler in dem Textfeld auch wenn man im Profil ausgewählt hat, dass man Spoiler nicht sehen will. Dafür muss ich mir noch was überlegen...