Страница 2 из 2

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

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

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

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

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

Добавлено: 05.05.2016 10:11
wordpress
у меня даже если заполнен - пусто (

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

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

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

Добавлено: 05.05.2016 18:23
Татьяна5
Сильно. Запросы в цикле никто не выполняет
Лучше модифицировать тот запрос, который перед циклом

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

Добавлено: 05.05.2016 18:49
mike2003
да я б и сделал, если б знал как. нужна строчка текста и никто не скажет какая :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']);

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

Добавлено: 05.05.2016 18:58
Татьяна5

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

	/**
	* 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, в параметрах есть массив с запросом. В этот массив можно добавить что угодно

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

Добавлено: 05.05.2016 19:25
mike2003
Вот пока так сделал, не знаю уж правильно ли
Изображение

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

				$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 секунд:
эх. все бы хорошо, но не показывает форумы второго уровня :(

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

Добавлено: 06.05.2016 5:07
mike2003
в файле 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 секунды:
Для себя сделал расширенный вывод названия сообщения вместе с названием темы, а не на выбор.