Seite 1 von 1

BBCode in Mod einfügen

Verfasst: 24.08.2006 22:31
von Gooof
Hi,

ich habe hier ein Mod, bei dem man im Adminbereich einen Text hinzufügen kann der dann auf der index.php angezeigt wird. Könnte mir bitte einer sagen wie ich da den BBCode drüber laufen lassen kann, das dieser ausgegeben wird??

BITTE BITTE!!! :D

Code: Alles auswählen

   //
   // MOD Index-News BEGIN
   //
   if ( $userdata['session_logged_in'] )
   {
      // News anzeigen wenn User eigeloggt ist
      if ( $board_config['mod_news'] == 1 )
      {
         // News aktiviert und anzeigen
         $mod_news_msg = $board_config['mod_news_msg'];
         if ( $board_config['allow_smilies'] )
         {
            // Smilies aktiviert und einfügen
            $mod_news_msg = smilies_pass($mod_news_msg);
         }
         $mod_news_msg = str_replace("\n", "\n<br />\n", $mod_news_msg);
         //$mod_news_msg = bbcode($mod_news_msg);

         $template->assign_block_vars('index_news', array(
            'L_INDEX_NEWS' => $lang['Index_Mod_News'],
            'L_INDEX_NEWS_MSG' => $mod_news_msg,
            'INDEX_NEWS_IMG' => $images['forum_new']
            ));
      }
   }
   else
   {
      // Info anzeigen wenn nicht registriert/nicht eingeloggt
      if ( $board_config['mod_info'] == 1 )
      {
         // Info aktiviert und anzeigen
         $mod_info_msg = $board_config['mod_info_msg'];
         if ( $board_config['allow_smilies'] )
         {
            // Smilies aktiviert und einfügen
            $mod_info_msg = smilies_pass($mod_info_msg);
         }
         $mod_info_msg = str_replace("\n", "\n<br />\n", $mod_info_msg);
         //$mod_news_msg = bbcode($mod_news_msg);
         $template->assign_block_vars('index_news', array(
            'L_INDEX_NEWS' => $lang['Index_Mod_Info'],
            'L_INDEX_NEWS_MSG' => $mod_info_msg,
            'INDEX_NEWS_IMG' => $images['forum_new']
            ));
      }
   }
   
   //
   // MOD Index-News END
   // 

Verfasst: 24.08.2006 23:52
von punkface
Ganz einfach:

Adminbereich:
  • bbcode.php includen
  • mit make_bbcode_uid() BBCode UID erzeugen, welche auch in der Datenbank gespeichert werden muss
  • Funktion bbencode_first_pass() aufrufen. 1. Parameter ist der entsprechende Text, der 2. Parameter ist die erzeugte BBCode UID
Index:
  • bbcode.php includen
  • die Funktion bbencode_second_pass() verwenden um die BBCodes durch HTML zu ersetzten. 1. Parameter ist wieder der entsprechende Text, 2. Parameter die im Adminbereich erzeugte, und in der Datenbank gespeicherte BBCode UID

Verfasst: 25.08.2006 13:46
von Gooof
@punkface very THX!! Jetzt bin ich schon sehr viel weiter, nur 1-2 Fragen habe ich noch.

- Wo muss ich denn die make_bbcode_uid() BBCode UID in der Datenbank Speichern? Es ist ja die Index Seite... diese hat keine extra Tabelle.

- zum ausgeben des Code wäre dann wohl folgendes richtig:
bbencode_second_pass($mod_news_msg, $bbcode_uid);

- jetzt muss ich nur noch im Adminbereich die Funktion einbauen und fertig?!?

Verfasst: 25.08.2006 14:19
von punkface
1. Ich würd die BBCode UID in der Tabelle prefix_config speichern, denn da wird ja offensichtlich auch die Newsmeldung gespeichert ->

Code: Alles auswählen

$mod_news_msg = $board_config['mod_news_msg'];
2. und 3. Jep ;)

