Вход на сайт
Последние комментарии

41 минуту назад - BasssTa
Прикольно

6 часов назад - idal
дякую

7 часов назад - Aribova
Бывают в жизни огорченья

1 день и 11 часов назад - vladimir
ПриватБанк,Нажать СПАСИБО и тогд ...

1 день и 14 часов назад - ПриватБанк
как скачят

1 день и 14 часов назад - vladimir
Да не я ж. Парень по имени ДЕЛ :)

1 день и 15 часов назад - arowana
Спасибо что рипнул мой шаблон

1 день и 19 часов назад - k12st
Извините за отнятое время, но ка ...

2 дня и 15 часов назад - Spaun
Показать / Скрыть текст[hide]Нор ...

2 дня и 16 часов назад - slavyan
Чёт я смотрб багов много, а жаль ...

Опрос


Новые сверху
Новые последние
Разберусь по дате


Календарь

«    Январь 2007    »
ПнВтСрЧтПтСбВс
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
 

Какие-то ссылки

seo-monster.ru - сервис проверки доменов
хочешь такой же информер?

Главная страница » Хаки » Счетчик комментариев+ранг пользователей v.1.5
Счетчик комментариев+ранг пользователей v.1.5Хаки

С помощью этого хака можно добавить количество комментариев каждого зарегестрированного пользователя.
Пример смотрите на сайте почти в каждой статье.

Тестировалось на Datalife Engine 5.1-5.3
Автор: Лысак Владимир(dle.net.ua)

Приступим!
1. Правим шаблон comments.tpl.
Нужно добавить два кода. Это код для количества комментариев и сама картинка(полоса) рейтинга.
К примеру так:

<img src="{foto}" border="0" /><br />
{rank_txt}<br />
<img src=/templates/rus/images/comments.gif border="0" alt="Комментариев" />{comm_num}<br />
<img src="{image_rating}" border="0" alt="Рейтинг" />

Я добавил эти поля под фото.

2. Файл show.full.php
Заменить

    $sql_result = $db->query("SELECT " . PREFIX . "_comments.id, post_id, " . PREFIX . "_comments.user_id, date, autor as gast_name, " . PREFIX . "_comments.email as gast_email, text, ip, is_register, name, " . PREFIX . "_users.email, reg_date, signature, foto, fullname, land, icq, xfields FROM " . PREFIX . "_comments LEFT JOIN " . PREFIX . "_users ON " . PREFIX . "_comments.user_id=" . PREFIX . "_users.user_id WHERE " . PREFIX . "_comments.post_id = '$news_id' order by date ".$config['comm_msort']." LIMIT ".$cstart.",".$config['comm_nummers']);

на (для 5.1, а может и 5.2)

    $sql_result = $db->query("SELECT " . PREFIX . "_comments.id, post_id, " . PREFIX . "_comments.user_id, date, autor as gast_name, " . PREFIX . "_comments.email as gast_email, text, ip, is_register, name, " . PREFIX . "_users.email, user_group, reg_date, signature, foto, fullname, land, icq,comm_num, xfields FROM " . PREFIX . "_comments LEFT JOIN " . PREFIX . "_users ON " . PREFIX . "_comments.user_id=" . PREFIX . "_users.user_id WHERE " . PREFIX . "_comments.post_id = '$news_id' order by date ".$config['comm_msort']." LIMIT ".$cstart.",".$config['comm_nummers']);

на (для 5.3)

$sql_result = $db->query("SELECT " . PREFIX . "_comments.id, post_id, " . PREFIX . "_comments.user_id, date, autor as gast_name, " . PREFIX . "_comments.email as gast_email, text, ip, user_group, comm_num, is_register, name, " . PREFIX . "_users.email,  user_group, reg_date, signature, foto, fullname, land, icq, xfields FROM " . PREFIX . "_comments LEFT JOIN " . PREFIX . "_users ON " . PREFIX . "_comments.user_id=" . PREFIX . "_users.user_id WHERE " . PREFIX . "_comments.post_id = '$news_id' order by date ".$config['comm_msort']." LIMIT ".$cstart.",".$config['comm_nummers']);




Далее после

    if ($row['is_register'] AND $row['signature']) {
    $tpl->set_block("'\\[signature\\](.*?)\\[/signature\\]'si","\\1");
    $tpl->set('{signature}', stripslashes($row['signature']));
    } else {
    $tpl->set_block("'\\[signature\\](.*?)\\[/signature\\]'si","");
    }

