Hiding Subforums’ Subforums from Subforum Pages
-
Hi.
This is an extension of this question: http://bbpress.org/forums/topic/hiding-subforums-on-the-homepage#post-11761
My forum has forums, subforums, and then subforums of those subforums. Basically, there are three levels of forums.
I was able to hide the subforums from the main forums page. But how do i hide the subforums’ subforums from the subforums pages, so that the visitor must click on the subforum to view the subforums’ subforums.
I would really appreciate any help on this matter. I am not good at coding so it would be wonderful to get assistance!
-
The way I hide sub-forums on the front-page is to wrap the code that lists the forums in this simple code:
<?php if (!$forum->forum_parent) { ?>
<– this<tr<?php bb_forum_class(); ?>>
blah blah
</tr>
<?php } ?>
<– and thisIt essentially just checks if the forum has a parent and doesn’t show it. Now on the forum page that’s a problem because any forum listed would have a parent. Gotta think about that one for a minute…
Oh wait, I know what to do, we just have to check if the forum_parent is equal to the current forum id. This is untested but in theory should work:
<?php $forum_parent=$forum_id; ?>
<?php while ( bb_forum() ) : ?>
<?php if ($GLOBALS['forum']->forum_parent==$forum_parent) { ?>
<tr<?php bb_forum_class(); ?>>
<td><?php bb_forum_pad( '<div class="nest">' ); ?><a href="<?php forum_link(); ?>"><?php forum_name(); ?></a><small><?php forum_description(); ?></small><?php bb_forum_pad( '</div>' ); ?></td>
<td class="num"><?php forum_topics(); ?></td>
<td class="num"><?php forum_posts(); ?></td>
</tr>
<?php } ?>
<?php endwhile; ?>Thank you for the response. I have very, very limited coding experience. Can you explain further please? Thank you.
You have to edit the forum.php in your theme’s template.
Are you using the built in Kakumei theme or have you already changed it?
I have already changed it.
Here is my forum.php:
I appreciate the help!
Here you go:
(you can copy the plain text from the lower part)
The lines added are 49, 51 and 57.
It’s untested but in theory should work.
Let me know what happens.
Hi,
Okay, so I tried using the code. And it just makes every subforum and its subforums disappear. So everything is there, but with no links to any forums.
Can you post the code you’re using at pastebin so we can take a look at what’s happening?
The code that was on my original forum.php is
_ck_’s version that I tried using (it didn’t pop up any forums at all when I tried it) is
Hang on while I double check the code, apparently I guessed wrong somewhere or missed something.
update: perhaps it’s because $forum is not declared as a global in the template when when it loops through the forums it doesn’t see the changed parent.
Try this update:
Hi,
Now the subforums’ subforums show, but along with the subforums. It displays just like the original forum.php now.
I just put the code on a test site and it works for me.
Sub forums show, but not sub sub forums.
You used http://pastebin.com/m3cef6607 ???
The sub sub forums you are seeing are indented?
Make sure you uploaded and are using the correct file.
I uploaded that code to a test installation I have and it appears to work fine. Check it out:
Hi! Thank you _ck_ and chrishajer. It works wonderfully now.
I have a few more questions if you don’t mind:
1. Is there any way to optimize bbPress for extremely large forums? My forum will have 50 forums, followed by subforums for cities, followed by 5 subforums for each city. (I’ve thought it over through as well, and this is the best way to organize it)
2. If there isn’t, is there a way I can create 50 forums that are different, one for each state, and have them running congruently? Would that alleviate the loading time and the strain on the database?
3. Is there any way to have many separate forums that are sharing the same users table? They are going to be separate forums. I just want to have it so that 1) if one person is logged into one bbpress, they are also logged into another, and 2) if they are registered on one, they are also registered at another. Is there a way to do this?
What would be the best way to handle this? It’s just that when I release the site, I want to have every section and everything up so that I don’t have to worry about expanding. I just want to do everything now (and having a lot of free time during the summer doesn’t hurt either!)
Thanks.
You might want to start a new topic for that new topic, now that you have the subforums thing sorted.
You situation sounds like this one from a while ago
https://bbpress.org/forums/topic/how-do-i-do-this
I am not sure what the best way to do it is. Did you try making the forums and subforums all in one forum installation, and see what the actual loading time is? That would be easiest for user login integration I think.
Can you imagine updating 50 forum installations?
It’s too bad the pastebin code is no longer available.
True d’at. Although I think this may be what _ck_ was working on… I see the global declaration in there… I’ll try it…
Nope. All fora disappear. I’ll look into where this $forum_id comes from…I’m learning.
Huh. Setting $forum_parent=0; (or $forum_id = 0;) seems to do what I want. Hardcoding. Yuck.
Yeah, I like that. I guess a template option for show/supress child fora would be better. Then you could use that db option…
I’m still choosing templates but will work on it.
This is what I had based on _ck_’s snippets:
The theme’s front-page.php just after the forum list titles:
</tr>
<?php $forum_id = 0; //musnake: supress child fora: https://bbpress.org/forums/topic/hiding-subforums-subforums-from-subforum-pages#post-20150 ?>
<?php $forum_parent=$forum_id; //musnake ?>
<?php while ( bb_forum() ) : ?>
<?php if ($GLOBALS['forum']->forum_parent==$forum_parent) { //musnake ?>
<tr<?php bb_forum_class(); ?>>
<td><?php bb_forum_pad( '<div class="nest">' ); ?><a href="<?php forum_link(); ?>"><?php forum_name(); ?></a><small><?php forum_description(); ?></small><?php bb_forum_pad( '</div>' ); ?></td>
<td class="num"><?php forum_topics(); ?></td>
<td class=num><?php echo $GLOBALS['forum']->views; ?></td>
<td class="num"><?php forum_posts(); ?></td>
</tr>
<?php } //musnake ?>
<?php endwhile; ?>
</table>
<?php endif; // bb_forums() ?>That theme didn’t have the breadcrumbs I wanted, so after much searching (including PHPXref!) I found this: which gets put in your theme’s forum.php:
<h3 class="bbcrumb"><a href="<?php bb_option('uri'); ?>"><?php bb_option('name'); ?></a> <?php bb_forum_bread_crumb(); ?></h3>
Hope that helps. Thanks All.
Oh, just to be clear, the //musnake are to point out where the changes are, not to claim any credit!
Good suggestion CK, worked like a charm!
- You must be logged in to reply to this topic.