[VBULLETIN] Cómo añadir ultimos mensajes del foro en la portada de la página web

Saludos compañeros.

Qué creeis? Que por se el webmaster de CCTW no tengo mis dudas? je je je je. Pues ahí va una!

Algún compañero del foro me ha comentado que no supo que CCTW tenía foro hasta haberla visitado dos o tres veces. Se estaba perdiendo lo mejor, sin duda, a vosotros! je je je.

Quisiera, para hacer el foro más visible, añadir una capa, un recuadro en la página principal, en la que mostrar los últimos mensajes publicados en este foro. Es un foro vBulletin como sabéis. Si alguien sabe cómo hacerlo, agradecería pistas. Yo buscaré por mi cuenta, claro, y publicaré acá lo que descubra por si os es útil a alguno más.

También podría ser interesante añadir lo mismo pero no en la portada, sino en la página de entrada de por ejemplo la sección "La promoción de Webs". En ese caso me interesaría que aparecieran claro los últimos mensajes publicados en esa misma sección del foro. Es decir, últimos mensajes del tema X del foro en la página principal de ese mismo tema en la página correspondiente de CCTW.

Parece una buena idea, no?

A ver qué sacamos en claro!
Por ahora lo que busco no me gusta mucho, ni está en fase creo con la versión que tengo de vBulletin. Además temo que con las actualizaciones del foro se me venga abajo...

Voy a ver si consigo crear un usuario más para la base de datos de vbulletin. Le daria permisos de solo lectura y luego solo tendría que hacer una consulta según los paràmetros que me interese para rescatar esos últimos mensajes para mostrarlos donde yo quiera.

Ya os cuento!
Jorgens_CCTW escribió:Saludos compañeros.

Qué creeis? Que por se el webmaster de CCTW no tengo mis dudas? je je je je. Pues ahí va una!

Algún compañero del foro me ha comentado que no supo que CCTW tenía foro hasta haberla visitado dos o tres veces. Se estaba perdiendo lo mejor, sin duda, a vosotros! je je je.

Quisiera, para hacer el foro más visible, añadir una capa, un recuadro en la página principal, en la que mostrar los últimos mensajes publicados en este foro. Es un foro vBulletin como sabéis. Si alguien sabe cómo hacerlo, agradecería pistas. Yo buscaré por mi cuenta, claro, y publicaré acá lo que descubra por si os es útil a alguno más.

También podría ser interesante añadir lo mismo pero no en la portada, sino en la página de entrada de por ejemplo la sección "La promoción de Webs". En ese caso me interesaría que aparecieran claro los últimos mensajes publicados en esa misma sección del foro. Es decir, últimos mensajes del tema X del foro en la página principal de ese mismo tema en la página correspondiente de CCTW.

Parece una buena idea, no?

A ver qué sacamos en claro!

Yo veo y visito los mensajes nuevos en el botón NOVEDADES junto al botón FORO.
Yo también, es una herramienta genial.

Si, quizás pueda basarme en ese botón para obtener el código correspondiente que busco.

gracias por la observación!
Esta sería mi primera versión. Extrae los últimos x mensajes del foro (puedes cambiar esa cantidad cambiando el valor de la variable numero_de_mensajes) y muestra el título, el texto del mensaje, recortado (puedes modificar cuánto se recorta modificando el parámetro $longitud_mensaje_recortado) y el autor. El título queda enlazado con la url del mensaje en el foro, pero por el momento le he colocado un rel="nofollow" para evitar que sea indexado, pues no he logrado sacar aún la url exacta, y para no duplicar url de la misma página prefiero que los robots no "vean" ese enlace. Se podría apañar esto en posteriores versiones.

OJO! Has de colocar tus datos para la conexión con la base de datos. Para ello te recomiendo que crees un nuevo usuario, con solo permisos de SELECT y que sea ese el que pongas en los datos de conexión.

Faltaría también colocarle estilos, claro.