дописываем

$no_rating = " Гости не учавствуют в рейтинге";
$arr_ratings = array(
0=> array(
'image_rating'=>'http://www.dle.net.ua/templates/rus/images/rank_00.png',
'rank_txt'=>'Прохожий',
'count_comm'=>'0'
),

1=> array(
'image_rating'=>'http://www.dle.net.ua/templates/rus/images/rank_01.png',
'rank_txt'=>'Гость',
'count_comm'=>'1'
),
2=> array(
'image_rating'=>'http://www.dle.net.ua/templates/rus/images/rank_02.png',
'rank_txt'=>'Новичок',
'count_comm'=>'10'
),
3=> array(
'image_rating'=>'http://www.dle.net.ua/templates/rus/images/rank_03.png',
'rank_txt'=>'Опытный',
'count_comm'=>'20'
),
4=> array(
'image_rating'=>'http://www.dle.net.ua/templates/rus/images/rank_04png',
'rank_txt'=>'Шаман',
'count_comm'=>'30'
),
5=> array(
'image_rating'=>'http://www.dle.net.ua/templates/rus/images/rank_05.png',
'rank_txt'=>'Гуру',
'count_comm'=>'40'
),
);
if ($row['comm_num']==""){$row[comm_num]=0;}
for($j=0;$j<=count($arr_ratings)-1;$j++)
{
  if ($row['comm_num']>=$arr_ratings[$j]['count_comm'])
  {
    $image_rating = $arr_ratings[$j]['image_rating'];
    $rank_txt = $arr_ratings[$j]['rank_txt'];
    $remain_comm = "До следующего звания Вам ".($arr_ratings[$j+1]['count_comm']-$row['comm_num'])." комментариев";
    if ($row['comm_num']==0){$remain_comm = $no_rating;}
  }
}
if ($row['user_group']==1)
{
  $rank_txt = "<b>Администратор</b>";
  $remain_comm = "";
}

$tpl->set('{image_rating}',$image_rating);
$tpl->set('{rank_txt}',$rank_txt);
$rank_txt = "";
$image_rating = "";

if ($row['comm_num']>0){
$tpl->set('{comm_num}',$row['comm_num']);
}
else
$tpl->set('{comm_num}','-');
$tpl->set('{img_rating_alt}',$remain_comm);


Аналогичные действия проводим с файлом ajax/addcomments.php

Не забудьте изменить пути к картинкам ну и загрузить, конечно, их на сервер! smile

3. Проверяем работу!
Результат работы вы можете видеть например тут счётчик комментариев

Удачи! wink


Спасибо сказали: trangira, Ice, 1233



Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь. Мы рекомендуем Вам зарегистрироваться либо зайти на сайт под своим именем.
#1 написал: slayer (3 февраля 2007 21:05)

Публикаций: 1
Комментариев: 12
vladimir:

для 5.3 нужно еще в ajax/addcomments.php изменить
$row = $db->super_query("SELECT " . PREFIX . "_comments.id, post_id, " . PREFIX . "_comments.user_id, date, autor as gast_name, " . PREFIX . "_comments.email as gast_email, text, ip, is_register, name, " . PREFIX . "_users.email, reg_date, signature, foto, fullname, land, icq, xfields FROM " . PREFIX . "_comments LEFT JOIN " . PREFIX . "_users ON " . PREFIX . "_comments.user_id=" . PREFIX . "_users.user_id WHERE " . PREFIX . "_comments.post_id = '$post_id' order by id DESC LIMIT 0,1");


на

$row = $db->super_query("SELECT " . PREFIX . "_comments.id, post_id, " . PREFIX . "_comments.user_id, date, autor as gast_name, " . PREFIX . "_comments.email as gast_email, text, ip, is_register, name, " . PREFIX . "_users.email, news_num, " . PREFIX . "_users.comm_num, " . PREFIX . "_users.user_group, reg_date, signature, foto, fullname, land, icq, xfields FROM " . PREFIX . "_comments LEFT JOIN " . PREFIX . "_users ON " . PREFIX . "_comments.user_id=" . PREFIX . "_users.user_id WHERE " . PREFIX . "_comments.post_id = '$post_id' order by id DESC LIMIT 0,1");


