vb.org Archive

vb.org Archive (https://vborg.vbsupport.ru/index.php)
-   vBulletin 3.6 Add-ons (https://vborg.vbsupport.ru/forumdisplay.php?f=194)
-   -   Forum Home Enhancements - Latest X Threads on Forum Home (https://vborg.vbsupport.ru/showthread.php?t=159389)

eviltechie 07-11-2008 12:18 PM

Nice mod! Thx.

I made a couple modifications for my use, and figured I'd share in case anyone else wants to do similar. I wanted to display the latest threads based on the last post instead of the first. So, whenever a new post is made in a thread it jumps to the top of the list...and also displays the author as the most recent poster.

Here's my edited code, it replaces the Main Code plugin which runs on forumhome_start.

PHP Code:

// enable to run this script
if ($vbulletin->options['latest_thread_enabled'])
{
    
$db->hide_errors();
    global 
$vbulletin;

    
// forum permissions
    
$forumpermissions = array();
    foreach(
$vbulletin->forumcache AS $forum)
    {
        
$forumpermissions[$forum["forumid"]] = fetch_permissions($forum['forumid']);
        if ((!(
$forumpermissions[$forum["forumid"]] & $vbulletin->bf_ugp_forumpermissions['canview'])) OR (!($forum['options'] & $vbulletin->bf_misc_forumoptions['active']) AND !$vbulletin->options['showprivateforums'] AND !in_array($vbulletin->userinfo['usergroupid'], array(5,6,7))))
        {
            
$forumids .= ','.$forum['forumid'];
        }
    }
    if (
$vbulletin->options['latest_thread_exclude']!='')
    {
        
$forumids .= ','.$vbulletin->options['latest_thread_exclude'];
    }
    
$forumids substr($forumids1);
    if (
$forumids!='')
    {
        
$latest_and "thread.forumid NOT IN($forumids)";
        
$latest_and_1 "forum.forumid NOT IN($forumids)";
    }
    
    
// converts options to nice variables
    
$limit $vbulletin->options['latest_thread_number'];
    
    
// query to get the last posts
    
$query $vbulletin->db->query_read("
        SELECT
            thread.forumid as forumid, thread.visible, thread.title as thread_title, thread.threadid as threadid, post.username as username, post.userid as userid, thread.dateline as date,
            forum.title as forum_title,
            post.postid, post.pagetext as pagetext
        FROM " 
TABLE_PREFIX "thread as thread
        LEFT JOIN " 
TABLE_PREFIX "post as post on (thread.lastpostid = post.postid)
        LEFT JOIN " 
TABLE_PREFIX "forum as forum on (thread.forumid = forum.forumid)
        WHERE thread.visible = 1 AND 
$latest_and AND $latest_and_1
        ORDER BY postid DESC
        LIMIT 
$limit"
    
);

    
// reset variables
    
$counter 0;
    
$latest_post_bits '';
    
    while (
$row $vbulletin->db->fetch_array($query))
    {
        
// allow to use alternate color in rows
        
require_once(DIR '/includes/functions.php');
        
exec_switch_bg();
        
        
// strips the bbcode out of the post
        
$row['pagetext'] = strip_bbcode($row['pagetext'], $stripquotes true$fast_and_dirty false$showlinks true);
        
        
// adds the cutoff ... with substr
        
$row['pagetext'] = substr($row['pagetext'], 0$vbulletin->options['latest_thread_cut']) . '...';

        
// convert pagetext to nice looking variable
        
$pagetext $row['pagetext'];
        
$username $row['username'];
        
$userid $row['userid'];
        
$forumid $row['forumid'];
        
$threadid $row['threadid'];
        
$postid $row['postid'];
        
$forumtitle $row['forum_title'];
        
$threadtitle $row['thread_title'];
        
$date vbdate($vbulletin->options['dateformat'], $row['date'], true);
        
$time vbdate($vbulletin->options['timeformat'], $row['date']);
        
        
// increments the counter +1
        
$show['latest_break'] = $counter++;
        
        eval(
'$latest_post_bits .= "' fetch_template('forumhome_latest_thread_bit') . '";');
    }
    
    
// free the query
    
$vbulletin->db->free_result($query);
    
    eval(
'$latest = "' fetch_template('forumhome_latest_thread') . '";');
    
    switch (
$vbulletin->options['latest_thread_location'])
        {
            case 
0$latest_location '$navbar'; break;
            case 
1$latest_location '<!-- main -->'; break;
            case 
2:    $latest_location '<!-- what\'s going on box -->'; break;
        }
    
    if (
$vbulletin->options['latest_thread_auto'])
    {
        
// adds location to forumhome template
        
$vbulletin->templatecache['FORUMHOME'] = str_replace(
            
$latest_location,
            
$latest_location.'$latest',
            
$vbulletin->templatecache['FORUMHOME']
        );
    }




I also modified the template code for forumhome_latest_thread_bit to the following to make the link jump to the latest post when clicked:

PHP Code:

<tr>
    <
td class="$bgclass">
        <
a href="$vboptions[bburl]/showthread.php?$session[sessionurl]t=$threadid&p=$postidclass="smallfont">$threadtitle</a>
        <if 
condition="$vboptions['latest_thread_time']"><span class="smallfont">$date $time</span></if>
        <if 
condition="$vboptions['latest_thread_cut'] != '0'"><div class="smallfont">$pagetext</div></if>
    </
td>
    <
td class="$bgclass">
        <
a href="$vboptions[bburl]/forumdisplay.php?$session[sessionurl]f=$forumidclass="smallfont">$forumtitle</a>
    </
td>
    <
td class="$bgclass">
        <
a href="$vboptions[bburl]/member.php?$session[sessionurl]u=$useridclass="smallfont">$username</a>
    </
td>
</
tr


Seems to be working great thus far! Thanks again.

m4gnus 01-09-2009 12:08 PM

Hi I´m running Latest X Threads on my forum. The forum is in swedish so I Want to translate the column header "Latest 10 Threads" to swedish. I´m a newbe so I dont dare to change anything without asking here first.

My new forum:

Michael Biddle 01-10-2009 04:57 AM

It is a phrase, you can edit it from your admincp

dmknights 02-07-2009 09:16 AM

*Installed*
This works on my board & i have 3.8.1

Michael Biddle 02-09-2009 01:45 AM

Glad everything is working great!

ctfortner 02-12-2009 12:52 PM

I have been using this for a while, works great. One question, how could I set this for members only, not visible to guests? I tried editing the main code plugin with a
Code:

<if condition="!$show['guest']">
, but that didnt work. Not a programmer :)

Michael Biddle 02-12-2009 09:55 PM

To gain support please click install first ;)

ctfortner 02-13-2009 12:18 AM

my bad, installed. Any thoughts?

Michael Biddle 02-13-2009 01:19 AM

You could add that if at the beginning of the forumhome_latest_threads template

ctfortner 02-17-2009 12:20 PM

Hi, thanks for the response. What I did is added <if condition="!$show['guest']"> to the very to of the forumhome_latest_threads template and then added </if> to the very bottom. Is that correct? It did not change anything, still showed for guests.

I also tried putting it all together like this at the very top with no luck

Code:

<if condition="!$show['guest']">
</if>

thanks


All times are GMT. The time now is 12:02 PM.

Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, vBulletin Solutions Inc.

X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.01328 seconds
  • Memory Usage 1,799KB
  • Queries Executed 10 (?)
More Information
Template Usage:
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (2)bbcode_code_printable
  • (2)bbcode_php_printable
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)pagenav
  • (1)pagenav_curpage
  • (4)pagenav_pagelink
  • (1)post_thanks_navbar_search
  • (1)printthread
  • (10)printthreadbit
  • (1)spacer_close
  • (1)spacer_open 

Phrase Groups Available:
  • global
  • postbit
  • showthread
Included Files:
  • ./printthread.php
  • ./global.php
  • ./includes/init.php
  • ./includes/class_core.php
  • ./includes/config.php
  • ./includes/functions.php
  • ./includes/class_hook.php
  • ./includes/modsystem_functions.php
  • ./includes/class_bbcode_alt.php
  • ./includes/class_bbcode.php
  • ./includes/functions_bigthree.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • printthread_start
  • pagenav_page
  • pagenav_complete
  • bbcode_fetch_tags
  • bbcode_create
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • printthread_post
  • printthread_complete