Смена типа сообщения в колонке "Последнее сообщение"

Проблемы с установкой или работой 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) | Как задавать вопросы | Как устанавливать расширения

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
Аватара пользователя
mike2003
phpBB 2.0.5
Сообщения: 452
Зарегистрирован: 18.03.2016 14:22
Благодарил (а): 27 раз
Поблагодарили: 8 раз

Re: Смена типа сообщения в колонке "Последнее сообщение"

Сообщение mike2003 » 04.05.2016 21:59

Пытаюсь вернуться и разобраться в теме.
Выводом главной страницы занимается forumlist_body.html? И туда надо как-то отправить данные вроде $row['topic_title']. Ведь html это просто шаблон? Значит надо знать соответствующий php?
А какой именно файл занимается заполнением переменных для forumlist_body.html?

Аватара пользователя
mike2003
phpBB 2.0.5
Сообщения: 452
Зарегистрирован: 18.03.2016 14:22
Благодарил (а): 27 раз
Поблагодарили: 8 раз

Re: Смена типа сообщения в колонке "Последнее сообщение"

Сообщение mike2003 » 05.05.2016 1:45

я так понял, что надо копаться в SQL запросах файла functions_display.php, но они совсем не похожи на ссылки выше

wordpress
phpBB 1.4.2
Сообщения: 52
Зарегистрирован: 27.04.2016 12:31
Благодарил (а): 8 раз

Re: Смена типа сообщения в колонке "Последнее сообщение"

Сообщение wordpress » 05.05.2016 10:11

у меня даже если заполнен - пусто (

Аватара пользователя
mike2003
phpBB 2.0.5
Сообщения: 452
Зарегистрирован: 18.03.2016 14:22
Благодарил (а): 27 раз
Поблагодарили: 8 раз

Re: Смена типа сообщения в колонке "Последнее сообщение"

Сообщение mike2003 » 05.05.2016 18:15

там опция появилась в настройках
--
народ, а если я просто добавлю еще один SQL запрос в цикле формирования в файле functions_display.php перед заданием переменной темы последнего сообщения на получение 1-ого топика с сортировкой по дате. как бы и получится последняя тема. это сильно перегрузит сервер??

Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 9300
Зарегистрирован: 08.08.2011 2:02
Благодарил (а): 164 раза
Поблагодарили: 2594 раза
Контактная информация:

Re: Смена типа сообщения в колонке "Последнее сообщение"

Сообщение Татьяна5 » 05.05.2016 18:23

Сильно. Запросы в цикле никто не выполняет
Лучше модифицировать тот запрос, который перед циклом

Аватара пользователя
mike2003
phpBB 2.0.5
Сообщения: 452
Зарегистрирован: 18.03.2016 14:22
Благодарил (а): 27 раз
Поблагодарили: 8 раз

Re: Смена типа сообщения в колонке "Последнее сообщение"

Сообщение mike2003 » 05.05.2016 18:49

да я б и сделал, если б знал как. нужна строчка текста и никто не скажет какая :cry:

Отправлено спустя 6 минут 54 секунды:
я вот сейчас взял кусок кода из расширения по выводу последних тем форума и прописал его перед назначением $last_post_subject, но блин! как сделать что б он брал текущий форум?

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

			if ($row['forum_password_last_post'] === '' && $auth->acl_get('f_read', $row['forum_id_last_post']))
			{
				$sql2 = 'SELECT t.*, p.post_id
					FROM ' . TOPICS_TABLE . ' AS t, ' . POSTS_TABLE . ' AS p, ' . FORUMS_TABLE . " AS f
					WHERE t.forum_id = f.forum_id
						AND p.post_id = t.topic_first_post_id
					ORDER BY t.topic_last_post_id DESC";
				$result2 = $db->sql_query_limit($sql2, 1);	
				$recent_topics2 = $db->sql_fetchrowset($result2);	
				$topic_title2 = $recent_topics2[0]['topic_title'];
				$last_post_subject = $topic_title2.'*'.censor_text($row['forum_last_post_subject']);

Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 9300
Зарегистрирован: 08.08.2011 2:02
Благодарил (а): 164 раза
Поблагодарили: 2594 раза
Контактная информация:

Re: Смена типа сообщения в колонке "Последнее сообщение"

Сообщение Татьяна5 » 05.05.2016 18:58

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

	/**
	* Event to modify the SQL query before the forum data is queried
	*
	* @event core.display_forums_modify_sql
	* @var	array	sql_ary		The SQL array to get the data of the forums
	* @since 3.1.0-a1
	*/
	$vars = array('sql_ary');
	extract($phpbb_dispatcher->trigger_event('core.display_forums_modify_sql', compact($vars)));

	$sql = $db->sql_build_query('SELECT', $sql_ary);
	$result = $db->sql_query($sql);

	$forum_tracking_info = $valid_categories = array();
	$branch_root_id = $root_data['forum_id'];

	$phpbb_content_visibility = $phpbb_container->get('content.visibility');

	while ($row = $db->sql_fetchrow($result))
	{
Событие core.display_forums_modify_sql, в параметрах есть массив с запросом. В этот массив можно добавить что угодно

Аватара пользователя
mike2003
phpBB 2.0.5
Сообщения: 452
Зарегистрирован: 18.03.2016 14:22
Благодарил (а): 27 раз
Поблагодарили: 8 раз

Re: Смена типа сообщения в колонке "Последнее сообщение"

Сообщение mike2003 » 05.05.2016 19:25

Вот пока так сделал, не знаю уж правильно ли
Изображение

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

				$sql2 = 'SELECT *
					FROM ' . TOPICS_TABLE . ' AS t ' . "
					WHERE t.forum_id = {$row['forum_id']}
					ORDER BY t.topic_last_post_id DESC";
				$result2 = $db->sql_query_limit($sql2, 1);	
				$recent_topics2 = $db->sql_fetchrowset($result2);	
				$topic_title2 = $recent_topics2[0]['topic_title'];
				if ($topic_title2 <> $row['forum_last_post_subject'])
				{
					$last_post_subject =($row['forum_last_post_subject'] ? censor_text($row['forum_last_post_subject']).' - ' : '').$topic_title2;
				}
				else
				{
					$last_post_subject =$row['forum_last_post_subject'];
				}
				$last_post_subject_truncated = truncate_string($last_post_subject, 30, 255, false, $user->lang['ELLIPSIS']);
Отправлено спустя 13 минут 39 секунд:
эх. все бы хорошо, но не показывает форумы второго уровня :(

Аватара пользователя
mike2003
phpBB 2.0.5
Сообщения: 452
Зарегистрирован: 18.03.2016 14:22
Благодарил (а): 27 раз
Поблагодарили: 8 раз

Re: Смена типа сообщения в колонке "Последнее сообщение"

Сообщение mike2003 » 06.05.2016 5:07

в файле functions_posting.php вроде бы нашел похожую функцию. На ее основе сделал такой код, определяющий по номеру поста название темы.
Изображение

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

			if ($row['forum_password_last_post'] === '' && $auth->acl_get('f_read', $row['forum_id_last_post']))
			{
				$sql2 = 'SELECT p.post_id, p.post_subject, t.topic_title
					FROM ' . POSTS_TABLE . ' p, ' . TOPICS_TABLE . " t
		 			WHERE p.post_id = {$row['forum_last_post_id']}
					AND p.topic_id = t.topic_id";
				$result2 = $db->sql_query($sql2);
				while ($row2 = $db->sql_fetchrow($result2))
				{
					$last_post_subject = ($row2['post_subject'] AND ($row2['post_subject'] <> $row2['topic_title'])) ? ($row2['post_subject'] .' - '. $row2['topic_title']) : $row2['topic_title'];
				}
				$db->sql_freeresult($result2);
				$last_post_subject_truncated = truncate_string($last_post_subject, 30, 255, false, $user->lang['ELLIPSIS']);
Отправлено спустя 1 минуту 2 секунды:
Для себя сделал расширенный вывод названия сообщения вместе с названием темы, а не на выбор.

Закрыто

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