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:wink:
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 :oops:.

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..

Code: Alles auswählen

$message_bbcode = $zeileholen['privmsgs_bbcode_uid'];
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... :wink: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. :grin: :roll: