Página 1 de 1

Interpretar BBCode de PHPBB en mi Web

Publicado: 03 Nov 2011, 02:19
por EdgarAlexander
URL: http://residentevilspace.zxq.net/foro/
Versión phpBB: 3.0.9
MODs Instalados: Ninguno
Plantilla(s) usada(s): Cooperative
Servidor: Linux | Apache | Gratuito | Zymic Hosting
Actualización desde otra versión: No
Conversión desde otro sistema de foros: No

Buenas gente de PHP, una vez más necesito de su ayuda, resulta que quiero consultar los posts de mi foro en mi Web, pero a su vez interpretar los BBCodes de cada uno, ¿Me podrían decir como, o que script utilizan, o una guía para implementarlo en mi plantilla?

Muchas Gracias, y que pasen una agradable noche...

Alex

Re: Interpretar BBCode de PHPBB en mi Web

Publicado: 03 Nov 2011, 02:26
por Alorse
Haber si entendí, quieres listar los temas del foro en la pagina aparte. Como vas a hacer eso? o como lo hiciste?

Muevo el tema al foro de phpBB avanzado.


Re: Interpretar BBCode de PHPBB en mi Web

Publicado: 03 Nov 2011, 16:05
por EdgarAlexander
Hola Alorse, ¿Cómo estás..? Bueno este tema es muy parecido a uno de los que he hecho anteriormente (solo que aquella vez era solo una consulta a los "topic_replies") si no fui muy claro me disculpo y aclaro:

Normalmente para consultar el contenido de un tema o post se tiene que hacer una consulta a la DB.. entonces:

$myquery = "SELECT post_text FROM foro_post WHERE post_id = 'x'";

Entonces listo, ya consulté mi post y lo presento en mi página aparte QUE NO ES DE PHPBB, pero hay un problema, y ese problema es que al mostrar el contenido del post, este se muestra con el BBCode..

Entonces, para presentar mis posts en la página principal yo no utilizo esa forma (ya que no me conviene al mostrarme el BBCode sin interpretarse), yo simplemente los edito directo con el HTML, mi duda acá es ¿Que método o script utiliza PHPBB para interpretar el BBCode en forma de HTML..?

Esa es mi pregunta, Muchas Gracias...

Re: Interpretar BBCode de PHPBB en mi Web

Publicado: 03 Nov 2011, 16:15
por nextgen
Nose si esta guía te sirva para lo que buscas.

Tutorial.Parsing text

Re: Interpretar BBCode de PHPBB en mi Web

Publicado: 03 Nov 2011, 16:34
por Alorse
Lo que pasa es que aparte de llamar el post_text hay que llamar otros dos campos necesarios para interpretar los BBCodes bbcode_uid y bbcode_bitfield y luego de ello llamar otros métodos propios de phpBB para entrar esos campos e interpretar el texto y luego mostrarlo codificado con los BBCodes.
Si puedes dejar el script completo de lo que estas haciendo seria de más ayuda para decirte como lo debes hacer.

Es algo parecido a lo que muestra nextgen, intenta de esa manera o deja el script para poder ayudarte mejor.

Re: Interpretar BBCode de PHPBB en mi Web

Publicado: 03 Nov 2011, 19:17
por EdgarAlexander
Gracias por la ayuda Alorse y Nextgen, prefiero que me echéis una mano vos, aquí tienes mi Script:

Código: Seleccionar todo


<?php

// String de conexión a la base de datos.

$conexion = mysql_connect("xxxx", "xxxx", "xxxx");
mysql_select_db("xxxx", $conexion);

// Consultamos los posts:

$quer = "SELECT post_text FROM foro_posts ORDER BY post_id DESC";
$res = mysql_query($quer, $conexion);
$end = mysql_fetch_array($res);
$contador = 0;

// Los imprimimos uno por uno:

    do {

    $post = $end[post_text];
    
// Antes que nada, aseguramos que el post corresponda al foro 3 (Noticias y Atc) y el     poster id del Administrador (2).

    // Consultamos si es de administrador:

    $quer_2 = "SELECT poster_id FROM foro_posts WHERE post_text = '$post'" or die (mysql_error());
    $res_2 = mysql_query($quer_2, $conexion);
    $end_2 = mysql_fetch_assoc($res_2);
    
    // Consultamos si es del foro 3:
    
    $quer_3 = "SELECT forum_id FROM foro_posts WHERE post_text = '$post'" or die (mysql_error());
    $res_3 = mysql_query($quer_3, $conexion);
    $end_3 = mysql_fetch_assoc($res_3);

// Sé que hay estas dos consultas se pueden hacer en una sola, pero no se como representar un datos específico a través de un array, si sabéis como, estaré muy agradecido...

    $admin = $end_2[poster_id];
    $foro = $end_3[forum_id];
    
        if ($admin == 2 && $foro == 3)

        {
            
            $contador = $contador + 1;
            
            if ($contador <= 4)
            
            {
            
            echo $post, '<br /><br />';

            }
            
        }

    }

    while($end = mysql_fetch_array($res))
    
?>


Re: Interpretar BBCode de PHPBB en mi Web

