Перейти к контенту

Активные темы на определенных страницах форума


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

версия форума 2.3.1

Задача:

Вывод последних (активных) тем в которых ответил пользователь.

не путайте с выводом созданых новых тем!

Мод должен отображаться в правой колонке форума на страницах:

1. главный список форума (/index.php?act=idx)

2. в открытой теме (/index.php?showtopic=ххх)

 

Работу оплачу через вебмоню

жду Ваших цен!

ася в профиле, пишите!

(подписан на тему :D )

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

Пример можно посмотреть тут - http://www.yaplakal.com (правая колонка "Активные темы")

Там 1.3, штатная функция портала перенесена из левой колонки в правую. Делов-то...

 

версия форума 2.3.1

Под 1.3 я бы Вам даром дал лучше: не по дате последнего ответа, а по отношению количества просмотров к времени существования; да с кешированием, чтобы не гонять запрос при каждом запросе страницы...

А под "двушку", извините, поленюсь, или заломлю такую цену за мод, что цена лицензии мелочью покажется. :D

 

Держите код ТОП-а по просмотрам, может приспособите под "двушку":

		// Вывод ТОП 10
	$DB->query("SELECT t.tid, t.title, t.description, t.forum_id, t.views, t.start_date, f.id, f.read_perms, (
				t.views / ( ( ".time()." - t.start_date ) ) *86400
				) AS keyder
				FROM ibf_topics t, ibf_forums f
				WHERE f.id = t.forum_id
				AND (
				f.read_perms = '*'
				OR f.read_perms LIKE '%,2,%'
				OR f.read_perms LIKE '2,%'
				)
				ORDER BY keyder DESC 
				LIMIT 0 , 10");
	$list_top10 = "<ol style='margin-top:0px;margin-bottom:0px;margin-left:28px'>";
	while ( $top10 = $DB->fetch_row() ){
		$list_top10 .= "<li><a style=color:#306284 href='index.php?showtopic=".$top10['tid']."'>".$top10['title']."</a>";
		if($top10['description'] != "")$list_top10 .= "<br>".$top10['description'];
		$list_top10 .= "<br>(".round($top10['keyder'])." просмотров в день)";
	}
	$list_top10 .= "</ol>";

Посмотреть в действии можно на http://vesvalo.net/ в низу левой колонки.

Для сравнения штатный от 1.3 в верху левой колонки на http://vesvalo.net/index.php?act=portal - ИМХО, халтура.

Изменено пользователем FatCat
Ссылка на комментарий
Поделиться на других сайтах

Там 1.3, штатная функция портала перенесена из левой колонки в правую. Делов-то...

1. я показал этот сайт в качестве примера того что мне нужно, я в курсе что это 1.3

2. на япе также сделано что этиже активные темы можно воткнуть в любую страницу форума, т.е. главная, форумы, топики и тд... пример:

http://www.yaplakal.com/forum2/st/75/topic249752.html

Под 1.3 я бы Вам даром дал лучше: не по дате последнего ответа, а по отношению количества просмотров к времени существования; да с кешированием, чтобы не гонять запрос при каждом запросе страницы...

Спасибо но у меня 2.3.1 и нужно что бы был функцианал как я описал выше и не нада мне говорить про нагрузку на серв т.к. я в курсе.

А под "двушку", извините, поленюсь, или заломлю такую цену за мод, что цена лицензии мелочью покажется.

жалко... я не думаю что там иного работы для знающего человека.

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

я не думаю что там иного работы для знающего человека.

Муторно со скинами в "двушках". :D

 

 

Вот код создания/кеширования списка:

		$time_next = Array();
	$cache_dir="cache";
	$open_dir=opendir($cache_dir);
	while($tmp_name=readdir($open_dir))
	{
		if(stristr($tmp_name,".cache.top.tmp"))
			$time_next[] = intval( str_replace(".cache.top.tmp","",$tmp_name) );
	}
	if( count($time_next) == 0 ) // Нет кеша главной
	{
		$time_next = 0;
		$cached_in_file = "recach";
	}
	elseif( count($time_next) > 1 ) // Несколько кешей
	{
		rsort($time_next);
		unlink($ibforums->vars['base_dir'].$cache_dir."/".$time_next[1].".cache.top.tmp");
		$time_next = $time_next[0];
	}
	else // Кеш есть
	{
		$time_next = $time_next[0];
	}
	$time_delim = time() - $time_next;

	if( ($time_delim > 900 or $time_delim < 0) and intval($ibforums->input['f'])<1 )
	{
		$cached_in_file = "recach";
		if(file_exists($ibforums->vars['base_dir'].$cache_dir."/".$time_next.".cache.top.tmp"))
			unlink($ibforums->vars['base_dir'].$cache_dir."/".$time_next.".cache.top.tmp");
	}
	else
	{
		$cached_in_file = "cached";
	}
	if( $cached_in_file == "cached" )
	{
		$list_top10 = file_get_contents( $ibforums->vars['base_dir'].$cache_dir."/".$time_next.".cache.top.tmp" );
	}
	elseif( $cached_in_file == "recach" )
	{
		$DB->query("SELECT t.tid, t.title, t.description, t.forum_id, t.views, t.start_date, f.id, f.read_perms, (
					t.views / ( ( ".time()." - t.start_date ) ) *86400
					) AS keyder
					FROM ibf_topics t, ibf_forums f
					WHERE f.id = t.forum_id
					AND (
					f.read_perms = '*'
					OR f.read_perms LIKE '%,2,%'
					OR f.read_perms LIKE '2,%'
					)
					ORDER BY keyder DESC 
					LIMIT 0 , 10");
		$list_top10 = "<ol style='margin-top:0px;margin-bottom:0px;margin-left:28px'>";
		while ( $top10 = $DB->fetch_row() ){
			$list_top10 .= "<li><a style=color:#306284 href='index.php?showtopic=".$top10['tid']."'>".$top10['title']."</a>";
			if($top10['description'] != "")$list_top10 .= "<br>".$top10['description'];
			$list_top10 .= "<br>(".round($top10['keyder'])." просмотров в день)";
		}
		$list_top10 .= "</ol>";
		$fh = fopen($cache_dir."/".time().".cache.top.tmp", "w");
		fwrite($fh, $list_top10);
		fclose($fh);
	}

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

К сожалению врятли я со своими знаниями смогу воткнуть этот код туда куда нада даже не понимая что он делает, а даже если узнаю то врятли мне это поможет 8(

по этому и просил в данном топике сделать мод, а если это мод то я так понимаю там и описание будет куда что воткнуть.

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

А вообще, весьма интересный ведь вопрос.

 

Можно ли одним запросом для MySQL ограничить кол-во повторений определенного поля? Типа distinct, но не более 5 повторений.

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

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

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

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

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

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

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

Зарузка...
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.