Уважаемые пользователи!
C 7 ноября 2020 года phpBB Group прекратила выпуск обновлений и завершила дальнейшее развитие phpBB версии 3.2.
С 1 августа 2024 года phpBB Group прекращает поддержку phpBB 3.2 на официальном сайте.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.2 до 31 декабря 2024 года.
С учетом этого, настоятельно рекомендуется обновить конференции до версии 3.3.

Вывод новых сообщений за день (час, пять часов.)

Проблемы с установкой или работой phpBB 3.1.x? Получите помощь здесь!
С 1 июля 2018 года phpBB Group прекращает поддержку phpBB версии 3.1.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.1 до 1 января 2019 года.
Подробнее: Окончание поддержки phpBB 3.1.
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Мини [FAQ] по phpBB3.1.x | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать расширения

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
UltimaThule
phpBB 1.4.1
Сообщения: 40
Стаж: 7 лет 7 месяцев

Вывод новых сообщений за день (час, пять часов.)

Сообщение UltimaThule »

Пользователи привыкли на старом форуме выбирать период времени для просмотра новых сообщений. Это было реализовано в виде выпадающего списка с опциями (за час, пять часов, за день, два дня, неделю, месяц и т.д.)
После переноса форума на phpbb 3.1.9 оказалось, что такой возможности в нем нет.
Подскажите, пожалуйста, нет ли какого-либо расширения, на базе которого можно было такую функцию реализовать?
Или может быть можно сам файл search.php, выводящий новые сообщения, как-то доработать?
Пользователи просят сделать такую возможность при клике по ссылке "Новые сообщения" /forum/search.php?search_id=newposts в меню форума.
Вот как это было сделано на старом форуме:
Untitled-3.jpg
Буду признательна за любые советы по теме.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
LavIgor
Former team member
Сообщения: 3468
Стаж: 10 лет
Благодарил (а): 41 раз
Поблагодарили: 831 раз

Re: Вывод новых сообщений за день (час, пять часов.)

Сообщение LavIgor »

UltimaThule, в активных темах в самом низу есть выпадающий список, но там крупные интервалы.
UltimaThule
phpBB 1.4.1
Сообщения: 40
Стаж: 7 лет 7 месяцев

Re: Вывод новых сообщений за день (час, пять часов.)

Сообщение UltimaThule »

LavIgor, спасибо за подсказку. Попыталась вывести такой же выпадающий список в новых сообщениях. Но ничего не вышло, к сожалению.
Добавила в файл search.php еще один case 'active_posts' . В нем взяла sql-запрос из кейса 'newposts', а условие сортировки из кейса 'active_topics'.
Получился вот такой код:

Код: Выделить всё

case 'active_posts':
				$l_search_title = $user->lang['SEARCH_NEW'];
				// force sorting
				$show_results = (request_var('sr', 'topics') == 'posts') ? 'posts' : 'topics';
				$sort_key = 't';
				$sort_dir = 'd';
				***$sort_days = request_var('st', 7);
				$sort_by_sql['t'] = ($show_results == 'posts') ? 'p.post_time' : 't.topic_last_post_time';
				$sql_sort = 'ORDER BY ' . $sort_by_sql[$sort_key] . (($sort_dir == 'a') ? ' ASC' : ' DESC');

				gen_sort_selects($limit_days, $sort_by_text, $sort_days, $sort_key, $sort_dir, $s_limit_days, $s_sort_key, $s_sort_dir, $u_sort_param);
				$s_sort_key = $s_sort_dir = $u_sort_param = $s_limit_days = '';
	
				***$last_post_time_sql = ($sort_days) ? ' AND t.topic_last_post_time > ' . (time() - ($sort_days * 24 * 3600)) : '';
				
				if ($show_results == 'posts')
				{
					$sql = 'SELECT p.post_id
						FROM ' . POSTS_TABLE . ' p
						WHERE p.post_time > ' . $user->data['user_lastvisit'] . '
							AND ' . $m_approve_posts_fid_sql . '
							' . ((sizeof($ex_fid_ary)) ? ' AND ' . $db->sql_in_set('p.forum_id', $ex_fid_ary, true) : '') . "
						$sql_sort";
					$field = 'post_id';
				}
				else
				{
					$sql = 'SELECT t.topic_last_post_time, t.topic_id
						FROM ' . TOPICS_TABLE . ' t
						***WHERE $last_post_time_sql
							AND t.topic_moved_id = 0
							AND ' . $m_approve_topics_fid_sql . '
							' . ((sizeof($ex_fid_ary)) ? 'AND ' . $db->sql_in_set('t.forum_id', $ex_fid_ary, true) : '') . "
						$sql_sort";

					$field = 'topic_id';
				}
			break;
