vb.org Archive

vb.org Archive (https://vborg.vbsupport.ru/index.php)
-   vB3 Programming Discussions (https://vborg.vbsupport.ru/forumdisplay.php?f=15)
-   -   Adding a counter for template conditionals (https://vborg.vbsupport.ru/showthread.php?t=209048)

neverstop 03-21-2009 09:20 PM

Adding a counter for template conditionals
 
Hi,

I have a simple script that lists the users with the highest reputation. I want to add the avatars of the top three results. I figure the best way was to use a template conditional like <if condition="count > 3">no avatar</else>avatar</if>.

So can I accomplish this in this script:

PHP Code:

<?php
/* --------------------------------------------------
  [vB 3.6.8] Module CMPS Add Top Posters   1.3
  Zachariah - http://www.szone.us

   Tested on:
   - vBulletin 3.6.8
   - vBadvanced CMPS v3.0 RC2
-------------------------------------------------- */

$count $mod_options['portal_topposter_count'];
$exclude_gid $mod_options['portal_topposter_exgid'];
$exclude_uid $mod_options['portal_topposter_exuid'];

// ### TOP STATS ############## TOP POSTERS ##########################
$top_stats = array();
$top_posters $db->query("
    SELECT userid, usergroupid, username, lastpostid, reputation, avatarrevision 
    FROM " 
TABLE_PREFIX "user
    WHERE reputation != 0
iif(!empty($exclude_gid), "AND usergroupid NOT IN ($exclude_gid)") . "
iif(!empty($exclude_uid), "AND userid NOT IN ($exclude_uid)") . "
    ORDER BY reputation DESC
    LIMIT 
$count
    "
);

while(
$top_poster $db->fetch_array($top_posters)){
      eval(
'$top_stats[\'adv_portal_topposters_bit\'] .= "' fetch_template('adv_portal_topposters_bit') . '";');
    }

$db->free_result($top_posters);

eval(
'$home[$mods[\'modid\']][\'content\'] = "' fetch_template('adv_portal_topposters') . '";');

unset(
$top_poster,$top_posters,$top_stats,$count,$exclude_gid$exclude_uid$mod_options);

Cheers, and thanks in advance

neverstop 03-23-2009 01:49 AM

up.

Lynne 03-23-2009 03:10 AM

You probably need to grab more than the avatarvision in order to output the avatar.... unless you have the avatars in the file system - do you? Where are you wanting to put this condition?

Template:
HTML Code:

<if condition="$count > 3">
whatever
</if>

Php:
PHP Code:

if ($count 3
{
whatever 



neverstop 08-11-2009 03:07 AM

Revisting an old thread here, and I will try and reword it better as my needs have changed slightly.

Basically I have some code outputs a list of users based on the column 'credits' in the 'user' table, ie:
PHP Code:

    ORDER BY credits DESC
    LIMIT 5 

I want to add numbers to the list of usernames:

1. exampleuserA
2. exampleuserB
3. exampleuserC


So I can add some sort of variable to my template like $user[count]. I want to be able to user conditionals like <if condition="$user[count] == 1 <span class="bigusername">exampleuserA</span></if>

I hope it makes more sense now.

PHP Code:

<?php
/* --------------------------------------------------
  [vB 3.7.3] Module CMPS Add Top Posters   1.3
  DarkFaCe- http://www.vbadvanced-turkiye.com

   Tested on:
   - vBulletin 3.7.x
   - vBadvanced CMPS v3.0.1
-------------------------------------------------- */

$count $mod_options['portal_topposter_count'];
$exclude_gid $mod_options['portal_topposter_exgid'];
$exclude_uid $mod_options['portal_topposter_exuid'];

// ### TOP STATS ############## TOP POSTERS ##########################
$top_stats = array();
$top_posters $db->query("
    SELECT user.userid, user.usergroupid,  usergroup.opentag, user.username, usergroup.closetag, user.lastpostid, user.credits
    FROM " 
TABLE_PREFIX "user, usergroup 
    WHERE user.usergroupid=usergroup.usergroupid 
    " 
iif(!empty($exclude_gid), "AND usergroupid NOT IN ($exclude_gid)") . "
iif(!empty($exclude_uid), "AND userid NOT IN ($exclude_uid)") . "
    ORDER BY credits DESC
    LIMIT 5
    "
);

while(
$top_poster $db->fetch_array($top_posters)){
      eval(
'$top_stats[\'adv_portal_topcredits_bit\'] .= "' fetch_template('adv_portal_topcredits_bit') . '";');
    }

$db->free_result($top_posters);

eval(
'$home[$mods[\'modid\']][\'content\'] = "' fetch_template('adv_portal_topcredits') . '";');

unset(
$top_poster,$top_posters,$top_stats,$count,$exclude_gid$exclude_uid$mod_options);


Lynne 08-11-2009 03:25 AM

I'm not sure of exactly what you want, but maybe this is kinda it:
PHP Code:

$count 0;
while(
$top_poster $db->fetch_array($top_posters)){
$count++;
      eval(
'$top_stats[\'adv_portal_topcredits_bit\'] .= "' fetch_template('adv_portal_topcredits_bit') . '";');
    } 

Then you can use $count in your template.

neverstop 08-11-2009 03:38 AM

lynne it works perfectly, ty so much once again. if IB isnt paying you they should be and if they are you deserve a raise!

neverstop 09-14-2010 11:15 PM

Hi lynne,

revisting this thread once again.

I have a different script but I ma trying to accomplish the same thing. What am I doing wrong here:

Code:

<?php
// ############# HASANN AND BLACKTHORN TOP REPUTATION MODULE ############ //
//                        BLACKTHORN CODING                              //
//                vBA CMPS Module - vBulletin 4.0.X                      //
//                    All rights reserved 2010 ?                          //
//                  http://www.metalturkiye.com                          //
//                  http://www.vBulletin-TR.com                          //
// ############# HASANN AND BLACKTHORN TOP REPUTATION MODULE ############ //
// ------------------------------------------------------------------------------
// Code written by Hasann. vB4 Convert and edited and updated by BlackThorn(c) 2009
// Copy and/or re-use of this code (or part of it) without authors approval in writing is forbidden.
// BT - Top Reputation Display Module Core Codes Starting

$limit = $mod_options['portal_top_reputation_count'];

// BT - Top Reputation SQL Query start.


$top_reputations = $db->query("
SELECT userid, username, posts, credits, usergroupid,
IF(displaygroupid=0, usergroupid, displaygroupid) AS displaygroupid
FROM " . TABLE_PREFIX . "user AS user
WHERE credits > 0
ORDER BY credits DESC
LIMIT 0, $limit
");

// BT - Top Reputation Module SQL Query the end.

$bgclass = "alt2";
$count = 0;
while($top_reputation = $db->fetch_array($top_reputations)){
$count++;
$bgclass = exec_switch_bg();
$top_reputation[musername] = fetch_musername($top_reputation);

// BT - Top Reputation Module Template Registers

$templater = vB_Template::create('adv_portal_top_reputations_bit');
$templater->register('bgclass',$bgclass);
$templater->register('mod_options',$mod_options);
$templater->register('top_reputation',$top_reputation);
$blackthorn_top_reputation_bit .= trim($templater->render()).' ';
}
$db->free_result($top_reputations);

// BT - Top Reputation Module Template Registers and HOOK(s)

$templater = vB_Template::create('adv_portal_top_reputations');
$templater->register('mod_options',$mod_options);
$templater->register('top_reputations',$top_reputations);
$templater->register('blackthorn_top_reputation_bit',$blackthorn_top_reputation_bit);
$home["$mods[modid]"]['content'] = $templater->render();

// BT - Top Reputation module module core codes and UNSET.

unset($top_reputation, $top_reputations, $blackthorn_top_reputation_bit, $limit, $mod_options);
?>


neverstop 09-23-2010 02:12 AM

Bump. anybody help a brother out here?

neverstop 09-27-2010 09:18 PM

Another bump.

Someone has to know how I can do this, it seems so simple on the surface. I cant figure out why it works in the first script I posted but in the 2nd very similar script it doesnt.

Can someone please have a look for me?

kh99 09-27-2010 09:34 PM

Well, for one thing the second script is for vB 4.0 (but maybe you know that?).

It might help if you said more about what it's doing and what's going wrong.


All times are GMT. The time now is 05:08 AM.

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.01274 seconds
  • Memory Usage 1,773KB
  • 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
  • (1)bbcode_code_printable
  • (1)bbcode_html_printable
  • (5)bbcode_php_printable
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)pagenav
  • (1)pagenav_curpage
  • (1)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