Seite 1 von 2
bbCode auserhalb des Forums...
Verfasst: 14.12.2003 16:17
von hibbert
Hi,
wie kann ich den BBCode außerhalb des Forums nutzen?
Ich habe da schon was gefunden, aber das funzt net. MeinBBCode reagiert nur auf die Typischen zeichen wie [ b] und [ /b]. Doch in der Datenbank wird vom Forum folgendes eingetragen:
[b:799d1b4f3b]Text[/b:799d1b4f3b]
wieso? und wie kann ich jetzt außerhalb des Forums erreichen, dass Text fett geschrieben wied?
thx hibbert
Verfasst: 14.12.2003 16:24
von Nico Haase
kommt drauf an, was du machen willst. wenn du die forenbeiträge von außen lesen willst, dann schnapp dir die uid (feld bbcode_uid in PHPBB_posts_text) und den text und jag beides durch die bbcode.php-funktionen, das geht mit
Code: Alles auswählen
<?php
include (PHPBB-ORDNER."/includes/bbcode.php");
$text = bbencode_second_pass($message, $bbcode_uid)
?>
Verfasst: 14.12.2003 18:04
von hibbert
ich habe folgendes versucht:
Code: Alles auswählen
include ("../forum/includes/bbcode.php");
$text = bbencode_second_pass($message, $bbcode_uid);
echo $text;
nun eigendlich sollte die Nachricht so aussehen:
Juhuuu
aber sie sieht nun so aus:
[b:58623378cd]juhuuu[/b:58623378cd] : wink:
und so bestimme ich die Var $message:
Code: Alles auswählen
$sql = "SELECT privmsgs_text FROM phpbb_privmsgs_text WHERE privmsgs_text_id = '$id'";
$query = mysql_query($sql);
$zeileholen = mysql_fetch_array($query);
$message=$zeileholen["privmsgs_text"];
Was habe ich falsche gemacht oder anders gefragt, warum funzt das net?
thx hibbert
Verfasst: 14.12.2003 18:26
von Acid
Du musst nicht nur den Text sondern auch die bbcode_uid auslesen und ausgeben.. damit der BBcode dann richtig umgewandelt wird.
Schau dir am besten mal die viewtopic.php an, wie´s da gehandhabt wird.
Verfasst: 15.12.2003 18:46
von hibbert
mhhh,
phpbb wurde ja sicherlich von Profis geproggt. da ist viel dabei was ich nicht ganz so verstehe