проверено 100 percent working tongue





--------------------
#2 написал: vladimir (4 февраля 2007 01:19)

Публикаций: 180
Комментариев: 380
slayer,
Не только для 5,3. Для всех)


--------------------
#3 написал: slayer (4 февраля 2007 14:16)

Публикаций: 1
Комментариев: 12
в общем там оказалось, что в ajax мало этого было дописать crying - в общем вот сборка, для 100 % работы в 5.3 (просто заменяем файлы)
Внимание! У вас нет прав для просмотра скрытого текста.


--------------------
#4 написал: vladimir (4 февраля 2007 15:50)

Публикаций: 180
Комментариев: 380
slayer,
Вложил бы в архив и остальные файлы. А то не полный хак выходит :)


--------------------
#5 написал: vladimir (4 февраля 2007 15:50)

Публикаций: 180
Комментариев: 380
slayer,
Вложил бы в архив и остальные файлы. А то не полный хак выходит :)


--------------------
#6 написал: slayer (4 февраля 2007 22:10)

Публикаций: 1
Комментариев: 12
точно забыл show.full.php положить, сейчас добавлю wink


--------------------
#7 написал: slayer (5 февраля 2007 08:29)

Публикаций: 1
Комментариев: 12
вот полный хак
Внимание! У вас нет прав для просмотра скрытого текста.


--------------------
#8 написал: eagle35 (5 февраля 2007 17:55)

Публикаций: 0
Комментариев: 0
The additional fields under the avatar are not seen in "lastcomments" section, when you go there following the "Last Comments" link in "My Profile" section.
#9 написал: slayer (5 февраля 2007 19:46)

Публикаций: 1
Комментариев: 12
eagle35, у меня на локале пашет везде


--------------------
#10 написал: eagle35 (6 февраля 2007 02:20)

Публикаций: 0
Комментариев: 7
slayer, thank you very much. wink
I haven't seen the code you gave above, when I wrote my earlier comment.
I tried your code and it works fine in DLE 5.3 smile
I distribute it on my site as free with all references. If you want to have a look at my site, here is the address: www.dleturkiye.com
If you don't want me to distribute your code, please send me a message and I'll clear it from my site. Thanks again for the good job.


--------------------
#11 написал: domovoi (9 февраля 2007 00:26)

Публикаций: 0
Комментариев: 3
Спасибо за хак. wink
Есть один баг: если оставивший комментарий не зарегистрирован на сайте, то, вместо картинки рейтинга, получается дырка и портится вид страницы
#12 написал: vladimir (9 февраля 2007 08:42)

Публикаций: 180
Комментариев: 380
domovoi,
Интересный баг...
Сам использую показанный выше алгоритм, но такого не замечал.


--------------------
#13 написал: domovoi (9 февраля 2007 11:50)

Публикаций: 0
Комментариев: 3
Цитата: vladimir
Сам использую показанный выше алгоритм, но такого не замечал.

Это из-за того, что скрипт не проверяет зарегистрирован или нет тот, кто осталвяет комментарий
Пришлось самому чуть-чуть изменять код
$arr_ratings = array(
'/templates/rus/images/rank_00.png'=>'0',
'/templates/rus/images/rank_01.png'=>'4',
'/templates/rus/images/rank_02.png'=>'8',
'/templates/rus/images/rank_03.png'=>'25',
'/templates/rus/images/rank_04.png'=>'50',
'/templates/rus/images/rank_05.png'=>'100',
);
$image_rating = $arr_rating[0];
foreach($arr_ratings as $key=>$value)
{
if ($row['comm_num']>=$value){$image_rating = $key;}
}
if (!isset($image_rating)){$image_rating = $arr_ratings[0];}
$tpl->set('{image_rating}',$image_rating);


вот на это
$arr_ratings = array(
'/templates/rus/images/rank_00.png'=>'0',
'/templates/rus/images/rank_01.png'=>'4',
'/templates/rus/images/rank_02.png'=>'8',
'/templates/rus/images/rank_03.png'=>'25',
'/templates/rus/images/rank_04.png'=>'50',
'/templates/rus/images/rank_05.png'=>'100',
);
$image_rating = $arr_rating[0];
foreach($arr_ratings as $key=>$value)
{
if ($row['comm_num']>=$value){$image_rating = $key;}
}
if (!isset($image_rating)){$image_rating = $arr_ratings[0];}
if ($row['is_register'])
$tpl->set('{image_rating}',$image_rating);
else
$tpl->set('{image_rating}','/templates/rus/images/rank_00.png');



