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

Как убрать из урл топика "f=XX" (сделать как тут)?

Сообщение #1Добавлено: 19.03.2015, 04:20
ZeldoR
Всем привет!

Искал, но не нашел такого мода/инструкции на Вашем ресурсе. Собственно вопрос, как реализовать такое же формирование урл топика как на этом форуме (без указания раздела)?

Сообщение #2Добавлено: 19.03.2015, 23:09
VEG
Тут используется нехороший хак для этого, поэтому в phpBBex и не включено.

Если хотите себе такое же, в includes.php нужно найти:
Код: Выделить всё
function append_sid($url, $params = false, $is_amp = true, $session_id = false)

Заменить на:
Код: Выделить всё
function append_sid_original($url, $params = false, $is_amp = true, $session_id = false)

После окончания этой функции (перед function generate_board_url($without_script_path = false)) добавить:
Код: Выделить всё
function clean_viewtopic_url($url)
{
   return preg_replace('#(\bf=\d+&(amp;)?|&(amp;)?f=\d+$)#', '', $url);
}

function append_sid($url, $params = false, $is_amp = true, $session_id = false)
{
   global $phpbb_root_path, $phpEx, $config;
   $url = append_sid_original($url, $params, $is_amp, $session_id);
   if (strpos($url, "{$phpbb_root_path}viewtopic.$phpEx") === 0)
   {
      return clean_viewtopic_url($url);
   }
   return $url;
}

Сообщение #3Добавлено: 20.03.2015, 03:14
ZeldoR
Спасибо большое!

А чем он "нехороший"? По моему без него гораздо хуже. Косяком с дублированием урл (у вас на форуме) вроде не обнаружил, или есть такое все же?

Сообщение #4Добавлено: 20.03.2015, 09:34
VEG
ZeldoR, нехороший с точки зрения кода. Вообще архитектура у phpBB не ахти, приходится с этим мириться.

Сообщение #5Добавлено: 25.03.2015, 11:02
Dr.Death
VEG, еще у canonical во viewtopic надо убрать же

Сообщение #6Добавлено: 25.03.2015, 16:06
Sumanai
Не убрать, а исправить.

Сообщение #7Добавлено: 25.03.2015, 18:05
Dr.Death
если параметр f у canonical, то убрать, если сам canonical, то исправить

Сообщение #8Добавлено: 25.03.2015, 18:07
VEG
Dr.Death, так код приведённый же проверяет все ссылки и во всех ссылках удаляет этот параметр. В canonical должно тоже исчезнуть.

Сообщение #9Добавлено: 25.03.2015, 18:11
Dr.Death
нет, там без сида, просто написано

Сообщение #10Добавлено: 27.03.2015, 14:40
VEG
Хм, и правда, я тут тоже вносил правки. Из diff файла viewtopic.php:
Код: Выделить всё
-       'U_CANONICAL'                   => generate_board_url() . "/viewtopic.$phpEx?f=$forum_id&t=$topic_id" . (($start) ? "&start=$start" : ''),
-       'U_TOPIC'                               => "{$server_path}viewtopic.$phpEx?f=$forum_id&t=$topic_id",
+       'U_CANONICAL'                   => clean_viewtopic_url(generate_board_url() . "/viewtopic.$phpEx?f=$forum_id&t=$topic_id" . (($start) ? "&start=$start" : '')),
+       'U_TOPIC'                               => clean_viewtopic_url("{$server_path}viewtopic.$phpEx?f=$forum_id&t=$topic_id"),

Сообщение #11Добавлено: 27.03.2015, 19:30
Dr.Death
хы.. U_TOPIC то проглядел...

Сообщение #12Добавлено: 29.07.2023, 15:09
VEG
В репозитории проекта доступно аналогичное изменение, но без описанного выше хака 10-летней давности (который за годы разросся до
viewtopic_no_f.diff
(7.72 КБ) Скачиваний: 1428
внушительных размеров). То есть, ссылки теперь сразу генерируются без ненужного параметра f. Войдёт в следующую версию phpBBex, которая выйдет ближе к концу года.