Go Back   vb.org Archive > Community Discussions > Modification Requests/Questions (Unpaid)
FAQ Community Calendar Today's Posts Search

Reply
 
Thread Tools Display Modes
  #1  
Old 12-07-2007, 07:17 PM
ChurchMedia's Avatar
ChurchMedia ChurchMedia is offline
 
Join Date: Dec 2002
Location: Las Cruces, NM
Posts: 473
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default Need help finishing menu hack

I use a CSS menu system. I don't like having to manually modify the code when I add/delete/move forums. I've figured out that the code that generates the archive site map could be modified to work for me, but I'm not completely sure how to pull it off. Thanks for any help anyone could give.

The output code needs to be like this:

Code:
<li><a href="http://www.domain.com/forums/showforum.php?f=$forumid">PARENT Forum Name</a>

<ul> <li><a href="http://www.domain.com/forums/showforum.php?f=$forumid">SUB Forum Name</a></li>

</ul></li>
Here is the code that could be modified to make it work:

PHP Code:
// #########################################################################################
// ###################### ARCHIVE FUNCTIONS ################################################

// function to list forums in their correct order and nesting
function print_archive_forum_list($parentid = -1$indent '')
{
    global 
$vbulletin;

    
$output '';

    if (empty(
$vbulletin->iforumcache))
    {
        
$forums $vbulletin->db->query_read_slave("
            SELECT forumid, title, link, parentid, displayorder, title_clean, description, description_clean,
            (options & " 
$vbulletin->bf_misc_forumoptions['cancontainthreads'] . ") AS cancontainthreads
            FROM " 
TABLE_PREFIX "forum AS forum
            WHERE displayorder <> 0 AND
            password = '' AND
            (options & " 
$vbulletin->bf_misc_forumoptions['active'] . ")
            ORDER BY displayorder
        "
);
        
$vbulletin->iforumcache = array();
        while (
$forum $vbulletin->db->fetch_array($forums))
        {
            
$vbulletin->iforumcache["$forum[parentid]"]["$forum[displayorder]"]["$forum[forumid]"] = $forum;
        }
        unset(
$forum);
        
$vbulletin->db->free_result($forums);
    }
    
    if (
is_array($vbulletin->iforumcache["$parentid"]))
    {
        
$output "\n$indent<ul>\n";
    
        foreach(
$vbulletin->iforumcache["$parentid"] AS $x)
        {
            foreach(
$x AS $forumid => $forum)
            {
                (
$hook vBulletinHook::fetch_hook('archive_forum')) ? eval($hook) : false;

                if (!(
$vbulletin->userinfo['forumpermissions']["$forumid"] & $vbulletin->bf_ugp_forumpermissions['canview']) AND ($vbulletin->forumcache["$forumid"]['showprivate'] == OR (!$vbulletin->forumcache["$forumid"]['showprivate'] AND !$vbulletin->options['showprivateforums'])))
                {
                    continue;
                }
                else
                {
                    if (
$forum['link'] !== '')
                    {
                        
$forum_link "<a href=\"$forum[link]\">";
                    }
                    else if (
$forum['cancontainthreads'])
                    {
                        
$forum_link "<a href=\"" . (!SLASH_METHOD 'index.php?' '') . "f-$forumid.html\">";
                    }
                    else
                    {
                        
$forum_link "<a style=\"font-weight:bold\">";
                    }
                    
$output .= "$indent\t<li>$forum_link$forum[title_clean]</a>" print_archive_forum_list($forumid"\t$indent") . "</li>\n";
                }
            }
        }
        
        
$output .= "$indent</ul>\n$indent";
    }

    return 
$output;

Reply With Quote
  #2  
Old 12-11-2007, 03:25 AM
TheMilkCarton TheMilkCarton is offline
 
Join Date: Jan 2007
Posts: 294
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Remove all the $output lines.

In place of the inner-most (the one indented the most) $output, you need an eval to call a template with the correct code. It will most likely contain similar code, unless you're not using an unordered list.

You should probably also remove the function line, and the last }... and include the PHP file you took that code from, since there are most likely a lot of variables it needs to be defined already.

In place of the return $output line, you'd need to use an eval to call another template that'd look something like so.

menu_forumlist
Code:
<ul>
$menu_forumlistbits
</ul>
"$menu_forumlistbits" being the variable that the code EVALs in place of that inner-most $output.

A typical eval line looks like so:
PHP Code:
eval('$menu_forumlistbits = "' fetch_template('menu_forumlistbits') . '";'); 
"menu_forumlistbits" being the template containing each individual list code.

The second eval line (that replaces return $output) would look like so:
PHP Code:
eval('$menu_forumlist = "' fetch_template('menu_forumlist') . '";'); 
And then you'd need to put $menu_forumlist into whatever template this menu is in.

Also.. you can probably get rid of all that $indent crap too. I think that's just to make the HTML look cleaner.

menu_forumlistbits could be as simple as this:
Code:
<li>$forum_link$forum['title_clean']</a></li>
----

OH... haha. You'd also need to change all the $forum_link lines to reflect the correct code, since that code is for the archive and not the normal forums.

.... and btw, in your code example, I don't think "showforum.php" is exactly right... Does that even exist? =p

----

Sorry if that seems like alot... I think that explaining how to do it instead of just giving you code to try will help you become better at these kinds of things, right?

I apologize if I've missed anything... hopefully someone smarter can come in and correct anything I forgot.. I'm quite new with this stuff as well.
Reply With Quote
  #3  
Old 12-11-2007, 03:44 AM
ChurchMedia's Avatar
ChurchMedia ChurchMedia is offline
 
Join Date: Dec 2002
Location: Las Cruces, NM
Posts: 473
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

That makes a lot of sense to me. I think I can pull it off. I'll play with it tomorrow and let you know. No, "showforum.php" doesn't exist... it's just something I must have imagined

Thanks a ton for the help!
Reply With Quote
  #4  
Old 12-11-2007, 05:59 AM
TheMilkCarton TheMilkCarton is offline
 
Join Date: Jan 2007
Posts: 294
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by ChurchMedia View Post
That makes a lot of sense to me. I think I can pull it off. I'll play with it tomorrow and let you know. No, "showforum.php" doesn't exist... it's just something I must have imagined

Thanks a ton for the help!
I didn't notice that the eval lines I copied from the first code I could find used periods in front of the = sign. You're not concatenating more templates onto that variable, so you'd have to remove the period.

I edited my post to reflect that.
Reply With Quote
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT. The time now is 07:33 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.03608 seconds
  • Memory Usage 2,231KB
  • Queries Executed 11 (?)
More Information
Template Usage:
  • (1)SHOWTHREAD
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (1)ad_showthread_beforeqr
  • (1)ad_showthread_firstpost
  • (1)ad_showthread_firstpost_sig
  • (1)ad_showthread_firstpost_start
  • (3)bbcode_code
  • (3)bbcode_php
  • (1)bbcode_quote
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)navbar
  • (3)navbar_link
  • (120)option
  • (4)post_thanks_box
  • (4)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (4)post_thanks_postbit_info
  • (4)postbit
  • (4)postbit_onlinestatus
  • (4)postbit_wrapper
  • (1)spacer_close
  • (1)spacer_open
  • (1)tagbit_wrapper 

Phrase Groups Available:
  • global
  • inlinemod
  • postbit
  • posting
  • reputationlevel
  • showthread
Included Files:
  • ./showthread.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/functions_bigthree.php
  • ./includes/class_postbit.php
  • ./includes/class_bbcode.php
  • ./includes/functions_reputation.php
  • ./includes/functions_post_thanks.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
  • showthread_start
  • showthread_getinfo
  • forumjump
  • showthread_post_start
  • showthread_query_postids
  • showthread_query
  • bbcode_fetch_tags
  • bbcode_create
  • showthread_postbit_create
  • postbit_factory
  • postbit_display_start
  • post_thanks_function_post_thanks_off_start
  • post_thanks_function_post_thanks_off_end
  • post_thanks_function_fetch_thanks_start
  • post_thanks_function_fetch_thanks_end
  • post_thanks_function_thanked_already_start
  • post_thanks_function_thanked_already_end
  • fetch_musername
  • postbit_imicons
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • postbit_display_complete
  • post_thanks_function_can_thank_this_post_start
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • showthread_complete