Хотя может у меня руки кривые и в ПХП почти не шарю
#14 написал: vladimir (9 февраля 2007 15:41)

Публикаций: 180
Комментариев: 380
domovoi,
Владеешь и очень хорошо. Просто я допустил ошибку.


if (!isset($image_rating)){$image_rating = $arr_ratings[0];}


Доступ к массиву таким образом не может быть допущен... smile


--------------------
#15 написал: domovoi (10 февраля 2007 12:35)

Публикаций: 0
Комментариев: 3
Цитата: vladimir
Владеешь и очень хорошо. Просто я допустил ошибку.

На самом деле, мозгов хватает только на ковыряние чужих скриптов smile

vladimir, ты скажи я правильно сделал или лучше сделать как-нибудь иначе?
#16 написал: skamer (12 февраля 2007 11:09)

Публикаций: 0
Комментариев: 4
А как сделать чтобы еще и рейтинг отображался типа новичок, гость, опытный итд? (как тут) заранее спасибо!
#17 написал: skamer (12 февраля 2007 11:24)

Публикаций: 0
Комментариев: 4
ой сори.. Я же вспомнил что я программирование учил раньше...

Добавил код в Show.full.php
$arr_ratings_text = array(
$arr_ratings_text = array(
'Гость'=>'0',// Здесь все понятно т.к объяснили выше
'Новичок'=>'5',
'Пользователь'=>'10',
'Продвинутый пользователь'=>'25',
'Общительный'=>'50',
'Комментатор'=>'75',
'Активист'=>'100',
'Super-Активист'=>'200',
'Мудрец'=>'300',
'Хранитель сайта'=>'500',
'Бог'=>'1000',
);
$text_rating = $arr_ratings_text[0];
foreach($arr_ratings_text as $key=>$value)
{
if ($row['comm_num']>=$value){$text_rating = $key;}
}
if (!isset($text_rating)){$text_rating = $arr_ratings_text[0];}
$tpl->set('{text_rating}',$text_rating);
if ($row['comm_num']>0){
$tpl->set('{comm_num}',$row['comm_num']);
}
else
$tpl->set('{comm_num}','-');

// конец добавления от текстового рейтинга
$image_rating = $arr_rating[0];
foreach($arr_ratings as $key=>$value)
{
if ($row['comm_num']>=$value){$image_rating = $key;}
}
if (!isset($image_rating)){$image_rating = $arr_ratings[0];}
$tpl->set('{image_rating}',$image_rating);
if ($row['comm_num']>0){
$tpl->set('{comm_num}',$row['comm_num']);
}
else
$tpl->set('{comm_num}','-');
// конец модуля


Все работает, единственное что хочу чтобы посоветовали, чтобы оптимизировать мое добавление, возможно использую разные переменные а можно было одну итд, чтобы была оптимизация кода.
#18 написал: vladimir (12 февраля 2007 11:30)

Публикаций: 180
Комментариев: 380
skamer,
честно, пытался и не понял что ты делал там...
Вот как я сделал на этом сайте звания для пользователей:

$no_rating = " Гости не учавствуют в рейтинге";
$arr_ratings = array(
0=> array(
'image_rating'=>'/templates/rus/images/rank_00.png',
'rank_txt'=>'Прохожий',
'count_comm'=>'0'
),

1=> array(
'image_rating'=>'/templates/rus/images/rank_01.png',
'rank_txt'=>'Гость',
'count_comm'=>'1'
),
2=> array(
'image_rating'=>'/templates/rus/images/rank_02.png',
'rank_txt'=>'Новичок',
'count_comm'=>'10'
),
3=> array(
'image_rating'=>'/templates/rus/images/rank_03.png',
'rank_txt'=>'Опытный',
'count_comm'=>'20'
),
4=> array(
'image_rating'=>'/templates/rus/images/rank_04png',
'rank_txt'=>'Шаман',
'count_comm'=>'30'
),
5=> array(
'image_rating'=>'/templates/rus/images/rank_05.png',
'rank_txt'=>'Гуру',
'count_comm'=>'40'
),
);
if ($row['comm_num']==""){$row[comm_num]=0;}
for($i=0;$i<=count($arr_ratings)-1;$i++)
{
if ($row['comm_num']>=$arr_ratings[$i]['count_comm'])
{
$image_rating = $arr_ratings[$i]['image_rating'];
$rank_txt = $arr_ratings[$i]['rank_txt'];
$remain_comm = "До следующего звания Вам ".($arr_ratings[$i+1]['count_comm']-$row['comm_num'])." комментариев";
if ($row['comm_num']==0){$remain_comm = $no_rating;}
}
}
$tpl->set('{image_rating}',$image_rating);
$tpl->set('{rank_txt}',$rank_txt);
$rank_txt = "";
$image_rating = "";

if ($row['comm_num']>0){
$tpl->set('{comm_num}',$row['comm_num']);
}
else
$tpl->set('{comm_num}','-');
$tpl->set('{img_rating_alt}',$remain_comm);



Для работы вам нужно ещё добавить {rank_txt} и будет выводиться звание учасников сайта...)

