View Full Version : How to display counter of how many sections u can see in each category
Honourable
04-04-2013, 10:29 AM
Hi,
I have been playing around the following three files
forumdisplay.php
/includes/functions_forumlist.php
forum.php
I tried to find how many sections in each category I was able to find out how to display the overall numbers
of sections in each category and the problem it that despite the permissions as it shows like there is 16 sections this forum yet it for that user it should be 4 sections as I have hidden all the rest
What I have done is made a global variable at the top of
forumdisplay.php file
global $numberinforums;
and below the following
$forumbits = construct_forum_bit($foruminfo['forumid']);
added the following for loop
for(int k=0; k < sizeof($foruminfo['childlist']); k++){
$numberinforums++;
}
it loops through sizeof($foruminfo['childlist']) which is does how many elements r there in the array of each forum
yet I want to wrap the loop with if statements
like following
for(int k=0; k < sizeof($foruminfo['childlist']); k++){
if(the user can see this forum increase counter){
$numberinforums++;
}
}
then I use in the forumdisplay template the following
{vb:raw numberinforums}
and to display the counter in the FORUMHOME I applied almost the same code
apart from the loop statement instead this
sizeof($foruminfo['childlist'])
added the following in /includes/functions_forumlist.php
sizeof($children)
I would really appreciate any tip or help anybody would give it to me
to apply the each section permission on each counter
Looking forward to the awsome helpers
Many thanks in advance :D
Honourable
04-05-2013, 01:34 PM
any help?
waiting....
Maybe something like:
foreach ($foruminfo['childlist'] AS $fid)
{
$forumperms = fetch_permissions($fid);
if ($forumperms & $vbulletin->bf_ugp_forumpermissions['canview'])
{
$numberinforums++;
}
}
Honourable
04-05-2013, 03:40 PM
Hi,
I just found another way which don't know seems to me much easier but wondering if it makes load or its not proffissional than yours
here is what I have found
$subforumsasda = construct_subforum_bit($forumid);
for($k=0; $k < sizeof($subforumsasda); $k++){
$nberoffosinside++;
}
in functions_forumlist.php added the above which is for each forum i construct the subforum and count the size of the array and loop through which appears to be no need to the loop
as this sizeof($subforumsasda) will be more than enough to get the value the advantage of I thought that it does the permission calculation for you automatically
Many thanks KH for your help I would appreciate your point of view and suggestion on which code I should use
yours or mine?
Thank you again
--------------- Added 1365180367 at 1365180367 ---------------
More simple code I have found just to help someone might need it
just added this
$nberoffosinside = sizeof(construct_subforum_bit($forumid));
it does return the value that I wanted and does the permissions evaluation and everything and return the number of forums you only see
--------------- Added 1365181457 at 1365181457 ---------------
Here is another explaination as I designed a style changed the way to display the forums as boxes filled next each other once there is no space it does down using css inline box
I had problem when there is for example 4 sub forums then
3 will fill up and then one will come down
in this way the style will look no nice so I found that in each space I add adsense advert to make more money also make the style look fine
I had a problem when there is 5 forums I need google adsense advert with small size
when there is 4 forums I need with big size as two boxes will be empty in 4
3 boxes like following
BOX BOX BOX
AND ONE BOX THEN ADVERT NEXT TO IT WITH BIG SIZE
BOX AD VE R T
AND OTHER CASE
BOX BOX BOX
BOX BOX ADS
SMALL ADVERT HERE
TO SOLVE THIS PROBLEM
I HAVE DONE THE FOLLOWING
if( ((sizeof(construct_subforum_bit($forumid))) % 3) == 1 ) {
$nberoffosinside = true;
} else if ( ((sizeof(construct_subforum_bit($forumid))) % 3) == 2) {
$nberoffosinside = false;
}
using this variable nberoffosinside if it true display small advert
if it false display big advert and so on
I hope this could someone else looking for the solution
remember the code should be added in includes/functions_forumlist.php
where you can find the following
// build the template for the current forum
paste the code below and go to your templates
forumhome_forumbit_level1_nopost
forumhome_forumbit_level2_nopost
using the variable with this way
<vb:if condition="{vb:raw nberoffosinside} == true">
big advert
<vb:else />
small advert
</vb:if>
Good luck everyone
thanks for your help
--------------- Added 1365182584 at 1365182584 ---------------
More concisely to do what I have done here is the instruction
go to includes folder in your forum root then functions_forumlist.php
search for
// build the template for the current forum
add below it
if( ((sizeof(construct_subforum_bit($forumid))) % 3) == 1 ) {
$nberoffosinside = 2;
} else if ( ((sizeof(construct_subforum_bit($forumid))) % 3) == 2) {
$nberoffosinside = 1;
}
to apply this on your templates need to register the nberoffosinside variable with following instructions
search for following
$templater->register('forumid', $forumid);
add below it
$templater->register('nberoffosinside', $nberoffosinside);
now go to your following templates
forumhome_forumbit_level1_nopost
forumhome_forumbit_level2_nopost
using this code you can display the big and small adverts accodingly
<vb:if condition="$nberoffosinside == 2">big advert</vb:if>
<vb:if condition="$nberoffosinside == 1">small advert</vb:if>
this solution for the forumhome and you will need a solution for the forumdisplay to do so follow the next
open forumdisplay.php file in your main forum root
search for
construct_forum_bit($foruminfo['forumid'])
below it add the following
if( ((sizeof(construct_subforum_bit($forumid))) % 3) == 1 ) {
$numberinforums = 2;
} else if ( ((sizeof(construct_subforum_bit($forumid))) % 3) == 2) {
$numberinforums = 1;
}
samething to use this $numberinforums variable in forumdisplay template you will need to register it using the following
search for
$templater->register('forumid', $forumid);
below it add
$templater->register('numberinforums', $numberinforums);
note dont forget to save your files with the alteration
now go to forumdisplay template using this if statement
<vb:if condition="$numberinforums == 2">big advert</vb:if>
<vb:if condition="$numberinforums == 1">small advert</vb:if>
you can display the adverts accordingly
hope it got cleared now more
Good luck everyone again
please KH point if there is something I have done incorrectly
Many thanks
vBulletin® v3.8.12 by vBS, Copyright ©2000-2024, vBulletin Solutions Inc.