REQ. Need this please

Forums arranged in columns on forumhome

As requested several times, this hack allows you to arrange forums on forumhome in xx columns instead of just one per row as it is in standart vb3

from post # 91

For the second "problem" try this code in forumhome_forumbit_columncell:

Code:
<td class="alt1Active" align="$stylevar[align=left]" id="f$forum[forumid]" width="$column_width">
    <table>
        <tr>
            <td><img src="$stylevar[imgdir_statusicon]/forum_$forum[statusicon].gif" alt="" border="0" /></td>
            <td><a rel="nofollow" href="forumdisplay.php?$session[sessionurl]f=$forum[forumid]"><strong>$forum[title]</strong></a>
                    <if condition="$show['forumdescription']"><div class="smallfont">$forum[description]</div></if></td>
        </tr>
    </table>
</td>

From post # 96:

If you want this to work with Chris M's Cust Forum Status Icons Modification just replace Xenon's function with the following:

Code:
// ###################### Start construct_forum_columns #######################
function construct_forum_columns($parentid, $columncount)
{
    global $vbulletin, $stylevar, $vbphrase, $show;
    global $imodcache, $lastpostarray, $counters, $inforum;

    // this function takes the constant MAXFORUMDEPTH as its guide for how
    // deep to recurse down forum lists. if MAXFORUMDEPTH is not defined,
    // it will assume a depth of 2.

    if ($columncount == 0)
    {
        // 0 Columns means don't show subforums at all
        return '';
    }

    // call fetch_last_post_array() first to get last post info for forums
    if (!is_array($lastpostarray))
    {
        fetch_last_post_array();
    }

    if (empty($vbulletin->iforumcache["$parentid"]))
    {
        return;
    }

    if (!defined(MAXFORUMDEPTH))
    {
        define('MAXFORUMDEPTH', 1);
    }

    $forumbits = '';

    $counter = 0;
    foreach ($vbulletin->iforumcache["$parentid"] AS $forumid)
    {
        // grab the appropriate forum from the $vbulletin->forumcache
        $forum = $vbulletin->forumcache["$forumid"];
        $lastpostforum = $vbulletin->forumcache["$lastpostarray[$forumid]"];
        if (!$forum['displayorder'] OR !($forum['options'] & $vbulletin->bf_misc_forumoptions['active']))
        {
            continue;
        }

        $forumperms = $vbulletin->userinfo['forumpermissions']["$forumid"];
        $lastpostforumperms = $vbulletin->userinfo['forumpermissions']["$lastpostarray[$forumid]"];
        if (!($forumperms & $vbulletin->bf_ugp_forumpermissions['canview']) AND !$vbulletin->options['showprivateforums'])
        { // no permission to view current forum
            continue;
        }

        if ($subsonly)
        {
            $childforumbits = construct_forum_bit($forum['forumid'], 1, $subsonly);
        }
        else if ($depth < MAXFORUMDEPTH)
        {
            $childforumbits = construct_forum_bit($forum['forumid'], $depth, $subsonly);
        }
        else
        {
            $childforumbits = '';
        }

        // do stuff if we are not doing subscriptions only, or if we ARE doing subscriptions,
        // and the forum has a subscribedforumid
        if (!$subsonly OR ($subsonly AND !empty($forum['subscribeforumid'])))
        {

            $GLOBALS['forumshown'] = true; // say that we have shown at least one forum

            if (($forum['options'] & $vbulletin->bf_misc_forumoptions['cancontainthreads']))
            { // get appropriate suffix for template name
                $tempext = '_post';
            }
            else

            {
                $tempext = '_nopost';
            }

            if (!$vbulletin->options['showforumdescription'])
            { // blank forum description if set to not show
                $forum['description'] = '';
            }

            // dates & thread title
            $lastpostinfo = $vbulletin->forumcache["$lastpostarray[$forumid]"];

            // compare last post time for this forum with the last post time specified by
            // the $lastpostarray, and if it's less, use the last post info from the forum
            // specified by $lastpostarray
            if ($vbulletin->forumcache["$lastpostarray[$forumid]"]['lastpost'] > 0)
            {
                if (!($lastpostforumperms & $vbulletin->bf_ugp_forumpermissions['canview']) OR (!($lastpostforumperms & $vbulletin->bf_ugp_forumpermissions['canviewothers']) AND $lastpostinfo['lastposter'] != $vbulletin->userinfo['username']))
                {
                    $forum['lastpostinfo'] = $vbphrase['private'];
                }
                else
                {
                    $lastpostinfo['lastpostdate'] = vbdate($vbulletin->options['dateformat'], $lastpostinfo['lastpost'], 1);
                    $lastpostinfo['lastposttime'] = vbdate($vbulletin->options['timeformat'], $lastpostinfo['lastpost']);
                    $lastpostinfo['trimthread'] = fetch_trimmed_title($lastpostinfo['lastthread']);

                    if ($icon = fetch_iconinfo($lastpostinfo['lasticonid']))
                    {
                        $show['icon'] = true;
                    }
                    else
                    {
                        $show['icon'] = false;
                    }

                    $show['lastpostinfo'] = (!$lastpostforum['password'] OR verify_forum_password($lastpostforum['forumid'], $lastpostforum['password'], false));

                    eval('$forum[\'lastpostinfo\'] = "' . fetch_template('forumhome_lastpostby') . '";');
                }
            }
            else if (!($forumperms & $vbulletin->bf_ugp_forumpermissions['canview']))
            {
                $forum['lastpostinfo'] = $vbphrase['private'];
            }
            else
            {
                $forum['lastpostinfo'] = $vbphrase['never'];
            }

            // do light bulb
            $forum['statusicon'] = fetch_forum_lightbulb($forumid, $lastpostinfo, $forum);
            
$show['customstatusicon'] = false;
if ($forum['hasstatusicons'])
{
    $show['customstatusicon'] = true;
    if ($forum['statusicon'] == 'new')
    {
        $forum['customicon'] = $forum['statusiconon'];
    }
    if ($forum['statusicon'] == 'new_lock')
    {
        $forum['customicon'] = $forum['statusiconlockon'];
    }
    if ($forum['statusicon'] == 'old')
    {
        $forum['customicon'] = $forum['statusiconoff'];
    }
    if ($forum['statusicon'] == 'old_lock')
    {
        $forum['customicon'] = $forum['statusiconlockoff'];
    }
    if ($forum['statusicon'] == 'link')
    {
        $forum['customicon'] = $forum['statusiconlink'];
    }
}

            // add lock to lightbulb if necessary
            if ((!($forumperms & $vbulletin->bf_ugp_forumpermissions['canpostnew']) OR !($forum['options'] & $vbulletin->bf_misc_forumoptions['allowposting'])) AND $vbulletin->options['showlocks'] AND !$forum['link'])
            {
                $forum['statusicon'] .= '_lock';
            }

            // get counters from the counters cache ( prepared by fetch_last_post_array() )
            $forum['threadcount'] = $counters["$forum[forumid]"]['threadcount'];
            $forum['replycount'] = $counters["$forum[forumid]"]['replycount'];

            // get moderators ( this is why we needed cache_moderators() )
            if ($vbulletin->options['showmoderatorcolumn'])
            {
                $showmods = array();
                $listexploded = explode(',', $forum['parentlist']);
                foreach ($listexploded AS $parentforumid)
                {
                    if (!isset($imodcache["$parentforumid"]))
                    {
                        continue;
                    }
                    foreach($imodcache["$parentforumid"] AS $moderator)
                    {
                        if (isset($showmods["$moderator[userid]"]))
                        {
                            continue;
                        }

                        ($hook = vBulletinHook::fetch_hook('forumbit_moderator')) ? eval($hook) : false;

                        $showmods["$moderator[userid]"] = true;
                        if (!isset($forum['moderators']))
                        {
                            eval('$forum[\'moderators\'] = "' . fetch_template('forumhome_moderator') . '";');
                        }
                        else
                        {
                            eval('$forum[\'moderators\'] .= ", ' . fetch_template('forumhome_moderator') . '";');
                        }
                    }
                }
                if (!isset($forum['moderators']))
                {
                    $forum['moderators'] = '';
                }
            }

            if ($forum['link'])
            {
                $forum['replycount'] = '-';
                $forum['threadcount'] = '-';
                $forum['lastpostinfo'] = '-';
            }
            else
            {
                $forum['replycount'] = vb_number_format($forum['replycount']);
                $forum['threadcount'] = vb_number_format($forum['threadcount']);
            }

            if (($subsonly OR $depth == MAXFORUMDEPTH) AND $vbulletin->options['subforumdepth'] > 0)
            {
                $forum['subforums'] = construct_subforum_bit($forumid, ($forum['options'] & $vbulletin->bf_misc_forumoptions['cancontainthreads'] ) );
            }
            else
            {
                $forum['subforums'] = '';
            }

            $children = explode(',', $forum['childlist']);
            foreach($children AS $childid)
            {
                $forum['browsers'] += ($inforum["$childid"] ? $inforum["$childid"] : 0);
            }

            if ($depth == 1 AND $tempext == '_nopost')
            {
                global $vbcollapse;
                $collapseobj_forumid =& $vbcollapse["collapseobj_forumbit_$forumid"];
                $collapseimg_forumid =& $vbcollapse["collapseimg_forumbit_$forumid"];
                $show['collapsebutton'] = true;
            }
            else
            {
                $show['collapsebutton'] = false;
            }

            $show['forumsubscription'] = ($subsonly ? true : false);
            $show['forumdescription'] = ($forum['description'] != '' ? true : false);
            $show['subforums'] = ($forum['subforums'] != '' ? true : false);
            $show['browsers'] = ($vbulletin->options['displayloggedin'] AND !$forum['link'] AND $forum['browsers'] ? true : false);

            // build the template for the current forum
            $column_width = intval(100 / $columncount) . '%';
            eval('$column = "' . fetch_template("forumhome_forumbit_columncell") . '";');
            
            // do the columnstuff
            if ($counter % $columncount == 0)
            {
                // Begin a new row
                $forumbits .= "\t<tr>\n";
            }
            $forumbits .= $column;
            if ($counter % $columncount == $columncount - 1)
            {
                // End row
                $forumbits .= "\t</tr>\n";
            }
            $counter++;
        }
    }

    // prevent unclosed <tr> tags
    if ($counter % $columncount != 0)
    {
        $forumbits .= "\t</tr>\n";
    }
    
    return $forumbits;
}

And follow this template change:

Originally Posted by Chris M

Edit forumhome_forumbit_columncell
Change:

Code:
<img src="$stylevar[imgdir_statusicon]/forum_$forum[statusicon].gif" alt="" border="0" />

to

Code:
<img src="<if condition="$show['customstatusicon']">$forum[customicon]<else />$stylevar[imgdir_statusicon]/forum_$forum[statusicon].gif</if>" alt="" border="0" />

That should change it for you

Chris

And it should know work correctly....
 
Back
Top