Los datos de conexión habría que colocarlos en otro archivo aparte, llamado configuracion-posts.php:

<?php
$dbhostvb="localhost"; //Host del mysql
$dbuservb="xxxxxxxxx"; //Usuario del mysql
$dbpassvb="yyyyyyyyyyyy"; //Password del mysql
$dbvb="zzzzzzzzzzzzzz"; //nombre de base de datos
$tabla="post";
$tabla2="thread";
?>

<?php

//datos de conexión con la base de datos
include_once('configuracion-posts.php');

//parametros
$numero_de_mensajes=5;
$longitud_mensaje_recortado=150;

//conectamos y seleccionamos db
$link = mysql_connect($dbhostvb, $dbuservb, $dbpassvb) or die ("Error al conectar".mysql_error());
mysql_select_db($dbvb) or die ("Error seleccionando la database".mysql_error());


//funciones
function recorta($cadena, $limite)
    {
    if(substr($cadena,$limite-1,1) != ' ')
       {
       $cadena = substr($cadena,'0',$limite);
       $temporal = explode(' ',$cadena);
       array_pop($temporal);
       $cadena_nueva = implode(' ',$temporal);
       return $cadena_nueva.' ...';
       }
    else
       {
        return substr($cadena,'0',$limite-1).' ...';
       }
    }

function elimina_corchetes ($cadena)
    {
    $apertura = "[QUOTE]";
    $cierre = "[/QUOTE]";
    $ini = strpos($cadena, $apertura); //posición del inicio
    $fin = strpos($cadena, $cierre); //posición final
    if ($fin<10)
       {
       return $cadena;
       }
    else
       {
       $cortar = $fin - $ini +8;
       $cadena_sin_corchetes = substr_replace($cadena,'',$ini,$cortar+1);
       return $cadena_sin_corchetes;
       }
    }

//lanzamos consulta
$Consulta=mysql_query (" SELECT threadid,parentid,pagetext,username FROM ".$tabla." ORDER BY postid DESC LIMIT 0,$numero_de_mensajes") or die ( "Error en Consulta".mysql_error() );

WHILE ($resultado = mysql_fetch_array($Consulta))
    {
    $threadid=strip_tags($resultado['threadid']);
    $pagetext=elimina_corchetes ($resultado['pagetext']);
    $pagetext=strip_tags($pagetext);
    $pagetext=recorta ($pagetext,$longitud_mensaje_recortado);
    $username=strip_tags($resultado['username']);
    $Consulta2=mysql_query (" SELECT title FROM ".$tabla2." WHERE threadid='".$threadid."' ") or die ( "Error en Consulta2".mysql_error() );
    WHILE ($resultado2 = mysql_fetch_array($Consulta2))
        {
        $title=strip_tags($resultado2['title']);
        echo '
<div id="ultimosposts">
  <h1>Últimos Posts del <a href="/consultas" title="Acceso al foro de Consultas de ComoCrearTuWeb">Foro CCTW</a></h1>
  <h2>
    <a href="/consultas/showthread.php/'.$threadid.'" rel="nofollow" >'.$title.'</a>
  </h2>
  <p>'.$pagetext.'</p>
  <p>Por '.$username.'</p><br />';
       }
    }

mysql_free_result($Consulta);
mysql_free_result($Consulta2);
mysql_close($link);

?>

Sin duda, puede mejorarse ;=) Te animas?
Hey, que bueno, cómo mola! jaja
Podrías hacer que se pudiera dar reputación al mensaje desde ahí, por ejemplo?

Te doy puntitos! :-)

PD: Se quitó la reputación de los usuarios, ya no se puede ver desde un mensaje suyo
Si, desde que actualicé el vBulletin, he tenido que hacer todos los cambios que tenía uno por uno. Aún me queda ese pendiente, pero no recuerdo cómo lo hice. A ver si saco tiempo y lo busco de nuevo.

Un abrazo Dood.