Verfasst: 25.08.2006 19:06
von Gooof
ach so... lol na klar das wird dann ja so gespeichert mit der Nachricht [ b:325fgd ]blub[ /b ], ich teste das gleich mal!

Verfasst: 26.08.2006 22:05
von Gooof
ich habe jetzt soweit alles geändert aber ohne Erfolg.

Der neue Code in der admin_board.php:

Code: Alles auswählen

include($phpbb_root_path . 'includes/bbcode.'.$phpEx);

$BBuid = make_bbcode_uid();
$mod_info_MSG = bbencode_first_pass($new['mod_info_msg'], $BBuid);
$mod_news_MSG = bbencode_first_pass($new['mod_news_msg'], $BBuid);
Soweit so gut... jetzt wird in der Textbox der BBCode der vorher so aussah:

Code: Alles auswählen

[b]test[/b]
nun einfach so geschrieben:

Code: Alles auswählen

[b:45sdg2]test[/b:45sdg2]
Auf der Index Seite wo der BB Code nun in HTML umgewandelt werden soll, steht da jetzt alles einfach so in Text also: Hallo [b:45sdg2]test[/b:45sdg2]!


Kann ich den BBCode den nicht im Adminbereich so eintragen:

Code: Alles auswählen

Test Text und hier [b]BBcode[/b]
Der wird dann einfach auf der Index Seite in HTML umgewandelt und fertig?

Verfasst: 27.08.2006 16:09
von punkface
Gooof hat geschrieben:Soweit so gut... jetzt wird in der Textbox der BBCode der vorher so aussah:

Code: Alles auswählen

[b]test[/b]
nun einfach so geschrieben:

Code: Alles auswählen

[b:45sdg2]test[/b:45sdg2]
So weit ist doch alles richtig. Wenn du irgendwo den BBCode so anzeigen willst, wie er eingegeben wurde, musst du die BBCode UID natürlich wieder aus den BBCode-tags entfernen.
Beispiel-Code aus der posting.php

Code: Alles auswählen

		if ( $post_info['bbcode_uid'] != '' )
		{
			$message = preg_replace('/\:(([a-z0-9]:)?)' . $post_info['bbcode_uid'] . '/s', '', $message);
		}
Gooof hat geschrieben:Auf der Index Seite wo der BB Code nun in HTML umgewandelt werden soll, steht da jetzt alles einfach so in Text also: Hallo [b:45sdg2]test[/b:45sdg2]!
Funktion bbencode_second_pass() nicht ausgeführt oder falsche BBCode UID übergeben.
Gooof hat geschrieben:Kann ich den BBCode den nicht im Adminbereich so eintragen:

Code: Alles auswählen

Test Text und hier [b]BBcode[/b]
Der wird dann einfach auf der Index Seite in HTML umgewandelt und fertig?
Wenn beide Funktionen um korrekten BBCode zu erkennen und diesen in HTML umzuwandeln zwei Argumente, nämlich den Text und die BBCode UID brauchen? .. Natürlich!

Code: Alles auswählen

bbencode_second_pass(bbencode_first_pass(TEXT, BBCODE_UID), BBCODE_UID);
So kommen aber bei jedem Aufruf der index.php haufenweise preg_match und preg_replace-Aufrufe aus der bbcode_first_pass() hinzu ...

Verfasst: 27.08.2006 19:53
von Gooof
Puuhh... ganz schön viel arbeit! Ich hatte ja fast alles richtig macht bis auf die Ausgabe. (bbencode_second_pass).
Mir ist gestern aufgefallen, das die Infobox mit HTML Code läuft, das heißt ich schreibe den Code da jetzt direkt rein, so braucht man keinen BBCode mehr. :wink:
Problem ist dann jetzt behoben, ich bleibe bei HTML! (da gibt es auch mehr Codes) :wink:

@punkface... sag mal bist du eigentlich der einzige hier, der sowas kann? :D Ich habe hier noch von keinem solche Antworten gekriegt wie von Dir! DANKE!!