BBCode um Text zu ersetzen?

Du suchst einen bestimmten Mod, weißt aber nicht genau wo bzw. ob er überhaupt existiert? Wenn dir dieser Artikel nicht weiterhilft, kannst du hier den von dir gewünschten/gesuchten Mod beschreiben ...
Falls ein Mod-Autor eine der Anfragen hier aufnimmt um einen neuen Mod zu entwicklen, geht's in phpBB 2.0: Mods in Entwicklung weiter.
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
WTB
Mitglied
Beiträge: 10
Registriert: 03.10.2004 18:07

BBCode um Text zu ersetzen?

Beitrag von WTB »

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...
Benutzeravatar
punkface
Mitglied
Beiträge: 3579
Registriert: 12.08.2004 23:37

Beitrag von punkface »

Hallo

3 Fragen:
  1. Wie soll der BBCode heißen? Also was soll man bei [bla][/bla] anstelle von eben bla eingeben müssen?
  2. Wie heißt die Spalte in der prefix_users in der der Wert des neuen Feldes gespeichert wird?
  3. 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"?
WTB
Mitglied
Beiträge: 10
Registriert: 03.10.2004 18:07

Beitrag von WTB »

1. [spoiler] (soll im Grunde ein Spoiler Mod ohne "hidden Text" werden)

2. user_spoiler

3. Das Feld kann den Wert 1 oder 0 haben, bei 1 soll der normale Text angezeigt werden, bei 0 der Ersatztext.
Benutzeravatar
punkface
Mitglied
Beiträge: 3579
Registriert: 12.08.2004 23:37

Beitrag von punkface »

edit 16.50: Fuck.. war ein Fehler in der Anleitung .. sollte jetzt so stimmen :D
edit 17.40: So, jetzt sollte es aber stimmen :D

Versuchs mal damit:

bbcode.php
suche

Code: Alles auswählen

function bbencode_second_pass($text, $uid)
{
	global $lang, $bbcode_tpl;
ersetzten mit

Code: Alles auswählen

function bbencode_second_pass($text, $uid)
{
	global $lang, $bbcode_tpl, $userdata;
suche

Code: Alles auswählen

	// Patterns and replacements for URL and email tags..
	$patterns = array();
	$replacements = array();
danach einfügen

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);
	}
suche

Code: Alles auswählen

    // Remove our padding from the string.. 
    return substr($text, 1);; 

} // bbencode_first_pass()
davor einfügen

Code: Alles auswählen

	// [spoiler] and [/spoiler]
	$text = preg_replace("#\[spoiler\](.*?)\[/spoiler\]#si", "[spoiler:$uid]\\1[/spoiler:$uid]", $text);
bbcode.tpl
(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 -->
(Das muss natürlich noch entsprechend ersetzt werden)
Zuletzt geändert von punkface am 09.03.2006 17:41, insgesamt 1-mal geändert.
WTB
Mitglied
Beiträge: 10
Registriert: 03.10.2004 18:07

Beitrag von WTB »

Funktioniert leider nicht, es wird nur folgendes angezeigt:
[spoiler:972e8285c2]Dies ist ein Spoiler![/spoiler:972e8285c2]
Benutzeravatar
punkface
Mitglied
Beiträge: 3579
Registriert: 12.08.2004 23:37

Beitrag von punkface »

Hast du das auch eingebaut:
punkface hat geschrieben:bbcode.php
suche

Code: Alles auswählen

	// Patterns and replacements for URL and email tags..
	$patterns = array();
	$replacements = array();
danach einfügen

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);
	}
WTB
Mitglied
Beiträge: 10
Registriert: 03.10.2004 18:07

Beitrag von WTB »

Jo, das is eingebaut.
Benutzeravatar
punkface
Mitglied
Beiträge: 3579
Registriert: 12.08.2004 23:37

Beitrag von punkface »

Verlink mal bitte die bbcode.php als .txt-Datei (siehe KB:datei)
WTB
Mitglied
Beiträge: 10
Registriert: 03.10.2004 18:07

Beitrag von WTB »

//Edit: Habs geschafft :)

Das:

Code: Alles auswählen

// [spoiler] and [/spoiler]
   $text = preg_replace("#\[spoiler\](.*?)\[/spoiler\]#si", "[spoiler:$uid]\\1[/spoiler:$uid]", $text); 
musste an anderer Stelle eingefügt werden, nämlich vor

Code: Alles auswählen

	// Patterns and replacements for URL and email tags..
	$patterns = array();
	$replacements = array();
Benutzeravatar
punkface
Mitglied
Beiträge: 3579
Registriert: 12.08.2004 23:37

Beitrag von punkface »

Naja, eigentlich sollte es so sein:

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() 
ersetzte mit

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()
suche

Code: Alles auswählen

    // Remove our padding from the string.. 
    return substr($text, 1);; 

} // bbencode_first_pass() 
ersetzten mit

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() 
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...
Antworten

Zurück zu „phpBB 2.0: Mod Suche/Anfragen“