Переадресация на заданнюу страницу после создания темы.

Размещайте здесь предложения по работе на платной основе. Предпочтения отдаются подробным техническим заданиям, когда клиент чётко знает и может в деталях описать, что ему нужно.
cefp
Сообщения: 44
Зарегистрирован: 15.10.13 02:28

Переадресация на заданнюу страницу после создания темы.

Сообщение cefp »

Когда пользователь (или гость) не имеющий права размещать сообщения без одобрения создает тему, то на странице которая появляется на несколько секунд выводится текст: "Сообщение было успешно отправлено, но должно быть одобрено модератором до того, как будет отображено на сайте." Дальше происходит перенаправление пользователя на страницу со списком тем.
Если тему создал пользователь (или гость), имеющий право размещать сообщения без одобрения модератора, то выводится текст о том что сообщение размещено и пользователь перебрасывается на страницу с только что открытой им темой.
Нужно сделать мод, который позволял бы на некоторых форумах (и категориях) при создании новых тем любыми пользователями (и гостями) перебрасывать их на определенную страницу. Эту страницу я сделаю сам, она будет на форуме, есть её адрес, допустим page1.php. Одновременно нужно поменять текст, который выводится при создании тем в этих форума.
Если пользователь добавляет сообщения в существующих темах на этих форумах, то они должны обрабатываться так же как раньше.
Нашел строку, которая отвечает за вывод текста "Сообщение было успешно отправлено, но должно быть одобрено модератором до того, как будет отображено на сайте." в файле posting.php:

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

$message = ($mode == 'edit') ? $user->lang['POST_EDITED_MOD'] : $user->lang['POST_STORED_MOD'];
cefp
Сообщения: 44
Зарегистрирован: 15.10.13 02:28

Переадресация на заданнюу страницу после создания темы.

Сообщение cefp »

Напишу более развернуто.

Для некоторых форумов и категорий известны их id. Требуется разработать код, который работал бы именно с этими форумами и категориями. Есть две задачи для этих форумов:

1.
Нужно, чтобы при открытии темы в этих форумах любым пользователем, в том числе гостем, на странице редиректа выводился мой текст (несколько слов) вместо стандартного. Страница редиректа появляется после нажатия кнопки "отправить" на пару секунд. При ответе в существующих темах сайт должен работать как раньше (как работал без изменений).

2.
Нужно, чтобы при открытии темы в этих форумах любым пользователем, в том числе гостем, после страницы отображения страницы редиректа происходил редирект на страницу, адрес которой я мог бы задать сам. Эта страница будет располагаться на том же форума. Возможно это будет существующая тема а скорее всего сделаю новую. При ответе в существующих темах сайт должен работать как раньше (как работал без изменений).
Shredder
Администратор
Сообщения: 1069
Зарегистрирован: 22.08.13 09:05
Благодарил (а): 132 раза
Поблагодарили: 264 раза
Контактная информация:

Переадресация на заданнюу страницу после создания темы.

Сообщение Shredder »

Написал в личку, продублирую на всякий сюда:
Текст и страницу можно сделать в настройках каждого отдельного форума после "Правил форума"
Каков бюджет и условия работ (есть ли доступ по ftp или нужно модом, и т.п.)?
Мои моды и расширения для phpBB
Выполняю работы по phpBB3 на заказ. Пишите в личку или на почту.
Бесплатная поддержка - только в темах.
cefp
Сообщения: 44
Зарегистрирован: 15.10.13 02:28

Переадресация на заданнюу страницу после создания темы.

Сообщение cefp »

Ссылку на правила было бы удобно использовать. Если добавить ссылку в настройках правил форума, то ссылка появляется в списке тем форума и её нет на странице редиректа. Убрать ссылку из списка тем можно с помощью правки шаблона. Самое сложно сделать редирект с такой ссылкой. Вчера искал в интернете как это сделать. Думаю надо переделывать файл posting.php вот эта часть кода:

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

// The last parameter tells submit_post if search indexer has to be run
			$redirect_url = submit_post($mode, $post_data['post_subject'], $post_author_name, $post_data['topic_type'], $poll, $data, $update_message, ($update_message || $update_subject) ? true : false);

			if ($config['enable_post_confirm'] && !$user->data['is_registered'] && (isset($captcha) && $captcha->is_solved() === true) && ($mode == 'post' || $mode == 'reply' || $mode == 'quote'))
			{
				$captcha->reset();
			}

			// Check the permissions for post approval.
			// Moderators must go through post approval like ordinary users.
			if ((!$auth->acl_get('f_noapprove', $data['forum_id']) && empty($data['force_approved_state'])) || (isset($data['force_approved_state']) && !$data['force_approved_state']))
			{
				meta_refresh(10, $redirect_url);
				$message = ($mode == 'edit') ? $user->lang['POST_EDITED_MOD'] : $user->lang['POST_STORED_MOD'];
				$message .= (($user->data['user_id'] == ANONYMOUS) ? '' : ' '. $user->lang['POST_APPROVAL_NOTIFY']);
			}
			else
			{
				meta_refresh(3, $redirect_url);

				$message = ($mode == 'edit') ? 'POST_EDITED' : 'POST_STORED';
				$message = $user->lang[$message] . '<br /><br />' . sprintf($user->lang['VIEW_MESSAGE'], '<a href="' . $redirect_url . '">', '</a>');
			}

			$message .= '<br /><br />' . sprintf($user->lang['RETURN_FORUM'], '<a href="' . append_sid("{$phpbb_root_path}viewforum.$phpEx", 'f=' . $data['forum_id']) . '">', '</a>');
			trigger_error($message);
		}
