Fork me on GitHub

Rapport de message :*
 

Bloc system_block_users.html : classement alphabétique + affichage dans un tableau í  2 colonnes

Titre du sujet : Bloc system_block_users.html : classement alphabétique + affichage dans un tableau í  2 colonnes
par Anonyme sur 20/11/2008 14:52:07

b'jour,

J'utilise le bloc top users pour lister l'ensemble des membres de mon site (c'est je crois le seul bloc qui permet d'exclure certains membres en fonction de leur classement, fonction indispensable dans mon cas).

J'aurais 2 modifications à faire pour lesquelles je suis un peu bloqué :


1. Première demande

Ne pas retenir le nombre de posts comme critère discriminant mais un classement alphabétique sur le pseudo

Dans system_blocks.php on a actuellement
function b_system_topposters_show($options)
{
    
$block = array();
    
$criteria = new CriteriaCompo(new Criteria('level'0'>'));
    
$limit = (!empty($options[0])) ? $options[0] : 10;
    
$size count($options);
    for ( 
$i 2$i $size$i++) {
        
$criteria->add(new Criteria('rank'$options[$i], '<>'));
    }
    
$criteria->setOrder('DESC');
    
$criteria->setSort('posts');
    
$criteria->setLimit($limit);
    
$member_handler =& xoops_gethandler('member');
    
$topposters $member_handler->getUsers($criteria);
    
$count count($topposters);
    for (
$i 0$i $count$i++) {
        
$block['users'][$i]['rank'] = $i+1;
        if ( 
$options[1] == ) {
            
$block['users'][$i]['avatar'] = $topposters[$i]->getVar('user_avatar') != 'blank.gif' XOOPS_UPLOAD_URL.'/'.$topposters[$i]->getVar('user_avatar') : '';
        } else {
            
$block['users'][$i]['avatar'] = '';
        }
        
$block['users'][$i]['id'] = $topposters[$i]->getVar('uid');
        
$block['users'][$i]['name'] = $topposters[$i]->getVar('uname');
        
$block['users'][$i]['posts'] = $topposters[$i]->getVar('posts');
    }
    return 
$block;
}



2. Seconde demande

Je souhaiterais modifier l'apparence du bloc Top users. Afin qu'il occupe moins d'espace verticalement, je cherche à créer un tableau à 2 colonnes.

Actuellement on a ce code template :
<table cellspacing="1" class="outer">
  <{foreach 
item=user from=$block.users}>
  <
tr class="<{cycle values="even,odd"}>" valign="middle">
    <
td><{$user.rank}></td>
    <
td align="center">
      <{if 
$user.avatar != ""}>
      <
img src="<{$user.avatar}>" alt="" width="32" /><br />
      <{/if}>
      <
a href="<{$xoops_url}>/userinfo.php?uid=<{$user.id}>" title="<{$user.name}>"><{$user.name}></a>
    </
td>
    <
td align="center"><{$user.posts}></td>
  </
tr>
  <{/foreach}>
</
table>


L'idéal pour ce que je souhaite obtenir : à partir du Xième membre, la liste passe dans une seconde colonne.

Actuellement j'ai 120 membres, il faudrait donc que je puisse indiquer quelque part "si > 60 membres alors placer la suite dans une seconde colonne".

C'est faisable directement dans un template ?


... si rien de tout cela n'est facile à faire, si vous avez d'autres idées pour lister alphabétiquement l'ensemble des membres du site (sauf les administrateurs !) et afficher le tout sur la page ou dans un bloc ...

Merci d'avance
Propulsé avec XOOPS | Graphisme adapté par Tatane, Grosdunord, Montuy337513

87 Personne(s) en ligne (65 Personne(s) connectée(s) sur Forum) | Utilisateur(s): 0 | Invité(s): 87 | Plus ...