PDA

View Full Version : Trying to add Popoular Threads Block


metalguy639
07-04-2012, 06:08 AM
I need to add a popular threads block to my forum sidebar, I do not need a cms widget I already have that working. I found some code on vbulletin.com forums but NO ONE wants to answer questions on how to make it work. Maybe someone here can help me. I just need to make this code work in a forum block. This is the code:

global $vbulletin;
$msglength = 150;
$dots = '...';
$thread = $vbulletin->db->query_read("SELECT thread.threadid, thread.title, thread.views, post.pagetext AS message
FROM " . TABLE_PREFIX . "thread AS thread
LEFT JOIN " . TABLE_PREFIX . "post AS post ON (post.postid = thread.firstpostid)
WHERE 1=1
ORDER BY thread.views DESC
LIMIT 0,5");
$row = array();
if ($vbulletin->db->num_rows($thread) > 0)
{
while($rowthread = $vbulletin->db->fetch_array($thread)){
$row[] = array(
'contentid' => $rowthread['threadid'],
'message' => $rowthread['message'],
'url' => fetch_seo_url('thread', $rowthread),
'title' => $rowthread['title'],
'views' => $rowthread['views']);
}
}
$static = '<ul>';
for($i = 0; $i < count($row); $i++)
{
$static .= '<li>';
$static .= '<a href="' .$row[$i]['url'] . '"><b>' . $row[$i]['title'] . '</b></a><br/> ';
$static .= '<span style="font-size:11px">(' . $row[$i]['views'] . ' views)</span>';
if(strlen($row[$i]['message']) > $msglength)
{
$row[$i]['message'] = substr($row[$i]['message'],0,$msglength);
$row[$i]['message'] = substr($row[$i]['message'],0,strrpos($row[$i]['message']," ")) . $dots;
}
$static .= '<ul>';
$static .= '<li>';
$static .= strip_bbcode($row[$i]['message'],true,true,false,true,false) . '<br/><br/>';
$static .= '</li>';
$static .= '</ul>';
$static .= '</li>';
}
$static .= '</ul>';
$output = $static;

It works great with a CMS widget but when I try to make it work on the forum sidebar all I get is the header of the block and nothing else. No threads no nothing and it breaks the skin like a div tag was out of place or something. I have made sure that I set the block to be php and that its active. IN the content box as the instructions you see this:

Specify the content you want to display. If this is PHP code, use a return statement to send your output to the block. For example:

$my_output = 'Hello, world.';
return $my_output;

I do not know how to apply that to the code above to make it work and I'm guessing that is what I need. Does anyone know how to make the above code work?

cellarius
07-04-2012, 10:26 AM
Try changing the last line in your code from
$output = $static;
to
return $static;

metalguy639
07-04-2012, 10:58 PM
Try changing the last line in your code from
$output = $static;
to
return $static;

Thanks we found a solution in using the built in blocks. I missed a setting for forum threads that did just what we needed.

mathforum
08-04-2012, 04:23 PM
How can this be edited to show the most popular threads from the last 24 hours?

metalguy639
08-06-2012, 12:14 PM
How can this be edited to show the most popular threads from the last 24 hours?

I have no idea as I got the code off vbulletin.com in another thread discussing the widgets & blocks.