.
Ich finde das einfach nicht, wo die den Text in den Bbcode umwandeln...
kannst du mir vielleicht noch nen tipp geben?
thx hibbert
Verfasst: 16.12.2003 06:04
von Acid
hmm..
Bei der obigen sql-Anweisung musst du zusätzlich noch die bbcode_uid abfragen (einfach "privmsgs_bbcode_uid" nach "privmsgs_text" eintragen).
Da´s weiter unten benötigt wird, musst du noch einige Sachen aus der "privmsgs" Tabelle abfragen. Du kannst die sql-Anweisung dementsprechend erweitern; in etwa folgendermaßen..
$sql = "SELECT privmsgs_id, privmsgs_enable_bbcode, privmsgs_enable_html, privmsgs_enable_smilies, privmsgs_text_id, privmsgs_text, privmsgs_bbcode_uid FROM phpbb_privmsgs, phpbb_privmsgs_text WHERE privmsgs_text_id = privmsgs_id AND privmsgs_id = '$id'";
Die Erweiterung der where-Klausel ist notwendig, damit die zueinander passenden Einträge in den beiden Tabellen gefunden werden.
Nach $message gibst du dann $message_bbcode aus..
Mit ein paar Funktionen wird dann die bbcode_uid umgewandelt.. und noch einiges andere..
Code: Alles auswählen
if( $zeilenholen['privmsgs_enable_html'] )
{
$message = preg_replace('#(<)([\/]?.*?)(>)#is', "<\\2>", $message);
}
if( $message_bbcode_uid != '' )
{
$message = bbencode_second_pass($message, $message_bbcode);
}
$message = make_clickable($message);
$orig_word = array();
$replacement_word = array();
obtain_word_list($orig_word, $replacement_word);
if( count($orig_word) )
{
$message = preg_replace($orig_word, $replacement_word, $message);
}
if( $zeilenholen['privmsgs_enable_smilies'] )
{
$message = smilies_pass($message);
}
$message = str_replace("\n", '<br />', $message);
Verfasst: 16.12.2003 14:10
von hibbert
ok, mein quelltext sieht jetzt so aus:
Code: Alles auswählen
// Nachricht empfangen bzw. anzeigen.
$sql = "SELECT privmsgs_id, privmsgs_enable_bbcode, privmsgs_enable_html, privmsgs_enable_smilies, privmsgs_text_id, privmsgs_text, privmsgs_bbcode_uid FROM phpbb_privmsgs, phpbb_privmsgs_text WHERE privmsgs_text_id = privmsgs_id AND privmsgs_id = '$id'";
$query = mysql_query($sql);
$zeileholen = mysql_fetch_array($query);
$message=$zeileholen["privmsgs_text"];
$message_bbcode = $zeileholen['privmsgs_bbcode_uid'];
include ("../forum/includes/bbcode.php");
if( !$board_config['allow_html'] ) //ob im Adminpanel HTML aktiviert ist
{
if( $zeilenholen['privmsgs_enable_html'] ) //ob beim Schreiben der Nachricht HTML aktiviert wurde
{
$message = preg_replace('#(<)([\/]?.*?)(>)#is', "<\\2>", $message);
}
}
(...)
if( $board_config['allow_smilies'] && $zeilenholen['privmsgs_enable_smilies'] ) //ob im Adminpanel und beim Schreiben Smilees aktiviert sind
{
$message = smilies_pass($message);
}
$message = str_replace("\n", '<br />', $message);
echo $message;
echo $message_bbcode;
Ich habe den Quelltext für deisen Beitrag gekürzt, da ich da nichts verändert habe...
und was dabei rauskommt ist das:
Browser hat geschrieben:[b:66d291fa51]Moinsen[/b:66d291fa51] Ok, das reicht dann schon wieder...

66d291fa51
Warum funzt das jetzt schonwieder net??
Danke für deine bisherige Hilfe !
hibbert
Verfasst: 16.12.2003 16:17
von Acid
aso.. lass mal die Abfragen bezüglich $board_config['...'] weg, denn das funktioniert nur, wenn du die common.php einbindest.
$message_bbcode brauchst du übrigens nicht mit´m echo ausgeben.
Verfasst: 16.12.2003 16:35
von hibbert
mhhh,
ich habe die abfragen rausgelassen und trotzdem funzt es net.
Code: Alles auswählen
$sql = "SELECT privmsgs_id, privmsgs_enable_bbcode, privmsgs_enable_html, privmsgs_enable_smilies, privmsgs_text_id, privmsgs_text, privmsgs_bbcode_uid FROM phpbb_privmsgs, phpbb_privmsgs_text WHERE privmsgs_text_id = privmsgs_id AND privmsgs_id = '$id'";
$query = mysql_query($sql);
$zeileholen = mysql_fetch_array($query);
$message=$zeileholen["privmsgs_text"];
$message_bbcode = $zeileholen['privmsgs_bbcode_uid'];
include ("../forum/includes/bbcode.php");
//wenn URLs geschrieben wurden, sollten diese klickbar sein?
$message = make_clickable($message);
//falls du bei dem Text die Zensur anwenden willst
$orig_word = array();
$replacement_word = array();
obtain_word_list($orig_word, $replacement_word);
if( count($orig_word) )
{
$message = preg_replace($orig_word, $replacement_word, $message);
}
//damit beim Schreiben eingefügt Absätze auch als solche dargestellt werden
$private_message = str_replace("\n", '<br />', $private_message);
$message_bbcode;
echo $message;
hibbert
Verfasst: 16.12.2003 16:49
von Acid
hmm.. ich hab meinen ersten Beitrag nochmal ausgebessert.
Es waren einige Fehler drin.