Publicado: 04 Nov 2011, 01:42
por Alorse
A mi ese script no me muestra absolutamente nada :S :nolose:
Pero veo que pretendes sacar solamente los temas de un foro en especifico y de un mismo autor, si quieres especifica concretamente que quieres hacer y vemos la manera mas optima y adecuada de hacerlo.

Re: Interpretar BBCode de PHPBB en mi Web

Publicado: 04 Nov 2011, 17:07
por EdgarAlexander
Lo que pasa, es que en realidad no me interesa modificar nada sel script ya que este me funciona sin problemas, lo que yo quiero en específico es que el BBCode que se muestra en cada uno de los temas impresos a través de la consulta se interprete como HTML, es decir, que se muestre en forma de colores, imágenes, vídeos, saltos de líneas, etc, a través del script de ustedes, y no las etiquetas de texto (ejemplo )..

Re: Interpretar BBCode de PHPBB en mi Web

Publicado: 04 Nov 2011, 17:13
por Alorse
Para serte sincero a mi ese script no me funciona, lo probé en local y no me funciona, no se si sera porque quieres hacer algo en especifico y no lo comprendo, pero como te digo, no sé como ayudarte si el código que pones allí no me esta funcionando.

De igual manera si lo quieres intentar, lo que debes hacer es lo siguiente:
Llamar en la primera consulta, los otros dos campos que te indico bbcode_uid y bbcode_bitfield y luego pasarlos por el siguiente script:

Código: Seleccionar todo

    // Instantiate BBCode if need be
    if ($bbcode_bitfield !== '')
    {
        $bbcode = new bbcode(base64_encode($bbcode_bitfield));
    }
    $bbcode->bbcode_second_pass($post_text, $posts_row['bbcode_uid'], $posts_row['bbcode_bitfield']);

    $post_text = smiley_text($post_text); 
pero esos metodos son propios de phpBB, así que debes buscar la manera de llamarlos.
EdgarAlexander escribió:en realidad no me interesa modificar nada sel script ya que este me funciona sin problemas
Si qeuires que interprete los BBCode tendrás que hacerlo.

Re: Interpretar BBCode de PHPBB en mi Web

Publicado: 04 Nov 2011, 17:15
por EdgarAlexander
Vale, ya veré que hago, Gracias por tu ayuda Alorse que tengas buen día...

Lo marcaré como solucionado, cuando resuelva..

Re: Interpretar BBCode de PHPBB en mi Web  Tema Solucionado

Publicado: 05 Nov 2011, 00:14
por canidev
Para interpretar los bbcodes necesitas cargarlo todo, incluida la sesión del usuario porque necesitas cargar el archivo del estilo (bbcode.html) por lo que tendrás que usar las funciones de phpBB.

No lo he probado demasiado, pero el código que necesitas es algo como esto:

Código: Seleccionar todo

<?php
define('IN_PHPBB', true);
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);

// Start session management
$user->session_begin();
$auth->acl($user->data);
$user->setup();

$row_limit	= 5; // Limite de posts a mostrar
$admin_id	= 2; // Id del administrador
$forum_ids	= array(3); // Ids de los foros de donde se leeran los posts Ej, array(1, 2, 3)

$bbcode_bitfield = '';
$post_rows = array();

$sql = 'SELECT post_text, bbcode_uid, bbcode_bitfield
	FROM ' . POSTS_TABLE . "
	WHERE poster_id = $admin_id
	AND " . $db->sql_in_set('forum_id', $forum_ids) . '
	ORDER BY post_id DESC';
$result = $db->sql_query_limit($sql, $row_limit);

// Leemos la información de los post para interpretarla mas adelante
while($row = $db->sql_fetchrow($result))
{
	$post_rows[] = $row;
	$bbcode_bitfield = $bbcode_bitfield | base64_decode($row['bbcode_bitfield']);
}
$db->sql_freeresult($result);

// Cargamos las funciones del bbcode si son necesarias
if ($bbcode_bitfield !== '')
{
	include($phpbb_root_path . 'includes/bbcode.' . $phpEx);
	$bbcode = new bbcode(base64_encode($bbcode_bitfield));
}

foreach($post_rows as $row)
{
	$message = $row['post_text'];

	// Segundo paso del bbcode
	if (!empty($row['bbcode_bitfield']))
	{
		$bbcode->bbcode_second_pass($message, $row['bbcode_uid'], $row['bbcode_bitfield']);
	}

	// Emoticonos y saltos de linea
	$message = bbcode_nl2br($message);
	$message = smiley_text($message);

	echo $message . '<br /><br />'; // Imprimimos el resultado
}

?>
Está basado en tu código, el código comprueba el id del administrador y también el foro/foros en los que se leerán los posts.

Acuerdate de cambiar ./ por la ruta desde la página hasta el directorio del foro, en la línea $phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';.
Por ejemplo: $phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './foro/';

Re: Interpretar BBCode de PHPBB en mi Web

Publicado: 05 Nov 2011, 13:57
por EdgarAlexander
Canidev, lo admiro es el mejor, me ha funcionado perfectamente, muchísimas gracias por tomarse su tiempo para ayudarme, la verdad que lo aprecio mucho, le doy igual gracias a los demás usuarios por lo mismo..

¡Que pasen un bonito fin de semana!

Alex