Exebit Опубликовано 10 Июля 2009 Жалоба Поделиться Опубликовано 10 Июля 2009 версия форума 2.3.1Задача:Вывод последних (активных) тем в которых ответил пользователь.не путайте с выводом созданых новых тем! Мод должен отображаться в правой колонке форума на страницах:1. главный список форума (/index.php?act=idx)2. в открытой теме (/index.php?showtopic=ххх) Работу оплачу через вебмонюжду Ваших цен!ася в профиле, пишите!(подписан на тему ) Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Exebit Опубликовано 12 Июля 2009 Автор Жалоба Поделиться Опубликовано 12 Июля 2009 Пример можно посмотреть тут - http://www.yaplakal.com (правая колонка "Активные темы") Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
FatCat Опубликовано 12 Июля 2009 Жалоба Поделиться Опубликовано 12 Июля 2009 (изменено) Пример можно посмотреть тут - http://www.yaplakal.com (правая колонка "Активные темы")Там 1.3, штатная функция портала перенесена из левой колонки в правую. Делов-то... версия форума 2.3.1Под 1.3 я бы Вам даром дал лучше: не по дате последнего ответа, а по отношению количества просмотров к времени существования; да с кешированием, чтобы не гонять запрос при каждом запросе страницы...А под "двушку", извините, поленюсь, или заломлю такую цену за мод, что цена лицензии мелочью покажется. Держите код ТОП-а по просмотрам, может приспособите под "двушку": // Вывод ТОП 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 - ИМХО, халтура. Изменено 12 Июля 2009 пользователем FatCat Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Exebit Опубликовано 12 Июля 2009 Автор Жалоба Поделиться Опубликовано 12 Июля 2009 Там 1.3, штатная функция портала перенесена из левой колонки в правую. Делов-то...1. я показал этот сайт в качестве примера того что мне нужно, я в курсе что это 1.32. на япе также сделано что этиже активные темы можно воткнуть в любую страницу форума, т.е. главная, форумы, топики и тд... пример:http://www.yaplakal.com/forum2/st/75/topic249752.htmlПод 1.3 я бы Вам даром дал лучше: не по дате последнего ответа, а по отношению количества просмотров к времени существования; да с кешированием, чтобы не гонять запрос при каждом запросе страницы...Спасибо но у меня 2.3.1 и нужно что бы был функцианал как я описал выше и не нада мне говорить про нагрузку на серв т.к. я в курсе.А под "двушку", извините, поленюсь, или заломлю такую цену за мод, что цена лицензии мелочью покажется.жалко... я не думаю что там иного работы для знающего человека. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
FatCat Опубликовано 12 Июля 2009 Жалоба Поделиться Опубликовано 12 Июля 2009 я не думаю что там иного работы для знающего человека.Муторно со скинами в "двушках". Вот код создания/кеширования списка: $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); } Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Exebit Опубликовано 12 Июля 2009 Автор Жалоба Поделиться Опубликовано 12 Июля 2009 К сожалению врятли я со своими знаниями смогу воткнуть этот код туда куда нада даже не понимая что он делает, а даже если узнаю то врятли мне это поможет 8(по этому и просил в данном топике сделать мод, а если это мод то я так понимаю там и описание будет куда что воткнуть. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
WildRAID Опубликовано 13 Июля 2009 Жалоба Поделиться Опубликовано 13 Июля 2009 А вообще, весьма интересный ведь вопрос. Можно ли одним запросом для MySQL ограничить кол-во повторений определенного поля? Типа distinct, но не более 5 повторений. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Exebit Опубликовано 15 Июля 2009 Автор Жалоба Поделиться Опубликовано 15 Июля 2009 АП. Ни кому деньги не нужны.... Не ужели такая трудная задача? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Рекомендуемые сообщения
Присоединиться к обсуждению
Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.