Полузуйтесь наздоровье!)


--------------------
#19 написал: Worm (13 февраля 2007 12:57)

Публикаций: 0
Комментариев: 5
cделайте норм новую версию!
а то пока собрал все по частям чуть не кончил..то одно не пашет то другое.... бррр
#20 написал: MadRush (16 февраля 2007 12:54)

Публикаций: 0
Комментариев: 3
Цитата: Worm
cделайте норм новую версию!
а то пока собрал все по частям чуть не кончил..то одно не пашет то другое.... бррр


Это точно! wink
#21 написал: jox666 (16 февраля 2007 13:23)

Публикаций: 0
Комментариев: 8
Поддерживаю! Выложите плиз уже полностью сформированную версию.... а то я начал в ручную, смотрю готовое, качгнул. оказывается недоработанное опять качнул дальше вы пишете об ошибках.... короче голова закружилась так толком ничо и не сделал
#22 написал: MadRush (16 февраля 2007 14:53)

Публикаций: 0
Комментариев: 3
jox666, Я почти сделал. Скоро дам ссылочку. smile
#23 написал: Relizer (17 февраля 2007 00:59)

Публикаций: 0
Комментариев: 1
Так чё ктонить сделает всё норм или нет?
#24 написал: 90 (17 февраля 2007 04:56)

Публикаций: 0
Комментариев: 1
бля, сделайте вы нормальную версию, а то себе поставили и довольны, остальные как хотите.
#25 написал: Mr. Zorg (17 февраля 2007 12:48)

Публикаций: 0
Комментариев: 6
Ну вот :) Кажись доделал... Вот вам полная версия ==> user_rank.zip

Это версия слепленая из добавлений Vladimir'a, skamer'a, slayer'a и domovoi помог :)

Заметите баги - отписывайтесь здеся в комментах :)
#26 написал: eagle35 (18 февраля 2007 22:30)

Публикаций: 0
Комментариев: 7
vladimir,
There is a mistake in this module.
All the id numbers of the comments are same. Look at the id numbers of the comments here above.
They're also the same (#7)


--------------------
#27 написал: domeni (19 февраля 2007 00:54)

Публикаций: 0
Комментариев: 1
спасибо, проставил wink
#28 написал: vladimir (19 февраля 2007 02:17)

Публикаций: 180
Комментариев: 380
eagle35,
Thx! I don`t see it earlier. wink

Код исправлен.


--------------------
#29 написал: eagle35 (19 февраля 2007 12:40)

Публикаций: 0
Комментариев: 7
vladimir,
How can we indicate the rank "administrator" regardless of the comment number?
I mean, although you're the administrator of this site, your rank is "Опытный". But how can we change this rank to "администратор" for the admin of the site regardless of his/her comment number?


--------------------
#30 написал: Mr. Zorg (19 февраля 2007 14:03)

Публикаций: 0
Комментариев: 6
Цитата: vladimir
Код исправлен.

А можно как нибудь в комменты запостить что на что менять в коде надо, чтобы исправить баг с номерами комментариев?
Вернуться назад << 1 2 >> Следующая страница
Информация

Посетители, находящиеся в группе Гости, не могут оставлять комментарии в данной новости.