Перейти к публикации

Рекомендованные сообщения

Топ комментаторов v2.1 F - by Glam

http://x-coders.net/mods/168-top-kommentatorov-v2.1-f-by-glam.html

Модуль совсем старый но работает... подскажите знатоки sql как сделать чтобы топ показывалась за месяц а так же как подключить кэширование?

Вот сам код:


<?php

/*

=====================================================

Файл: glamusers.php

-----------------------------------------------------

Назначение: Топ комментаторов

=====================================================

*/

if(!defined('DATALIFEENGINE'))

{

  die("Hacking attempt!");

}

$num = "10"; // сколько пользователей выводим в блоке?

$glamusers = dle_cache("glamusers", $config['skin']);

$sql = $db->query("SELECT user_id, name, foto, signature, comm_num FROM ".PREFIX."_users order by comm_num DESC LIMIT 0,$num");

while ($row = $db->get_row($sql)) {

if ($config['allow_alt_url'] == "yes") {

$userlink = "<a href=\"".$config['http_home_url']."user/".urlencode($row['name'])."/\">";

} else {

$userlink = "<a href=\"$PHP_SELF?subaction=userinfo&amp;user=".urlencode($row['name'])."/\">";

}

if ($row['foto'] !== "")

$ava = "{$userlink}<img src=\"".$config['http_home_url']."uploads/fotos/".$row['foto']."\" align=\"middle\" width=\"50\" alt='' /></a>";

else

$ava = "{$userlink}<img src=\"{THEME}/images/noavatar.png\" align=\"middle\" width=\"50\" alt='' /></a>";

$nohtml = "'<[\/\!]*?[^<>]*?>'si";

$tpl->load_template('topusers.tpl');

$tpl->set('{ava}', $ava);

$tpl->set('{nickname}', $userlink.$row['name'].'</a>');

$tpl->set('{signature}', preg_replace($nohtml,"",stripslashes($row['signature'])));

$tpl->set('{comm_num}', '<a href="/index.php?do=lastcomments&amp;userid='.$row['user_id'].'">'.$row['comm_num'].'</a>');

$tpl->compile('glamusers');

$tpl->clear();

}

$db->free();

?>

Ссылка на сообщение
Поделиться на других сайтах

Установка:

Создать файл /engine/modules/my/top_comments.php и поместить туда


<?php

/*

=====================================================

Топ комментаторов v2.1 by Glam

Топ комментаторов v2.2 by Sarvan

-----------------------------------------------------

Файл: top_comments.php

-----------------------------------------------------

Назначение: Топ комментаторов

=====================================================

*/

if(!defined('DATALIFEENGINE'))

{

	die("Hacking attempt!");

}

$num = "10"; // Cколько пользователей выводим

$tpl->result['top_comments'] = dle_cache('top_comments', $config['skin'], true);

if ($tpl->result['top_comments'] === false)

