Me gustaría extraer los últimos post de Phorum phorum-3.4.8a a la index de mi web.
He visto cosas interesantes por ahí, pero sólo para PhpBB.
Me parece buena la idea de meterlo en una página aparte y luego insertarlo en mi home con un iframe. Aquí tenéis un ejemplo de lo que quiero, pero me gustaría que al hacer click fueses al post y no a la lista de post como en este caso.
Aquí tenéis cómo se ha hecho
Código PHP:
<?
$mostrar = "8"; //Número de mensajes a mostrar.
$caracteres_post = "18"; //Caracteres que se mostrarán de cada titulo de post
$caracteres_foro = "15"; //Caracteres que se mostrarán de cada titulo de foro
define(DIR_FORO,"http://www.mundodivx.org/foro"); //Dirección del foro
include("config.php");
// Seleccionamos la base de datos del foro
$conexion = mysql_connect($dbhost,$dbuser,$dbpasswd);
mysql_select_db($dbname);
$consulta = "SELECT * FROM ".$table_prefix."posts ORDER BY post_time DESC LIMIT $mostrar";
$result = mysql_query($consulta);
while ($row = mysql_fetch_array($result)) {
$consulta = "SELECT
".$table_prefix."forums.forum_id,
".$table_prefix."forums.forum_name,
".$table_prefix."users.username,
".$table_prefix."topics.topic_id,
".$table_prefix."topics.topic_title
FROM ".$table_prefix."forums, ".$table_prefix."users, ".$table_prefix."topics
WHERE ".$table_prefix."forums.forum_id='$row[forum_id]' AND ".$table_prefix."users.user_id='$row[poster_id]' AND ".$table_prefix."topics.topic_id='$row[topic_id]'";
$result2 = mysql_query ($consulta);
$res = mysql_fetch_row($result2);
// Si el título del mensaje es muy largo, lo cortamos
$postentero = $res[4];
if (strlen($res[4]) > $caracteres_post) {
$res[4] = substr($res[4],0,$caracteres_post-3)."...";
}
// Si el título del foro es muy largo, lo cortamos
$foroentero = $res[1];
if (strlen($res[1]) > $caracteres_foro) {
$res[1] = substr($res[1],0,$caracteres_foro-3)."...";
}
// Construimos
$total.="<font style='font-size: 10px' face='Verdana'><a href='".DIR_FORO."/viewtopic.php?t=$row[topic_id]#$row[post_id]' title='$postentero' class='scroll' target='_blank'>$res[4]</a><br>En: <a href='".DIR_FORO."/viewforum.php?f=$res[0]' title='$foroentero' class='scroll' target='_blank'>$res[1]</a><br>Por <font color='#CC0000'>$res[2]</font></font><hr noshade size='1' color='#000000' width='100%'>";
}
// Liberamos recursos y cerramos conexión
mysql_free_result($result);
mysql_free_result($result2);
// Volvemos a la base de datos que no es del foro
mysql_close($conexion);
?>
<html>
<head>
<title>Scroll de mensajes del foro</title>
<style>
a.scroll { font-family: Verdana; font-size: 10px; color: #0000CC; text-decoration: none; }
a.scroll:hover { color: #0000CC; text-decoration: underline; }
body { margin: 0px; }
</style>
</head>
<body onLoad="populate()" bgcolor="#FFFFFF">
<table width="112" border="0" cellpadding="0" cellspacing="0">
<tr><td>
<script language="JavaScript">
//Specify the marquee's width (in pixels)
var marqueewidth = 112; // Ancho de la marquesina
var anchoborde = 0; // Ancho del borde de la marquesina, en pixeles (debe ser igual al borde de la capa, especificado abajo del todo)
//Corregimos el bug de Netscafé
if (navigator.appName=="Netscape") {
marqueewidth = marqueewidth - 2*anchoborde;
}
//Specify the marquee's height
var marqueeheight=220 // Altura de la marquesina
//Specify the marquee's marquee speed (larger is faster 1-10)
var marqueespeed=1 // Velocidad
//Pause marquee onMousever (0=no. 1=yes)?
var pauseit=1
//Specify the marquee's content
//Keep all content on ONE line, and backslash any single quotations (ie: that\'s great):
var marqueecontent='<? echo addslashes($total); ?>' // ¡¡¡NO TOCAR!!!
////NO NEED TO EDIT BELOW THIS LINE////////////
marqueespeed=(document.all)? marqueespeed : Math.max(1, marqueespeed-1) //slow speed down by 1 for NS
var copyspeed=marqueespeed
var pausespeed=(pauseit==0)? copyspeed: 0
var iedom=document.all||document.getElementById
var actualheight=''
var cross_marquee, ns_marquee
function populate() {
if (iedom) {
cross_marquee=document.getElementById? document.getElementById("iemarquee") : document.all.iemarquee
cross_marquee.style.top=marqueeheight+8
cross_marquee.innerHTML=marqueecontent
actualheight=cross_marquee.offsetHeight
} else if (document.layers) {
ns_marquee=document.ns_marquee.document.ns_marquee2
ns_marquee.top=marqueeheight+8
ns_marquee.document.write(marqueecontent)
ns_marquee.document.close()
actualheight=ns_marquee.document.height
}
lefttime=setInterval("scrollmarquee()",40)
}
function scrollmarquee() {
if (iedom) {
if (parseInt(cross_marquee.style.top)>(actualheight*(-1)+8)) {
cross_marquee.style.top=parseInt(cross_marquee.style.top)-copyspeed
} else {
cross_marquee.style.top=marqueeheight+8
}
} else if (document.layers) {
if (ns_marquee.top>(actualheight*(-1)+8)) {
ns_marquee.top-=copyspeed
} else {
ns_marquee.top=marqueeheight+8
}
}
}
if (iedom||document.layers) {
with (document) {
if (iedom) {
write('<div style="position:relative; border: 0px solid #000000; width:'+marqueewidth+';height:'+marqueeheight+';ov erflow:hidden;background:#ffffff;" onMouseover="copyspeed=pausespeed" onMouseout="copyspeed=marqueespeed">')
write('<div id="iemarquee" style="position:absolute;left:0;top:0;width:'+marqueewidt h+'">')
write('</div></div>')
} else if (document.layers) {
write('<ilayer width='+marqueewidth+' height='+marqueeheight+' name="ns_marquee">')
write('<layer name="ns_marquee2" width='+marqueewidth+' height='+marqueeheight+' left=0 top=0 onMouseover="copyspeed=pausespeed" onMouseout="copyspeed=marqueespeed"></layer>')
write('</ilayer>')
}
}
}
</script>
</td></tr>
</table>
</body>
</html>