Seite 1 von 1

BB Button (switch innerhalb von posts)

Verfasst: 24.12.2006 19:37
von warefare.net
Hallo ,
frohe weihnachten zusammen :)
Bei uns gibbet gleich erst Essen also bastel ich noch an meinem forum...


Ich dachte mir das ein BBCode völlig fehlt, der aber in anderen Foren integriert ist. Undzwar kann man in anderen Foren Post-Schnipsel für Gäste ausblenden. Z.B. wenn man irgend nen Code hat innerhalb von nem post und aufgrund von Code-Klau sowas nur für registrierte Benutzer freigeben will, aber nicht gleich das ganze forum sperren will (Nur ein Beispiel)

Also hab ich mir gedacht fügen wir das in die bbcode.php ein:

Code: Alles auswählen

[find]
// [i] and [/i] for italicizing text.
$text = str_replace("[i:$uid]", $bbcode_tpl['i_open'], $text);
$text = str_replace("[/i:$uid]", $bbcode_tpl['i_close'], $text); 

[after add]
$text = str_replace("[switch:$uid]", '<!-- BEGIN switch --> ', $text);
$text = str_replace("[/switch:$uid]", '<!-- END switch --> ', $text); 

Code: Alles auswählen

[#find]
// [i] and [/i] for italicizing text.
$text = preg_replace("#\[i\](.*?)\[/i\]#si", "[i:$uid]\\1[/i:$uid]", $text);

[#after add]
$text = preg_replace("#\[switch\](.*?)\[/switch\]#si", "[switch:$uid]\\1[/switch:$uid]", $text);

Nun noch in viewtopic.php

Code: Alles auswählen

[#find]
}
$template->pparse('body');

[#before add]
if ( !$userdata['session_logged_in'] )
{
  $template->assign_block_vars('postrow.switch',   array());
}
als dies nicht klappte dacht ich mir dass man das evtl in der page header einfügen könnt also

Code: Alles auswählen

[#find]
if ( $userdata['session_logged_in'] )
{
[#after add]
$template->assign_block_vars('postrow.switch',   array());
Hat wer ne idee was ich verändern muss, damit es funktioniert ?

Verfasst: 25.12.2006 00:17
von gn#36
Wenn ich richtig verstanden habe was du machen willst dann kann ich dir sagen dass das so niemals funktionieren wird. Jeder BBcode muss so gestaltet sein, dass er nicht erst noch von dem Template Compiler interpretiert werden muss. Genau dass ist aber bei dir der Fall, du versuchst in dem BBcode Templatefunktionen zu verwenden. Der BBcode ersetzt aber nur den [xyz] Kram durch echtes HTML, daher wirst du an den Stellen wenn du es probierst lediglich zwei HTML Kommentare vorfinden.

Die einzige Möglichkeit dies zu realisieren besteht darin, beim zweiten Ersetzen dieses Codes darauf zu achten, ob der betrachtende User gast ist oder nicht. Wenn ja dann ersetzt du den ganzen Kram durch einen leeren String (oder vielleicht besser durch ein Leerzeichen). Wenn nein ersetzt du nur die Tags durch nichts.