{

	$this_month = date( 'Y-m-d H:i:s', $_TIME );


	$sql = $db->query("SELECT DISTINCT

				users.user_id,

				users.name,

				users.foto,

				users.signature,

				users.comm_num,

				users.icq

			FROM

				".PREFIX."_users users

			INNER JOIN

				".PREFIX."_comments comments ON users.user_id = comments.user_id

				and comments.date  >= '{$this_month}' - INTERVAL 1 MONTH

				and comments.date  < '{$this_month}'

			ORDER BY users.comm_num DESC

			LIMIT 0,{$num}");


	while ($row = $db->get_row($sql))

	{

		if ($config['allow_alt_url'] == 'yes')

			$userlink = "<a href=\"".$config['http_home_url']."user/".urlencode($row['name'])."/\">";

		else

			$userlink = "<a href=\"$PHP_SELF?subaction=userinfo&user=".urlencode($row['name'])."/\">";



		 if ($config['allow_alt_url'] == 'yes')

				$go_page = $config['http_home_url'].'user/'.urlencode( $row['name'] ).'/';

			else

				$go_page = "$PHP_SELF?subaction=userinfo&user=".urlencode($row['name']);

				$go_page = "onclick=\"ShowProfile('" . urlencode( $row['name'] )."', '".htmlspecialchars( $go_page )."', '".$user_group[$member_id['user_group']]['admin_editusers']."'); return false;\"";


				if ($config['allow_alt_url'] == 'yes')

					$tpl->set( '{nickname}', "<a {$go_page} href=\"".$config['http_home_url']."user/".urlencode($row['name'])."/\">".$row['name']."</a>");

				else

					$tpl->set( '{nickname}', "<a {$go_page} href=\"$PHP_SELF?subaction=userinfo&amp;user=".urlencode($row['name'])."\">".$row['name']."</a>");				  


		if ($row['foto'] !== '')

			$ava = "{$userlink}<img src=\"".$config['http_home_url']."uploads/fotos/".$row['foto']."\" align=\"center\" width=\"50\"></a>";

		else

			$ava = "{$userlink}<img src=\"{THEME}/images/noavatar.png\" align=\"center\" width=\"50\"></a>";

		$tpl->load_template('top_comments.tpl');

		$tpl->set('{ava}', $ava);

		$tpl->set('{signature}', preg_replace('/<[\/\!]*?[^<>]*?>/si', '', stripslashes($row['signature'])));  // HTML remove

		$tpl->set('{icq}', $row['icq']);

		$tpl->set('{comm_num}', '<a href="/index.php?do=lastcomments&userid='.$row['user_id'].'">'.$row['comm_num'].'</a>');

		$tpl->compile('top_comments');

	}


	$tpl->clear();  

	$db->free();


	create_cache( "top_comments", $tpl->result['top_comments'], $config['skin'], true );  

}

echo $tpl->result['top_comments'];

?>

Создать файл /templates/ваш_шаблон/top_comments.tpl и поместить туда


<style type="text/css">

.topava {width: 70px;}

.topava img {padding:4px;border:1px solid #E7E5E0;}

</style>

<table>

  <tr>

   <td class="topava">{ava}</td>

   <td>{nickname}<br>{signature}<br><b>ICQ:</b> {icq}<br>комментариев: {comm_num}</td>

  </tr>

</table>

В /templates/ваш_шаблон/main.tpl в нужно месте

{include file="engine/modules/my/top_comments.php"}

На этом установка завершена.

Мне оказалось тоже это надо, поэтому держите новую версию.

Что нового:

  • [+] Кэширование.
  • [+] Вывод топ комментаторов за месяц.
  • [+] Мелкие исправления.

Ссылка на сообщение
Поделиться на других сайтах

Установка:

Создать файл /engine/modules/my/top_comments.php и поместить туда


<?php

/*

=====================================================

Топ комментаторов v2.1 by Glam

Топ комментаторов v2.2 by Sarvan

-----------------------------------------------------

Файл: top_comments.php

-----------------------------------------------------

Назначение: Топ комментаторов

=====================================================

*/

if(!defined('DATALIFEENGINE'))

{

	die("Hacking attempt!");

}

$num = "10"; // Cколько пользователей выводим

$tpl->result['top_comments'] = dle_cache('top_comments', $config['skin'], true);

if ($tpl->result['top_comments'] === false)

{

	$this_month = date( 'Y-m-d H:i:s', $_TIME );


	$sql = $db->query("SELECT DISTINCT

				users.user_id,

				users.name,

				users.foto,

				users.signature,

				users.comm_num,

				users.icq

			FROM

				".PREFIX."_users users

			INNER JOIN

				".PREFIX."_comments comments ON users.user_id = comments.user_id

				and comments.date  >= '{$this_month}' - INTERVAL 1 MONTH

				and comments.date  < '{$this_month}'

			ORDER BY users.comm_num DESC

			LIMIT 0,{$num}");


	while ($row = $db->get_row($sql))

	{

		if ($config['allow_alt_url'] == 'yes')

			$userlink = "<a href=\"".$config['http_home_url']."user/".urlencode($row['name'])."/\">";

		else

			$userlink = "<a href=\"$PHP_SELF?subaction=userinfo&user=".urlencode($row['name'])."/\">";



		 if ($config['allow_alt_url'] == 'yes')

				$go_page = $config['http_home_url'].'user/'.urlencode( $row['name'] ).'/';

			else

				$go_page = "$PHP_SELF?subaction=userinfo&user=".urlencode($row['name']);

				$go_page = "onclick=\"ShowProfile('" . urlencode( $row['name'] )."', '".htmlspecialchars( $go_page )."', '".$user_group[$member_id['user_group']]['admin_editusers']."'); return false;\"";


				if ($config['allow_alt_url'] == 'yes')

					$tpl->set( '{nickname}', "<a {$go_page} href=\"".$config['http_home_url']."user/".urlencode($row['name'])."/\">".$row['name']."</a>");

				else

					$tpl->set( '{nickname}', "<a {$go_page} href=\"$PHP_SELF?subaction=userinfo&amp;user=".urlencode($row['name'])."\">".$row['name']."</a>");				  


		if ($row['foto'] !== '')

			$ava = "{$userlink}<img src=\"".$config['http_home_url']."uploads/fotos/".$row['foto']."\" align=\"center\" width=\"50\"></a>";

		else

			$ava = "{$userlink}<img src=\"{THEME}/images/noavatar.png\" align=\"center\" width=\"50\"></a>";

		$tpl->load_template('top_comments.tpl');

		$tpl->set('{ava}', $ava);

		$tpl->set('{signature}', preg_replace('/<[\/\!]*?[^<>]*?>/si', '', stripslashes($row['signature'])));  // HTML remove

		$tpl->set('{icq}', $row['icq']);

		$tpl->set('{comm_num}', '<a href="/index.php?do=lastcomments&userid='.$row['user_id'].'">'.$row['comm_num'].'</a>');

		$tpl->compile('top_comments');

	}


	$tpl->clear();  

	$db->free();


	create_cache( "top_comments", $tpl->result['top_comments'], $config['skin'], true );  

}

echo $tpl->result['top_comments'];

?>

Создать файл /templates/ваш_шаблон/top_comments.tpl и поместить туда


<style type="text/css">

.topava {width: 70px;}

.topava img {padding:4px;border:1px solid #E7E5E0;}

</style>

<table>

  <tr>

   <td class="topava">{ava}</td>

   <td>{nickname}<br>{signature}<br><b>ICQ:</b> {icq}<br>комментариев: {comm_num}</td>

  </tr>

</table>

В /templates/ваш_шаблон/main.tpl в нужно месте

{include file="engine/modules/my/top_comments.php"}

На этом установка завершена.

Мне оказалось тоже это надо, поэтому держите новую версию.

Что нового:

  • [+] Кэширование.
  • [+] Вывод топ комментаторов за месяц.
  • [+] Мелкие исправления.

Woooow Огромное человеческое спасибо <_<

Ссылка на сообщение
Поделиться на других сайтах
  • 1 год спустя...

1. Как изменить сортировку комментаторов в зависимости от кол-ва данных ими комментариев за 1 мес., а не так, что сортировка осуществляется от общего кол-ва комментариев за весь период времени.

2. Как сделать, чтобы указывалось не общее кол-во комментариев, а то кол-во комментариев которое было дано пользователем за 1 мес.

Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

×
×
  • Создать...