Уважаемые пользователи!
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. Здесь можно попросить помощи в разработке у коллег.
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Мини [FAQ] по phpBB3.1.x/3.3.x | FAQ | Как задавать вопросы | Как устанавливать расширения

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
Аватара пользователя
Alecto
phpBB 3.0.12
Сообщения: 2857
Стаж: 14 лет 4 месяца
Откуда: Украина! Харьков
Благодарил (а): 68 раз
Поблагодарили: 241 раз

Посчитать темы всех авторов сообщений на странице темы

Сообщение Alecto »

Речь пойдет о расширении UserTopics, о той его части, которая строит ссылки на темы пользователей из минипрофиля на страницах тем.

Для этого используется событие core.viewtopic_modify_post_row

Следующая функция, строит ссылку для поиска тем пользователя из его минипрофиля на странице тем

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

	public function viewtopic_poster_topics($event)
	{
		$postrow = $event['post_row'];
		$poster_id = $event['poster_id'];
		$postrow = array_merge($postrow, array(
			'USER_TOPICS_MINIPROFILE_LINK'   => append_sid("{$this->phpbb_root_path}search.$this->php_ext", 'author_id=' . $poster_id . '&sr=topics&sf=firstpost'),
				));
		$event['post_row'] = $postrow;
	}
Нужно получить количество тем пользователя, чтобы обработать случае с отсутствием тем у пользователя.
Получать количество тем пользователя в этом событии - слишком накладно, потому как количество запросов возрастет до 10 и более в зависимости от настроек отображаемых на странице сообщений.

Можно ли получить количественный массив тем авторов сообщений на странице темы одним запросом?
Не будет ли такой запрос чрезмерно тяжелый или неоправданно тяжелый?

Если я правильно понимаю, то:
1 - нужно построить массив авторов сообщений страницы темы.
2 - этот массив каким-то образом передать в поисковый запрос в качестве условия
3 - получить массив количества тем пользователей.

Если такое можно сделать, какое событие лучше использовать?
В каком расширении можно посмотреть подобный пример генерации sql-запроса?
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 12451
Стаж: 12 лет 9 месяцев
Благодарил (а): 166 раз
Поблагодарили: 2479 раз

Re: Посчитать темы всех авторов сообщений на странице темы

Сообщение Татьяна5 »

Для запроса подходит core.viewtopic_get_post_data (чтобы изменить имеющийся запрос), а для вывода core.viewtopic_cache_guest_data, core.viewtopic_cache_user_data (чтобы изменить $user_cache_data) и core.viewtopic_modify_post_row (чтобы добавить переменную шаблона)

Вернуться в «Для разработчиков»