Статистика в профиле
Прислано: Arturus
ср, 18/11/2009 - 04:44
Как сделан такой профиль? Особенно интересует статистика в профиле.
http://drupalsn.com/user/kevin.wall
- Arturus's blog
- Для комментирования войдите или зарегистрируйтесь
Кстати говоря, это quick-tabs!
Как они вкладки профиль в квик-табы засунули?... Вообще, там очень красивая реализация профиля!
Кстати, статистика - это ядро + пара доп модуле (user stats, может еще что...) Все красиво выглядит, потому что они вкладки - которые обычно идут сверху внизу как-то вставили в квик-табы...
- Для комментирования войдите или зарегистрируйтесь
Кстати, на теме на Др.орге ВСЕ спрашивают только про профиль - http://drupal.org/node/288476
Но тема старая, он видимо начнал с 5ки, потом проапдейтил до 6ки и многое изменил. Возможно там content_profile стоит + квик табы, кто знает...
- Для комментирования войдите или зарегистрируйтесь
А подробнее про статистику можно?
Я поставил user stats, но как ее вывести, в профиль к примеру?
- Для комментирования войдите или зарегистрируйтесь
Не знаю как правильно делать, сделал сниппетом в блоке и показал блок только в профиле
Выводит вот такую статистику
# Дата регистрации: 26-10-2009
# Последнее посещение: 19-11-2009 01:28
* Комментариев: 11
* Запись в блоге 2
* Форум 5
* Изображение 86
* Новости 4
* Галерея 31
* Фотографии в галереях 1322
* Заметка 1
<?php
$userid = arg(1);
if (is_numeric($userid)) {
$nblimit = 30;
$query = "SELECT name, uid, created, access FROM {users}
WHERE uid=$userid ";
$result = db_query_range($query, array('user', 0), 0, $nblimit);
$list = array();
while ($user = db_fetch_object($result)) {
//кол-во комментариев
$users_com = db_query("SELECT COUNT(cid) AS count, {users}.uid, {users}.name FROM {comments} LEFT JOIN {users} ON {comments}.uid = {users}.uid WHERE {comments}.uid = $user->uid GROUP BY uid ORDER BY count ");
$user_com = db_fetch_object($users_com);
$list[] ="
Дата регистрации: ".date("d-m-Y",$user->created)."
<li>Последнее посещение: ".date("d-m-Y H:i",$user->access)."
<br><br>
<ul>
<li>Комментариев: $user_com->count
";
//документы
$q = "SELECT {node_type}.name as tipo,count({node}.type) as cant, {users}.uid, {users}.name
FROM {node}
LEFT JOIN {users} ON {node}.uid = {users}.uid
LEFT JOIN {node_type} ON {node}.type = {node_type}.type
WHERE {node}.uid = $user->uid
group by {node}.type";
$result_doc = db_query ($q);
while ( $row = db_fetch_object ( $result_doc ) )
{
$list[] = "$row->tipo $row->cant" ;
}
}
$output = theme('item_list', $list, NULL, 'div', array('id'=>'user_list', 'class' => 'user_list_div'));
print($output);
}
?>- Для комментирования войдите или зарегистрируйтесь
Немного переработал код, убрал лишнее и привел к стандарту дрюпала. Поправил темзацию. Вставил сниппет в user-profile.tpl.php. В нем сразу доступна переменная $account с информацией о пользователе.
<?php
$userid = $account->uid;
if (is_numeric($userid)) {
$list_content = array();
$list_private = array();
$list_private[] = "Дата регистрации: ".format_date($account->created, "medium");
$list_private[] = "Последнее посещение: ".format_date($account->access, "medium");
//кол-во комментариев
$result_com = db_query("SELECT COUNT(cid) AS count, {users}.uid, {users}.name FROM {comments} LEFT JOIN {users} ON {comments}.uid = {users}.uid WHERE {comments}.uid = $userid GROUP BY uid ORDER BY count ");
$user_com = db_fetch_object($result_com);
$list_content[] = "Комментариев: $user_com->count";
//документы
$q = "SELECT {node_type}.name as tipo,count({node}.type) as cant, {users}.uid, {users}.name
FROM {node}
LEFT JOIN {users} ON {node}.uid = {users}.uid
LEFT JOIN {node_type} ON {node}.type = {node_type}.type
WHERE {node}.uid = $userid
group by {node}.type";
$result_type = db_query($q);
while ($row = db_fetch_object($result_type))
{
$list_content[] = $row->tipo.": ".$row->cant;
}
$output = theme('item_list', $list_private, NULL, 'ul', array('id'=>'user_list_private', 'class' => 'user_list'));
$output .= theme('item_list', $list_content, NULL, 'ul', array('id'=>'user_list_content', 'class' => 'user_list'));
print($output);
}
?>
- Для комментирования войдите или зарегистрируйтесь
а что бы
$list_private[] = "Дата регистрации: ".format_date($account->created, "medium");
$list_private[] = "Последнее посещение: ".format_date($account->access, "medium");
выводились не ироглифами а русскими буквами
в какой кодирвоке коды нада сохранять***???
а можно ли выводить всю статистику по материалам не все подряд а на выбор это хочу что бы выводилось а это не хочу...
- Для комментирования войдите или зарегистрируйтесь
а эту статситику в $tabs дополнительный ни как нельзя?
- Для комментирования войдите или зарегистрируйтесь
выводились не ироглифами а русскими буквами
UTF-8
а можно ли выводить всю статистику по материалам не все подряд а на выбор это хочу что бы выводилось а это не хочу...
изменяете запрос в конце - добавляете только то, что надо
WHERE {node}.uid = $userid AND ({node_type}.type = 'blog' OR {node_type}.type = 'node_gallery_gallery' OR {node_type}.type = 'node_gallery_image' OR {node_type}.type = 'forum')- Для комментирования войдите или зарегистрируйтесь
да нет я имел ввиду не правя код и что бы любой юзер мог это задавать.
- Для комментирования войдите или зарегистрируйтесь
Это модулем. Каким? Не знаю.
- Для комментирования войдите или зарегистрируйтесь
Я поставил user stats, но как ее вывести, в профиль к примеру?
темизация user-profile.tpl.php, а там надо добавить вывод нужной статистики
<?php
<p>Post count: <?php print user_stats_get_stats('post_count', $account->uid); ?></p>
?>в readme.txt модуля, в принципе, все написано.
- Для комментирования войдите или зарегистрируйтесь



Комментарии