Долго искал, но, видимо в силу природной тупости, ничего не нашел. Изобразил сам, может пригодится кому:
$nblimit = 10;
$query = "SELECT {users}.name, {users}.uid, {votingapi_vote}.value
FROM {votingapi_vote} INNER JOIN {users} ON {votingapi_vote}.content_id = {users}.uid
WHERE {votingapi_vote}.content_type='". user ."' AND {votingapi_vote}.value >'". 0 ."'
ORDER BY {votingapi_vote}.value DESC
";
$result = db_query_range($query, 0, $nblimit);
print "<div id='user_list_' class='user_list'><ul>";
while ($user = db_fetch_object($result)) {
print "<li>".l($user->name,"user/$user->uid")." ($user->value)</li>";
}
print "</ul></div>";
$query = "SELECT {users}.name, {users}.uid, {votingapi_vote}.value
FROM {votingapi_vote} INNER JOIN {users} ON {votingapi_vote}.content_id = {users}.uid
WHERE {votingapi_vote}.content_type='". user ."' AND {votingapi_vote}.value >'". 0 ."'
ORDER BY {votingapi_vote}.value DESC
";
$result = db_query_range($query, 0, $nblimit);
print "<div id='user_list_' class='user_list'><ul>";
while ($user = db_fetch_object($result)) {
print "<li>".l($user->name,"user/$user->uid")." ($user->value)</li>";
}
print "</ul></div>";
Комментарии
повезло, хорошие у вас места. это про Валдай.
Ваш код, безусловно рабочий, но я предложу более совершенный вариант:
--------------------------------
$nblimit = 10;
$query = 'SELECT u.name, u.uid, v.value
FROM {votingapi_vote} v INNER JOIN {users} u ON v.content_id = u.uid
WHERE v.content_type="%s" AND v.value > %d
ORDER BY v.value DESC';
$result = db_query_range($query, array('user', 0), 0, $nblimit);
$list = array();
while ($user = db_fetch_object($result)) {
$list[] = l($user->name,"user/$user->uid")." ($user->value)";
}
$output = theme('item_list', $list, NULL, 'ul', array('id'=>'user_list_', 'class' => 'user_list'))
print($output);
----------------------------
Если воспользуетесь этим, то обратите внимание, что id и class теперь у элемента списка и стили надо будет немного поменять, если такие есть. Или же просто обрамить в див, как было в первоначальном варианте.
Во-вторых, SQL запрос не учитывает юзеров с нулевой кармой. Лично мне кажется, что это условие — лишнее.
В-третьих, print тоже здесь явно лишний, потому что в хорошем друпаловском коде print нужен только в файлах шаблонов, а, как мне кажется, это ним не является. Сделайте для своей штуки блок через hook_block(). Это будет более а) функциональным б) элегантным в) переносимым решением (хотя, наверное, и прийдется кое-в чем разобраться).
По теме, можно почитать мануал на русском к db_query_range(), а также theme_item_list()
Я в этом не разбираюсь, а куда надо воткнуть этот код?
А как такое сделать в 6-ой версии Drupal, потому-что в ней предложенный код не работает?
http://www.drupal.ru/node/26420#comment-144812