Появилась такая острая необходимость с добавлением одного пункта в меню "рейтинг популярных тем", а именно неоходима колонка с "По последней созданной теме", то есть показывала бы последние созданные темы, тем создается много, за всеми не уследишь.
Если возможно такое сделать, был бы рад!
+ очень, ну очень хотелось бы добавить одну колонку в список, когда просматриеваешь темы, то есть по порядку темы, автор темы, ответов, просмотров, обновление. Так вот, хотелось бы добавить колонку дата создания!
1. drummer69 - 30 августа 2009 — 06:42 - перейти к сообщению
2. yura3d - 30 августа 2009 — 10:20 - перейти к сообщению
drummer69 пишет:
Появилась такая острая необходимость с добавлением одного пункта в меню "рейтинг популярных тем", а именно неоходима колонка с "По последней созданной теме", то есть показывала бы последние созданные темы, тем создается много, за всеми не уследишь.
Если возможно такое сделать, был бы рад!
Если возможно такое сделать, был бы рад!
Подумаю над этим, как лучше реализовать
drummer69 пишет:
+ очень, ну очень хотелось бы добавить одну колонку в список, когда просматриеваешь темы, то есть по порядку темы, автор темы, ответов, просмотров, обновление. Так вот, хотелось бы добавить колонку дата создания!
Не думаю что в список тем влезет ещё одна колонка, в некоторых случаях название темы полностью не помещается в одну строку даже при просмотре на широком мониторе (1440x900), а ведь в списке тем отображается ещё и описание темы, и постраничная навигация. Я на каком-то движке видел вывод даты создания темы в виде подсказки при наведении курсора на название темы, по-моему это был бы наиболее разумный вариант
3. drummer69 - 31 августа 2009 — 18:59 - перейти к сообщению
yura3d
Буду ждать реализации, спасибо!
Буду ждать реализации, спасибо!
4. yura3d - 1 сентября 2009 — 19:36 - перейти к сообщению
drummer69 пишет:
Буду ждать реализации, спасибо!
Вывод даты создания тем при наведении курсора на название темы в списке тем реализуется так
Откройте файл language/russian/lang_front_forums.php, найдите строку:
CODE:
$this->LANG['Views'] = 'Просмотров';
И сразу за ней разместите строку:
CODE:
$this->LANG['TopicCreateDate'] = 'Тема создана: %s';
Далее откройте файл forums.php, найдите строку:
CODE:
$topictitle = '<a href="topic.php?forum='.$forumid.'&topic='.$topicid.'">'.$fm->chunk_split($topics[$topic_id]['name']).'</a>';
И замените её строкой:
CODE:
$topictitle = '<a href="topic.php?forum='.$forumid.'&topic='.$topicid.'" title="'.sprintf($fm->LANG['TopicCreateDate'], $fm->_DateFormat($topics[$topic_id]['date'] + $fm->user['timedif'] * 3600)).'">'.$fm->chunk_split($topics[$topic_id]['name']).'</a>';
Затем найдите в этом же файле найдите строку:
CODE:
$topictitle = '<a href="topic.php?forum='.$forum_id.'&topic='.$topic_id.'">'.$fm->chunk_split($topics[$topic_id]['name']).'</a>';
И замените её строкой:
CODE:
$topictitle = '<a href="topic.php?forum='.$forum_id.'&topic='.$topic_id.'" title="'.sprintf($fm->LANG['TopicCreateDate'], $fm->_DateFormat($topics[$topic_id]['date'] + $fm->user['timedif'] * 3600)).'">'.$fm->chunk_split($topics[$topic_id]['name']).'</a>';
Если у Вас установлено Дополнение: Удобочитаемый вывод даты и времени, то для корректной работы необходимо выполнить также это указание
На этом всё
5. drummer69 - 1 сентября 2009 — 20:05 - перейти к сообщению
Спасибо, примочка хорошая, но немного не то, хотелось бы в "Рейтинг популярных тем" засунуть колонку с последними созданными темами...
6. yura3d - 2 сентября 2009 — 14:28 - перейти к сообщению
drummer69 пишет:
Спасибо, примочка хорошая, но немного не то, хотелось бы в "Рейтинг популярных тем" засунуть колонку с последними созданными темами...
Откройте файл modules/threadstop/frontindex.php, найдите строку:
CODE:
$allforums = $fm->_Read(FM_ALLFORUMS);
И после неё разместите строку:
CODE:
$arr_by_date = array();
Далее в этом же файле найдите строки:
CODE:
foreach ($_views as $topic_id => $views)
$topic[$topic_id]['views'] = $views;
$topic[$topic_id]['views'] = $views;
И под ними разместите строку:
CODE:
sort_array($topic,'date',$arr_by_date);
Затем найдите строку:
CODE:
$topic_by_views = return_print($arr_by_viewspost,'views');
И над ней разместите строку:
CODE:
$topic_by_date = return_print($arr_by_date,'posts');
Далее найдите строки:
CODE:
case 'posts' : $state = 'closed';
break;
break;
И под ними разместите строки:
CODE:
case 'date' : $state = 'moved';
break;
break;
Теперь откройте файл modules/threadstop/language/russian/lang.php, найдите строку:
CODE:
$this->LANG['LovelyTopics'] = 'Популярные темы';
И под ней разместите строку:
CODE:
$this->LANG['ByCreateDate'] = 'По дате создания';
Откройте файл templates/ваш_скин/topic_stat_table.tpl, найдите строку:
CODE:
<th colspan="3" class="maintitle" align="left"><img src="./templates/InvisionExBB/im/nav_m.gif" border="0" alt=">" width="8" height="8" /> {$fm->LANG['LovelyTopics']} </th>
И замените её строкой:
CODE:
<th colspan="4" class="maintitle" align="left"><img src="./templates/InvisionExBB/im/nav_m.gif" border="0" alt=">" width="8" height="8" /> {$fm->LANG['LovelyTopics']} </th>
Далее в этом же файле найдите строку:
CODE:
<th class="titlemedium">{$fm->LANG['ByLastPost']}</th>
И над ней разместите строку:
CODE:
<th class="titlemedium">{$fm->LANG['ByCreateDate']}</th>
Затем найдите строки:
CODE:
<td class="row1" width="33%">{$topic_by_lastpost}</td>
<td class="row1" width="33%">{$topic_by_post}</td>
<td class="row1" width="33%">{$topic_by_views}</td>
<td class="row1" width="33%">{$topic_by_post}</td>
<td class="row1" width="33%">{$topic_by_views}</td>
И замените их строками:
CODE:
<td class="row1" width="25%">{$topic_by_date}</td>
<td class="row1" width="25%">{$topic_by_lastpost}</td>
<td class="row1" width="25%">{$topic_by_post}</td>
<td class="row1" width="25%">{$topic_by_views}</td>
<td class="row1" width="25%">{$topic_by_lastpost}</td>
<td class="row1" width="25%">{$topic_by_post}</td>
<td class="row1" width="25%">{$topic_by_views}</td>
И, наконец, найдите строку:
CODE:
<td class="darkrow2" colspan="3"> </td>
И замените её строкой:
CODE:
<td class="darkrow2" colspan="4"> </td>
На этом всё, надеюсь описал все изменения и ничего не забыл
7. drummer69 - 2 сентября 2009 — 16:15 - перейти к сообщению
Вах, супер, спасибо огромное, то, что надо...
только во немного строки поползли.
только во немного строки поползли.
8. yura3d - 2 сентября 2009 — 16:22 - перейти к сообщению
drummer69 пишет:
только во немного строки поползли.
Просто 4 колонки полностью не помещаются, поэтому некоторые строки размещаются с переносом. Ну а решить проблему со сползающими списками несложно, замените в файле templates/ваш_скин/topic_stat_table.tpl все фрагменты:
CODE:
<td class="row1" width="25%">
на эти фрагменты:
CODE:
<td class="row1" width="25%" valign="top">
9. drummer69 - 2 сентября 2009 — 16:28 - перейти к сообщению
Биг спасибо! и последняя просьба, возможно ли принажатии на выбранную тему, она открывалась в новом окне?
10. yura3d - 2 сентября 2009 — 16:34 - перейти к сообщению
drummer69 пишет:
Биг спасибо! и последняя просьба, возможно ли принажатии на выбранную тему, она открывалась в новом окне?
Возможно, в файле modules/threadstop/frontindex.php найдите фрагмент:
CODE:
<a href="topic.php?forum='.$value['fid'].'&topic='.$value['id'].'&postid='.$value['postkey'].'#'.$value['postkey'].'">
И замените его фрагментом:
CODE:
<a href="topic.php?forum='.$value['fid'].'&topic='.$value['id'].'&postid='.$value['postkey'].'#'.$value['postkey'].'" target="_blank">
(Добавление)
Да, и хотелось бы добавить, добавлять 4-ую колонку в рейтинг популярных тем не стоит, если у Вас слабенький сервер или очень большой форум, т.к. формирование подобного списка будет существенно нагружать сервер
11. drummer69 - 2 сентября 2009 — 17:54 - перейти к сообщению
Сенькью вери мач!
12. robert - 13 января 2010 — 13:49 - перейти к сообщению
Понимаю, не тему, но новую тему создавать бессмысленно.
Вопрос: Почему при закрытие темы она сразу же пропадает из рейтинга популярных тем. Понимаю, что её читать не будут, но для чего тогда нужны колонки по просмотрам и по кол-ву ответов?
Вопрос: Почему при закрытие темы она сразу же пропадает из рейтинга популярных тем. Понимаю, что её читать не будут, но для чего тогда нужны колонки по просмотрам и по кол-ву ответов?
13. electron - 13 января 2010 — 14:03 - перейти к сообщению
robert пишет:
Вопрос: Почему при закрытие темы она сразу же пропадает из рейтинга популярных тем.
странно все это... у меня одна тема закрыта и из рейтинга не пропадает, хотя и закрыта уже приличное время
14. robert - 13 января 2010 — 14:08 - перейти к сообщению
посмотри у меня вот на эту тему. Просмотров куча. Как открываю, в рейтинге появляется. Как закрываю (сейчас закрыта) - в рейтинге нету.
15. yura3d - 13 января 2010 — 16:26 - перейти к сообщению
robert
Алгоритм ранжирования популярных тем предыдущим разработчиком форума был составлен таким образом, что закрытые темы в рейтинге по просмотрам опускаются вниз рейтинга и сортируются там отдельно (среди других закрытых тем). Поэтому при наличии множества других тем на форуме закрытые в данную таблицу рейтинга могут и не попасть ввиду ограниченности кол-ва выводимых тем. Можно в принципе удалить подобную составляющую ранжирования, чтобы сравнение тем осуществлялось только непосредственным сравнением их количественных характеристик (ответов, просмотров). Для этого из файла modules/threadstop/frontindex.php нужно удалить строки:
Кстати, подобное упрощение алгоритма ранжирования положительно скажется на скорости генерации списка популярных тем, а также снизит нагрузку на сервер при этом
Алгоритм ранжирования популярных тем предыдущим разработчиком форума был составлен таким образом, что закрытые темы в рейтинге по просмотрам опускаются вниз рейтинга и сортируются там отдельно (среди других закрытых тем). Поэтому при наличии множества других тем на форуме закрытые в данную таблицу рейтинга могут и не попасть ввиду ограниченности кол-ва выводимых тем. Можно в принципе удалить подобную составляющую ранжирования, чтобы сравнение тем осуществлялось только непосредственным сравнением их количественных характеристик (ответов, просмотров). Для этого из файла modules/threadstop/frontindex.php нужно удалить строки:
CODE:
if (isset(\$a['state']) && isset(\$b['state'])) {
if (\$a['state'] === '$state' && \$b['state'] !== '$state')
return 1;
else if (\$a['state'] !== '$state' && \$b['state'] === '$state')
return -1;
}
if (\$a['state'] === '$state' && \$b['state'] !== '$state')
return 1;
else if (\$a['state'] !== '$state' && \$b['state'] === '$state')
return -1;
}
Кстати, подобное упрощение алгоритма ранжирования положительно скажется на скорости генерации списка популярных тем, а также снизит нагрузку на сервер при этом