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 demandeNe 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] == 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 demandeJe 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