Есть интересная строка

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

$message = ($mode == 'edit') ? $user->lang['POST_EDITED_MOD'] : $user->lang['POST_STORED_MOD'];
в ней

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

($mode == 'edit')
как я понял определяет, какой текст выдается при правке сообщения. Получается можно используя код

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

($mode == 'post')
определить какой текст выводить при создании темы.

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

$redirect_url
- похоже эта часть кода указывает адрес страницы, на которую происходит редирект. Как поменять ссылку не нарушив работу форума.

Shredder, написал в ЛС.
Shredder
Администратор
Сообщения: 1069
Зарегистрирован: 22.08.13 09:05
Благодарил (а): 132 раза
Поблагодарили: 264 раза
Контактная информация:

Переадресация на заданнюу страницу после создания темы.

Сообщение Shredder »

phpbb я занимаюсь 5 лет, поэтому где и что делать, мне хорошо известно. Просто не до рекрутинга было последние несколько дней, потому не отвечал.
Ссылку на правила было бы удобно использовать. Если добавить ссылку в настройках правил форума, то ссылка появляется в списке тем форума и её нет на странице редиректа. Убрать ссылку из списка тем можно с помощью правки шаблона.
Мешать функционал со стандартным не нужно, на "Правила" я указал только для того, чтобы дать представление о том, в каком месте (в админке) будут располагаться новые опции.

В общем, как я написал:
Текст и страницу можно сделать в настройках каждого отдельного форума после "Правил форума"
В настройках каждого раздела форума (в админке) добавляются два новых поля: одно для задания текста, второе для задания ссылки. Если они заполнены, то данные из этих полей затем используются при постинге вместо стандартного информационного сообщения "ваше сообщение успешно отправлено бла-бла-бла" и вместо сообщения "сообщение отправлено, но должно быть одобрено модератором". Всё верно? Или нужно что-то другое?
Мои моды и расширения для phpBB
Выполняю работы по phpBB3 на заказ. Пишите в личку или на почту.
Бесплатная поддержка - только в темах.
cefp
Сообщения: 44
Зарегистрирован: 15.10.13 02:28

Переадресация на заданнюу страницу после создания темы.

Сообщение cefp »

Да, всё верно. Постинг - открытие новой темы. После открытия новой темы свой текст и свой редирект. Постинг в виде правки, комментария, цитирования - без изменений (стандартные тексты и редирект).
Shredder
Администратор
Сообщения: 1069
Зарегистрирован: 22.08.13 09:05
Благодарил (а): 132 раза
Поблагодарили: 264 раза
Контактная информация:

Переадресация на заданнюу страницу после создания темы.

Сообщение Shredder »

Вариант с правилами форума.

В posting.php найти:

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

			$redirect_url = submit_post($mode, $post_data['post_subject'], $post_author_name, $post_data['topic_type'], $poll, $data, $update_message, ($update_message || $update_subject) ? true : false);
Добавить после:

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

			if ($mode == 'post' && $post_data['forum_rules_link'])
			{
				$redirect_url = $post_data['forum_rules_link'];
			}
Найти:

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

			$message .= '<br /><br />' . sprintf($user->lang['RETURN_FORUM'], '<a href="' . append_sid("{$phpbb_root_path}viewforum.$phpEx", 'f=' . $data['forum_id']) . '">', '</a>');
Добавить после:

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

			if ($mode == 'post' && $post_data['forum_rules'])
			{
				$message = generate_text_for_display($post_data['forum_rules'], $post_data['forum_rules_uid'], $post_data['forum_rules_bitfield'], $post_data['forum_rules_options']);
			}
Закомментировать "правила форума" в шаблонах.

Пользоваться так:
Опция "Ссылка на правила форума:" в настройках форума будет ссылкой для редиректа. Поддерживаются только внутренние ссылки на форум. Если нужна поддержка внешних ссылок, понадобятся дополнительные правки в других файлах движка.

Опция "Правила форума:" будет текстом, который показывается пользователю после размещения темы. Поддерживаются бб-коды. Задаётся вместе со ссылкой, например:

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

Тестирование мода

[url=http://www.ваш_домен.ru/viewforum.php?f=3]Вы будете перенаправлены на эту страницу[/url]
Мои моды и расширения для phpBB
Выполняю работы по phpBB3 на заказ. Пишите в личку или на почту.
Бесплатная поддержка - только в темах.
cefp
Сообщения: 44
Зарегистрирован: 15.10.13 02:28

Переадресация на заданнюу страницу после создания темы.

Сообщение cefp »

Спасибо, Shredder, код работает.
Ответить