Страница 1 из 6

View all posts in Topic

Добавлено: 17 авг 2014, 15:29
HAMMER663
Решил попробовать самостоятельно конвертировать мод в расширение.
Не пойму какие нужно выбрать собития ядра, чтобы у меня передавался в ссылку /viewtopic.php?f=2&t=1&page=all forum_id и topic_id.
В слушателе пробовал разные, но эффекта мало

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

	static public function getSubscribedEvents()
	{
		return array(
			'core.viewtopic_modify_post_row'	=>	'view_all_post',
			'core.viewtopic_modify_post_data'	=>	'view_all_post',
			'core.viewtopic_modify_page_title'	=>	'view_all_post',
		);
	}
И далее сама функция

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

	public function view_all_post($event)
	{
		$total_posts = $event['total_posts'];
		$forum_id = $event['forum_id'];
		$topic_id = $event['topic_id'];
	
		$page = $this->request->variable('page', '');	

		$max_total_posts = 200;
		if ($total_posts <= $max_total_posts)
		if ($page == 'all')
		{
			$this->config['posts_per_page'] = $total_posts;
			$event['start'] = 0;
		}

		$this->template->assign_vars(array(
			'U_TOPIC_ALL'			=> append_sid("{$this->phpbb_root_path}viewtopic.$this->php_ext?f=$forum_id&t=$topic_id&page=all"),
			'S_TOPIC_ALL'			=> ($total_posts <= $max_total_posts ) ? true : false 	
		));	
	}
В общем не передается на данный момент только topic_id. Далее если вбить ссылку напрямую /viewtopic.php?f=2&t=1&page=all, то все сообщения не отображаются на одной странице почему-то. Хотя код работал на 3.0

Ссылка на репозиторий https://github.com/HAMMER663/ViewAllPostsInTopic

View all posts in Topic

Добавлено: 17 авг 2014, 16:25
Татьяна5
HAMMER663 писал(а):В общем не передается на данный момент только topic_id
Если не ошибаюсь, то с записью
HAMMER663 писал(а):

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

   static public function getSubscribedEvents()
   {
      return array(
         'core.viewtopic_modify_post_row'   =>   'view_all_post',
         'core.viewtopic_modify_post_data'   =>   'view_all_post',
         'core.viewtopic_modify_page_title'   =>   'view_all_post',
      );
   }
функция view_all_post назначится на последнее событие core.viewtopic_modify_page_title (и только на него)
А в том событии

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

$vars = array('page_title', 'topic_data', 'forum_id', 'start');
extract($phpbb_dispatcher->trigger_event('core.viewtopic_modify_page_title', compact($vars)));
переменной topic_id нет.
Там есть массив topic_data, из которого можно взять topic_id

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

$topic_data = $event['topic_data'];
$topic_id = $topic_data['topic_id'];

View all posts in Topic

Добавлено: 17 авг 2014, 16:39
HAMMER663
Да. Самым тяжелым оказалось подобрать необходимые события :D
С topic_id получилось, а вот вывод всех постов на странице так и не работает.
Татьяна5 писал(а):Только core.viewtopic_modify_post_row подходит
Его и оставил. Вообще я думал, что из всех событий я смогу извлечь необходимые мне переменные. И переменная total_posts как раз все равно у меня была определена

View all posts in Topic

Добавлено: 17 авг 2014, 16:49
Татьяна5
HAMMER663 писал(а):а вот вывод всех постов на странице так и не работает
Ошибка может быть в другом файле расширения или в другом месте слушателя (не в функции)

View all posts in Topic

Добавлено: 17 авг 2014, 16:50
Татьяна5
Само расширение включено через админку? (Без включения ничего работать не должно)

View all posts in Topic

Добавлено: 17 авг 2014, 16:56
HAMMER663
Расширение включено. Никаких ошибок дебаг не показывает.

View all posts in Topic

Добавлено: 17 авг 2014, 16:57
HAMMER663
Да и в слушателе кроме объявления конструктора ничего и нет... Может что еще нужно?

View all posts in Topic

Добавлено: 17 авг 2014, 17:02
Татьяна5
Дебаг иногда и на грубые ошибки в расширениях молчит (я в своих сталкивалась с таким)
Можно trigger_error'ом (иногда выходит) проверить что какое значение возвращает, и возвращает ли вообще

View all posts in Topic

Добавлено: 17 авг 2014, 17:03
Татьяна5
HAMMER663 писал(а):в слушателе
public function __construct
static public function getSubscribedEvents()
и функции от расширения

View all posts in Topic

Добавлено: 17 авг 2014, 17:09
HAMMER663
Все переменные есть и эти функции тоже