Scoutnet vzw
http://forum.scoutnet.be/

[PHPBB] topics als nieuws
http://forum.scoutnet.be/viewtopic.php?f=19&t=1875
Pagina 1 van 1

Auteur:  Zomboolio [ 07 Jun 2007 8:13 ]
Titel:  [PHPBB] topics als nieuws

Hey,

ik zou dus graag willen dat de topics in een bepaald subforum als nieuws op mijn voorpagina verschijnen (zoals al enkele mensen hier doen). Geen probleem, alleen kan ik maar niet uitgepluisd krijgen hoe de opmaak van een post "vertaald" wordt door phpbb. Iemand hier al meer ervaring mee?

Alvast bedankt!

Auteur:  Natrium [ 07 Jun 2007 8:47 ]
Titel: 

bedoel je dat je niet weet hoe de UBB-code (zoals bv [i]blablabla[/i]) wordt omgezet naar de gewone html (zijnde <i>blablabla</i> ) ?

Auteur:  Zomboolio [ 07 Jun 2007 12:33 ]
Titel: 

ja, meer specifiek, hoe phpbb dat doet. In de database staat zoiets als [b:32452]blah[/b]. Dan moet er een functie zijn die dit interpreteert en omzet naar html é, maar die kan ik maar niet vinden...

Auteur:  Natrium [ 07 Jun 2007 12:46 ]
Titel: 

in viewtopic.php:

Code:
   //
   // Parse message and/or sig for BBCode if reqd
   //
   if ($user_sig != '' && $user_sig_bbcode_uid != '')
   {
      $user_sig = ($board_config['allow_bbcode']) ? bbencode_second_pass($user_sig, $user_sig_bbcode_uid) : preg_replace("/\:$user_sig_bbcode_uid/si", '', $user_sig);
   }

   if ($bbcode_uid != '')
   {
      $message = ($board_config['allow_bbcode']) ? bbencode_second_pass($message, $bbcode_uid) : preg_replace("/\:$bbcode_uid/si", '', $message);
   }


en die bbencode_second_pass is terug te vinden in include/bbcode.php

Auteur:  Velle [ 07 Jun 2007 12:48 ]
Titel: 

Ik doe het zo:

Code:
  function BB_to_HTML( $content )
  {
    $content = preg_replace('/\:[0-9a-z\:]+\]/si', ']', $content);

    $content = str_replace( "[b]", "<strong>", $content);
    $content = str_replace( "[/b]", "</strong>", $content);

    $content = str_replace( "[i]", "<em>", $content);
    $content = str_replace( "[/i]", "</em>", $content);

    $content = str_replace( "[u]", "<span class='u'>", $content);
    $content = str_replace( "[/u]", "</span>", $content);

    $content = str_replace( "[quote]", "<div class='quote'><p class='quotetext'>", $content);

    $content = preg_replace( '/\[quote:([0-9a-z]{10})="([0-9a-zA-Zé]+)"\]/', "<div class='quote'><div class='quotehead'>\$2 zei:</div><p class='quotetext'>", $content);
    $content = preg_replace( '/\[quote="([0-9a-zA-Zé ]+)"\]/', "<div class='quote'><div class='quotehead'>\$1 zei:</div><p class='quotetext'>", $content);
    $content = preg_replace( '/\[\/quote:([0-9a-z]{10})\][ \t\r\n]*/', "</p></div><br />", $content);
    $content = preg_replace( '/\[\/quote\][ \t\r\n]*/', "</p></div><br />", $content);

    $content = str_replace( "[code]", "<strong>Code</strong><em>", $content);
    $content = str_replace( "[/code]", "</em>", $content);

    $content = str_replace( "[list]", "<div class='list'>", $content);
    $content = str_replace( "[/list]", "</div>", $content);

    $content = preg_replace( '/\[list\](.*)\[\/list\]/si', "<div class=\"list\">$1</div>", $content);
    $content = preg_replace( '/\[list=(.*)\](.*)\[\/list\]/si', "<div class=\"list\">$1</div>", $content);

    $content = str_replace( "[img]", "<img class='foto' src=\"", $content);
    $content = str_replace( "[/img]", "\" alt=\"\" />", $content);

    $content = preg_replace( '/\[url\](.*)\[\/url\]/Usi', '<a href="$1">$1</a>', $content);
    $content = preg_replace( '/\[url=(.*)\](.*)\[\/url\]/Usi', '<a href="$1">$2</a>', $content);

    $content = str_replace( "\n", "<br />", $content);

    return $content;
  }


Waarschijnlijk niet volledig correct, maar ik heb er nog geen problemen meer gehad. Om de smiley's ook om te zetten heb je volgende code nodig:

Code:
  function smilies_pass( $message )
  {
     static $orig, $repl;

     if( !isset( $orig ) )
     {
        global $db, $phpbb_root_path;
        $orig = $repl = array();

        $sql = 'SELECT * FROM `phpbb_smilies`';

        if( !$result = $db->sql_query($sql) )
        {
           message_die( GENERAL_ERROR, "Couldn't obtain smilies data", "", __LINE__, __FILE__, $sql );
        }

        $smilies = $db->sql_fetchrowset($result);

        if( count( $smilies ) )
        {
          usort( $smilies, 'smiley_sort' );
        }

        for( $i = 0; $i < count( $smilies ); $i++ )
        {
           $orig[] = "/(?<=.\W|\W.|^\W)" . phpbb_preg_quote($smilies[$i]['code'], "/") . "(?=.\W|\W.|\W$)/";
           $repl[] = '<img src="' . $phpbb_root_path . 'images/smiles/' . $smilies[$i]['smile_url'] . '" alt="' . $smilies[$i]['emoticon'] . '" />';
        }
     }

     if( count( $orig ) )
     {
        $message = preg_replace( $orig, $repl, ' ' . $message . ' ' );
        $message = substr( $message, 1, -1 );
     }

     return $message;
  }

  function smiley_sort( $a, $b )
  {
     if ( strlen( $a['code'] ) == strlen( $b['code'] ) )
     {
        return 0;
     }

     return ( strlen( $a['code'] ) > strlen( $b['code'] ) ) ? -1 : 1;
  }

Pagina 1 van 1 Alle tijden zijn UTC + 1 uur
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/