Измененные строки отмечены в коде звездочками ***
Результаты должны отображаться по ссылке http://kiosks.ru/forum/search_new.php?s ... tive_posts
Код, естественно, тут же выдал SQL-ошибку.
Может быть, уже кто-то разбирался с подобной задачей и сможет подсказать, как правильно построить запрос?

Отправлено спустя 22 минуты 55 секунд:
upd. Ошибку сама нашла и исправила. Но выпадающий список интервалов все-равно не выводится :(
UltimaThule
phpBB 1.4.1
Сообщения: 40
Стаж: 7 лет 7 месяцев

Re: Вывод новых сообщений за день (час, пять часов.)

Сообщение UltimaThule »

Уточню вопрос. Вдруг кто-то знает, как это сделать...

Как на странице Новых сообщений (search.php?search_id=newposts)
new_posts-8.jpg
вывести такой же выпадающий список интервалов времени, как в Активных темах (search.php?search_id=active_topics)?
actiive_thems-7.jpg
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Вчерашний борщ
phpBB 2.0.4
Сообщения: 416
Стаж: 8 лет 7 месяцев
Благодарил (а): 48 раз
Поблагодарили: 34 раза

Re: Вывод новых сообщений за день (час, пять часов.)

Сообщение Вчерашний борщ »

UltimaThule, есть расширение вывода по дате [3.1][beta] Find-posts-topics-by-date, я так считаю, что окно ввода даты лучше переместить в форму "Новые сообщения" + добавить листалку по датам. В общем, интегрировать со стандартными "новыми сообщениями". А по часам пока ничего не знаю. Ну и я не уверена, что это так нужно, видеть нарезку по часам, если по ссылке из списка новых уже переходили, то это видно. Более разумным кажется желание усовершенствовать вывод через возможности разбивки и отбора по форумам. А если нужно увидеть все новые и непрочитанные на главной - есть специальные другие расширения.
Аватара пользователя
LavIgor
Former team member
Сообщения: 3468
Стаж: 10 лет
Благодарил (а): 41 раз
Поблагодарили: 831 раз

Re: Вывод новых сообщений за день (час, пять часов.)

Сообщение LavIgor »

UltimaThule писал(а): Ошибку сама нашла и исправила.
Итоговый код как выглядит?
UltimaThule
phpBB 1.4.1
Сообщения: 40
Стаж: 7 лет 7 месяцев

Re: Вывод новых сообщений за день (час, пять часов.)

Сообщение UltimaThule »

Итоговый код:

Код: Выделить всё

case 'active_posts':
				$l_search_title = $user->lang['SEARCH_ACTIVE_POSTS'];
				// force sorting
				$show_results = (request_var('sr', 'topics') == 'posts') ? 'posts' : 'topics';
				$sort_key = 't';
				$sort_dir = 'd';
				$sort_days = request_var('st', 1);
				$sort_by_sql['t'] = ($show_results == 'posts') ? 'p.post_time' : 't.topic_last_post_time';
				$sql_sort = 'ORDER BY ' . $sort_by_sql[$sort_key] . (($sort_dir == 'a') ? ' ASC' : ' DESC');

				gen_sort_selects($limit_days, $sort_by_text, $sort_days, $sort_key, $sort_dir, $s_limit_days, $s_sort_key, $s_sort_dir, $u_sort_param);
				$s_sort_key = $s_sort_dir = '';
	
				$last_post_time_sql = ($sort_days) ? ' AND t.topic_last_post_time > ' . (time() - ($sort_days * 24 * 3600)) : '';
				
				if ($show_results == 'posts')
				{
					$sql = 'SELECT p.post_id
						FROM ' . POSTS_TABLE . ' p
						WHERE p.post_time > ' . $user->data['user_lastvisit'] . '
							AND ' . $m_approve_posts_fid_sql . '
							' . ((sizeof($ex_fid_ary)) ? ' AND ' . $db->sql_in_set('p.forum_id', $ex_fid_ary, true) : '') . "
						$sql_sort";
					$field = 'post_id';
				}
				else
				{
					$sql = 'SELECT t.topic_last_post_time, t.topic_id
						FROM ' . TOPICS_TABLE . " t
						WHERE t.topic_moved_id = 0
						$last_post_time_sql
							AND " . $m_approve_topics_fid_sql . '
							' . ((sizeof($ex_fid_ary)) ? 'AND ' . $db->sql_in_set('t.forum_id', $ex_fid_ary, true) : '') . '
						ORDER BY t.topic_last_post_time DESC';
					$field = 'topic_id';				
				}
			break;
Отправлено спустя 8 минут 10 секунд:
Выпадающий список удалось таки вывести в нужном месте. Оказалось, для этого достаточно было заменить строку

Код: Выделить всё

$s_sort_key = $s_sort_dir = $u_sort_param = $s_limit_days = '';
на

Код: Выделить всё

$s_sort_key = $s_sort_dir = '';
Теперь другая проблема. В файле navbar_header.html нужно вывести ссылку на /search.php?search_id=active_posts
Пока вставила ее в таком виде:

Код: Выделить всё

<li class="small-icon icon-new-posts"><a href="/forum/search.php?search_id=active_posts" role="menuitem">Новые сообщения за период</a></li>
Но это не комильфо, разумеется. Надо как-то ввести для новой менюхи переменные, аналогичные {U_SEARCH_NEW} и {L_SEARCH_NEW}

Код: Выделить всё

<li class="small-icon icon-search-new"><a href="{U_SEARCH_NEW}" role="menuitem">{L_SEARCH_NEW}</a></li>
Попыталась найти поиском, где определяются {U_SEARCH_NEW} и {L_SEARCH_NEW}, чтобы туда же добавить свои. Но поиск ничего не дал.
Подскажите, пожалуйста, где эти переменные прописаны?

Отправлено спустя 5 минут 14 секунд:
Вчерашний борщ писал(а): UltimaThule, есть расширение вывода по дате [3.1][beta] Find-posts-topics-by-date, я так считаю, что окно ввода даты лучше переместить в форму "Новые сообщения" + добавить листалку по датам. В общем, интегрировать со стандартными "новыми сообщениями". А по часам пока ничего не знаю. Ну и я не уверена, что это так нужно, видеть нарезку по часам, если по ссылке из списка новых уже переходили, то это видно. Более разумным кажется желание усовершенствовать вывод через возможности разбивки и отбора по форумам. А если нужно увидеть все новые и непрочитанные на главной - есть специальные другие расширения.
Спасибо за расширение. Буду смотреть его. Но на первый взгляд, это не совсем то, что мне нужно.
Насчет разбивки по форумам - это еще предстоит сделать. Оно тоже было на старом форуме, и пользователи просят сделать его и на новом. Но надо сначала закончить с выводом по интервалам.

Отправлено спустя 17 минут 29 секунд:
UltimaThule писал(а): Подскажите, пожалуйста, где эти переменные прописаны?
Нашла сама. Оказались в includes/functions.php

Вернуться в «Поддержка phpBB 3.1.x»