hook_urlname : Преобразование ссылок в их имена

Автоматически преобразует внутренние ссылки в сообщениях форума в ссылки с именами соответствующих страниц. Поддерживает преобразование ссылок с ресурсов wiki.

Здесь вы можете скачать и получить поддержку по модам, созданным командой нашего сайта. Пожалуйста, не пишите и не задавайте вопросов, связанных с чужими разработками, используйте для этого форум ниже.
Аватара пользователя
c61
Разработчик модов
Сообщения: 249
Зарегистрирован: 24.08.13 16:46
Благодарил (а): 20 раз
Поблагодарили: 62 раза

hook_urlname : Преобразование ссылок в их имена

Сообщение c61 »

phpBB hook_urlname
v.0.1.8-20140316
copyright (c) 2014 c61 http://c61.no-ip.org <c61@yandex.ru>
license http://opensource.org/licenses/gpl-license.php GNU Public License


Если в сообщениях публикуются внутренние ссылки на форумы, темы, сообщения и профили пользователей без использования ББ-кода url с текстовой подсказкой, то часто не ясно, куда же они ведут. Такие внутренние ссылки автоматически преобразуются аналогично тэгу url, в результате ссылка (пример)

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

http://c61.no-ip.org/forum/viewtopic.php?f=11&t=91&p=199#p199
превратится в такой url

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

[url=http://c61.no-ip.org/forum/viewtopic.php?f=11&t=91&p=199#p199]viewtopic.php?f=11&t=91&p=199#p199[/url]
или html-код

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

<a href="http://c61.no-ip.org/forum/viewtopic.php?f=11&t=91&p=199#p199">viewtopic.php?f=11&t=91&p=199#p199</a>
Данный мод предоставляет возможность преобразовать в понятный вид ссылки на:
  • форум
  • тему
  • собщение
  • профиль пользователя
и добавит возможности их оформления. Кроме того, имеется возможность преобразования wiki-ссылок в имена соответствующих разделов, тем и т.п.

Функционально аналогичный мод "Simple Url To Link Name before posting" (см. тему на форуме автора, известного под никнеймом Поручик, или на форуме русской поддержки phpbb) делает почти то же самое, но обладает как преимуществами (непример, меньше потребление ресурсов, есть поддержка SEO модов), так и недостатками (например, в опубликованных до установки мода сообщениях ссылки не заменяются, нет выделений названий и ников пользователей, нет цветов ников, есть проблемы с темами/сообщениями в заголовки которых включены ББ-коды в квадратных скобках). Возможно, кому-то покажется проще использовать один файл для hook system, чем редактировать код phpBB. В предлагаемом моде были использованы некоторые идеи вышеуказанного аналога, спасибо автору !

Тестирование данного мода совместно с SEO Ultimate SEO URL проводилось на площадке Shredder'а. Спасибо за тестирование и участие в отладке !

ВНИМАНИЕ !!!
  • Мод совместим с модами, изменяющими внутренние ссылки: phpBB SEO Ultimate SEO URL, Simple SEO Mod для PHPBB3, но полное тестирование не завершено, возможны ошибки. Работы по устранению этого недостатка запланированы.
  • Если Вы намерены использовать wiki-ссылки, перед установкой мода необходимо применить патч для корректного отображения ссылок, содержащих русские буквы и специальные символы, примерно такой, как приведён ниже. Это мод Non-latin Symbols in URL с дополнениями, инструкция инже может отличаться от оригинала и вариантов, приведенных на других ресурсах по phpBB, а также могут отличаться зависимые от версии phpBB строки для поиска.
  • Мод устраняет фичи phpbb, связанные с корректным включением последнего символа (.,:!?) в ссылку
Патч для корректного отображения url с кириллицей, установка:

1) Открыть файл /forum/includes/functions.php и сохранить его в кодировке utf-8 без BOM.

2) В /forum/includes/functions.php найти

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

			$inline = ($mode == 'url') ? ')' : '';
и ЗАМЕНИТЬ на

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

			$inline = (($mode == 'url') ? ')' : '') . '"`){}«»\pS\p{Pc}\p{Pd}\p{Pe}\p{Pf}\p{Po}';
затем найти

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

			return "[a-z]$scheme*:/{2}(?:(?:[a-z0-9\-._~!$&'($inline*+,;=:@|]+|%[\dA-F]{2})+|[0-9.]+|\[[a-z0-9.]+:[a-z0-9.]+:[a-z0-9.:]+\])(?::\d*)?(?:/(?:[a-z0-9\-._~!$&'($inline*+,;=:@|]+|%[\dA-F]{2})*)*(?:\?(?:[a-z0-9\-._~!$&'($inline*+,;=:@/?|]+|%[\dA-F]{2})*)?(?:\#(?:[a-z0-9\-._~!$&'($inline*+,;=:@/?|]+|%[\dA-F]{2})*)?";
и ЗАМЕНИТЬ на

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

			return "[a-z]$scheme*:/{2}(?:(?:[\pLa-z0-9\-._~!$&'($inline*+,;=:@|]+|%[\dA-F]{2})+|[0-9.]+|\[[\pLa-z0-9.]+:[\pLa-z0-9.]+:[\pLa-z0-9.:]+\])(?::\d*)?(?:/(?:[\pLa-z0-9\-._~!$&'($inline*+,;=:@|]+|%[\dA-F]{2})*)*(?:\?(?:[\pLa-z0-9\-._~!$&'($inline*+,;=:@/?|]+|%[\dA-F]{2})*)?(?:\#(?:[\pLa-z0-9\-._~!$&'($inline*+,;=:@/?|]+|%[\dA-F]{2})*)?";
затем найти

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

			$inline = ($mode == 'www_url') ? ')' : '';
и ЗАМЕНИТЬ на

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

			$inline = (($mode == 'www_url') ? ')' : '') . '"`){}«»\pS\p{Pc}\p{Pd}\p{Pe}\p{Pf}\p{Po}';
затем найти

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

			return "www\.(?:[a-z0-9\-._~!$&'($inline*+,;=:@|]+|%[\dA-F]{2})+(?::\d*)?(?:/(?:[a-z0-9\-._~!$&'($inline*+,;=:@|]+|%[\dA-F]{2})*)*(?:\?(?:[a-z0-9\-._~!$&'($inline*+,;=:@/?|]+|%[\dA-F]{2})*)?(?:\#(?:[a-z0-9\-._~!$&'($inline*+,;=:@/?|]+|%[\dA-F]{2})*)?";
и ЗАМЕНИТЬ на

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

			return "www\.(?:[\pLa-z0-9\-._~!$&'($inline*+,;=:@|]+|%[\dA-F]{2})+(?::\d*)?(?:/(?:[\pLa-z0-9\-._~!$&'($inline*+,;=:@|]+|%[\dA-F]{2})*)*(?:\?(?:[\pLa-z0-9\-._~!$&'($inline*+,;=:@/?|]+|%[\dA-F]{2})*)?(?:\#(?:[\pLa-z0-9\-._~!$&'($inline*+,;=:@/?|]+|%[\dA-F]{2})*)?";
затем найти

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

			return "(?:[a-z0-9\-._~!$&'($inline*+,;=:@|]+|%[\dA-F]{2})*(?:/(?:[a-z0-9\-._~!$&'($inline*+,;=:@|]+|%[\dA-F]{2})*)*(?:\?(?:[a-z0-9\-._~!$&'($inline*+,;=:@/?|]+|%[\dA-F]{2})*)?(?:\#(?:[a-z0-9\-._~!$&'($inline*+,;=:@/?|]+|%[\dA-F]{2})*)?";
и ЗАМЕНИТЬ на

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

			return "(?:[\pLa-z0-9\-._~!$&'($inline*+,;=:@|]+|%[\dA-F]{2})*(?:/(?:[\pLa-z0-9\-._~!$&'($inline*+,;=:@|]+|%[\dA-F]{2})*)*(?:\?(?:[\pLa-z0-9\-._~!$&'($inline*+,;=:@/?|]+|%[\dA-F]{2})*)?(?:\#(?:[\pLa-z0-9\-._~!$&'($inline*+,;=:@/?|]+|%[\dA-F]{2})*)?";
3) В /forum/includes/functions_content.php найти

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

	$short_url = (strlen($url) > 55) ? substr($url, 0, 39) . ' ... ' . substr($url, -10) : $url;
и ЗАМЕНИТЬ на

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

	$short_url = (utf8_strlen($url) > 55) ? utf8_substr($url, 0, 39) . ' ... ' . utf8_substr($url, -10) : $url;
затем найти

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

		$magic_url_match[] = '#(^|[\n\t (>.])(' . preg_quote($server_url, '#') . ')/(' . get_preg_expression('relative_url_inline') . ')#ie';
и ЗАМЕНИТЬ на

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

		$magic_url_match[] = '#(^|[\n\t (\]>.])(' . preg_quote($server_url, '#') . ')/(' . get_preg_expression('relative_url_inline') . ')#ieu';
затем найти

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

		$magic_url_match[] = '#(^|[\n\t (>.])(' . get_preg_expression('url_inline') . ')#ie';
и ЗАМЕНИТЬ на

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

		$magic_url_match[] = '#(^|[\n\t (\]>.])(' . get_preg_expression('url_inline') . ')#ieu';
затем найти

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

		$magic_url_match[] = '#(^|[\n\t (>])(' . get_preg_expression('www_url_inline') . ')#ie';
и ЗАМЕНИТЬ на

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

		$magic_url_match[] = '#(^|[\n\t (\]>])(' . get_preg_expression('www_url_inline') . ')#ieu';
4) В /forum/includes/message_parser.php найти

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

		if (!preg_match('#^' . get_preg_expression('url') . '$#i', $in) && !preg_match('#^' . get_preg_expression('www_url') . '$#i', $in))
и ЗАМЕНИТЬ на

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

		if (!preg_match('#^' . get_preg_expression('url') . '$#iu', $in) && !preg_match('#^' . get_preg_expression('www_url') . '$#iu', $in))
затем найти

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

		if (!preg_match('#^' . get_preg_expression('url') . '$#i', $in) &&
			!preg_match('#^' . get_preg_expression('www_url') . '$#i', $in))
и ЗАМЕНИТЬ на

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

		if (!preg_match('#^' . get_preg_expression('url') . '$#iu', $in) &&
			!preg_match('#^' . get_preg_expression('www_url') . '$#iu', $in))
затем найти

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

		if (preg_match('#^' . get_preg_expression('url') . '$#i', $url) ||
			preg_match('#^' . get_preg_expression('www_url') . '$#i', $url) ||
			preg_match('#^' . preg_quote(generate_board_url(), '#') . get_preg_expression('relative_url') . '$#i', $url))
и ЗАМЕНИТЬ на

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

		if (preg_match('#^' . get_preg_expression('url') . '$#iu', $url) ||
			preg_match('#^' . get_preg_expression('www_url') . '$#iu', $url) ||
			preg_match('#^' . preg_quote(generate_board_url(), '#') . get_preg_expression('relative_url') . '$#iu', $url))
5) Очистить кэш

6) Установить STK (Support ToolKit for phpBB), войти в STK и выполнить пункт Средства администрирования->Репарсинг BBcode постов и ЛС, отметив "Репарсинг всех абсолютно BBCode:"

Установка мода:

1) При необходимости внести изменения в файл includes/hooks/hook_urlname.php по части
  • выдачи отладочной информации (только пользователям с правами Администратора); для отключения найдите

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

    	private $debug = true;
    и замените значение на false

    Отладочная информация выдаётся при включенной в config.php опции DEBUG внизу экрана (строка с всплывающей подсказкой с именем мода и номером версии) в формате

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

    hUN Time : 0.000s | 0/0 Queries | 0 Magic urls corr`d
    где Time - время выполнения мода;
    Queries - количество нормальных и кэшированных sql-запросов;
    Magic urls corr`d - количество скорректированных фич обработки magic url в phpBB.
    ...
    ВНИМАНИЕ !!! Из-за специфики hook system phpBB стандартная отладочная информация выдаётся без учёта времени выполнения хук-функций и количества выполненных в них sql-запросов
    ...
  • разрешения корректировок фич phpBB при обработке magic url; для отключения найдите

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

    	private $correct_phpbb_bugs = true;
    и замените значение на false
  • времени кэширования sql=запросов в секундах (0 - отключено), для изменения задайте требуемое число в строке

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

    	private $sql_cache_ttl = 0;
    и учтите, что при изменении сообщений/тем/формуов или имён пользователей информация будет обновлена только после истечения указанного времени кэширования; для немедленного обновления следует очистить кэш
  • всплывающей подсказки (время размещения и номер сообщения) названий тем, сообщений; для отключения найдите

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

    		$this->use_iurl_title['use'] = true;
    и замените значение на false
  • выделения названий форумов, тем, сообщений (по умлчанию включено, тэги strong, i); для отключения найдите

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

    		$this->use_iurl_strong['use'] = true;
    и замените значение на false
  • использования цвета ника пользователя; для отключения найдите

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

    		$this->use_user_colour = true;
    и замените значение на false
  • выделения ника пользователя (по умолчанию включено, тэг strong); для отключения найдите

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

    		$this->use_user_strong['use'] = true;
    и замените значение на false
  • обработки url ресурсов wiki и выделения разделов wiki (по умолчанию включено, тэг i); для отключения закомментируйте или удалите

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

    		{
    			$this->wiki_search = array(
    				'/>http(.*?)\:\/\/(\S+)\.community\.wikia\.com\/wiki\/(.*?)</isu',
    				'/>http(.*?)\:\/\/(\S+)\.wikipedia\.org\/wiki\/(.*?)</isu',
    				'/>http(.*?)\:\/\/(\S+)\.wikiquote\.org\/wiki\/(.*?)</isu',
    				'/>http(.*?)\:\/\/(\S+)\.wikibooks\.org\/wiki\/(.*?)</isu',
    				'/>http(.*?)\:\/\/(wiki)\.phpbb\.com\/(.*?)</isu',
    				'/>http(.*?)\:\/\/(wiki)\.wargaming\.net\/ru\/(.*?)</isu',
    				'/>http(.*?)\:\/\/(wiki)\.iteach\.ru\/index\.php\/(.*?)</isu',
    				'/>http(.*?)\:\/\/(wiki)\.debian\.org\/(.*?)</isu',
    				'/>http(.*?)\:\/\/(wiki)\.web\.ru\/wiki\/(.*?)</isu',
    				'/>http(.*?)\:\/\/(www\.)*lurkmore\.to\/(.*?)</isu',
    				'/>http(.*?)\:\/\/(www\.)*sportswiki\.ru\/(.*?)</isu',
    				'/>http(.*?)\:\/\/(www\.)*altlinux\.org\/(.*?)</isu',
    				'/>http(.*?)\:\/\/(\S+)\.ageofstars\.wikia\.com\/wiki\/(.*?)</isu',
    				'/>http(.*?)\:\/\/(\S+)\.althistory\.wikia\.com\/wiki\/(.*?)</isu',
    				'/>http(.*?)\:\/\/(\S+)\.coincollecting\.wikia\.com\/wiki\/(.*?)</isu',
    				'/>http(.*?)\:\/\/(\S+)\.cybernetics\.wikia\.com\/wiki\/(.*?)</isu',
    				'/>http(.*?)\:\/\/(\S+)\.math\.wikia\.com\/wiki\/(.*?)</isu',
    				'/>http(.*?)\:\/\/(\S+)\.morfey13\.wikia\.com\/wiki\/(.*?)</isu',
    				'/>http(.*?)\:\/\/(\S+)\.prikolchik\.wikia\.com\/wiki\/(.*?)</isu',
    				'/>http(.*?)\:\/\/(\S+)\.russianhistory\.wikia\.com\/wiki\/(.*?)</isu',
    				'/>http(.*?)\:\/\/(\S+)\.science\.wikia\.com\/wiki\/(.*?)</isu',
    				'/>http(.*?)\:\/\/(\S+)\.pages\.wikia\.com\/wiki\/(.*?)</isu',
    				'/>http(.*?)\:\/\/(\S+)\.tarna-ilu\.wikia\.com\/wiki\/(.*?)</isu',
    				'/>http(.*?)\:\/\/(www\.)*mind-control\.wikia\.com\/wiki\/(.*?)</isu',
    				'/>http(.*?)\:\/\/(www\.)*absurdopedia\.wikia\.com\/wiki\/(.*?)</isu',
    			);
    		}
    Вы можете добавить ссылки, см. http://ru.community.wikia.com/wiki/Спис ... ском_языке
  • обработки url SEO Ultimate SEO URL и Simple SEO (по умолчанию включено); если не используется ни один из SEO модов для отключения закомментируйте или удалите фрагменты кода

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

    			{
    			$this->sseo_search = array(
    				'p'	=>	'/>post(\d+)(.*?)\.html(.*?)#p(\d+)/isu',
    				'pt'	=>	'/>topic(\d+)(.*?)\.html(.*?)#p(\d+)/isu',
    				't'	=>	'/>topic(\d+)(.*?)\.html/isu',
    				'f'	=>	'/>forum(\d+)\.html/isu',
    				'u'	=>	'/>member(\d+)\.html/isu',
    			);
    		}
    и

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

    		{
    			$this->useo_search = array(
    				'p'	=>	'/>(.*?)-t(\d+)(.*?)\.html(.*?)#p(\d+)/isu',
    				't'	=>	'/>(.*?)-t(\d+)(.*?)\.html/isu',
    				'f'	=>	'/>(.*?)\.html/isu',
    				'f-f'	=>	'/>(.*?)-f(\d+)\.html/isu',
    				'u'	=>	'/>(.*?)-u(\d+)\.html/isu',
    			);
    		}
    однако, если используется Simple SEO, требуется оставить только первый фрагмент, а если используется SEO Ultimate SEO URL, требуется оставить оба фрагмента
2) Загрузить includes/hooks/hook_urlname.php в includes/hooks/

3) Очистить кэш.



ВНИМАНИЕ !!! Просьба сообщать о результатах после установки мода на конференции, где установлены SEO-моды. При обнаружении ошибок прошу давать ссылку на конференцию и тестовый вход, это поможет в работе над этим модом.

Примеры ссылок можно посмотреть на моей тестовой площадке в теме мода тынц.

P.S. Обратите внимание: используется хук, следовательно, все внутренние ссылки в ранее опубликованных сообщениях будут преобразованы как надо. Однако, это не относится к wiki url с кириллицей, да и репарсинг ББ-кодов при помощи STK может не помочь... Тем не менее, wiki url с кириллицей гарантированно будут корректно обработаны в сообщениях, размещаемых после применения вышеуказанного патча и установки мода.

Скачать:
hook_urlname_0_1_8.zip
(13.36 КБ) 1150 скачиваний
hook_urlname_0_1_8.zip
(13.36 КБ) 1150 скачиваний
Скачать предыдущую версию:
hook_urlname_0_1_7.zip
(13.34 КБ) 1145 скачиваний
hook_urlname_0_1_7.zip
(13.34 КБ) 1145 скачиваний
hook_urlname_0_1_6.zip
(13.34 КБ) 1137 скачиваний
hook_urlname_0_1_6.zip
(13.34 КБ) 1137 скачиваний
hook_urlname_0_1_5.zip
(12.99 КБ) 1140 скачиваний
hook_urlname_0_1_5.zip
(12.99 КБ) 1140 скачиваний
hook_urlname_0_1_4.zip
(12.96 КБ) 1127 скачиваний
hook_urlname_0_1_4.zip
(12.96 КБ) 1127 скачиваний
hook_urlname_0_0_9.zip
(10.27 КБ) 1228 скачиваний
hook_urlname_0_0_9.zip
(10.27 КБ) 1228 скачиваний
hook_urlname_0_0_8.zip
(10.22 КБ) 1219 скачиваний
hook_urlname_0_0_8.zip
(10.22 КБ) 1219 скачиваний
hook_urlname_0_0_7.zip
(9.28 КБ) 1285 скачиваний
hook_urlname_0_0_7.zip
(9.28 КБ) 1285 скачиваний
hook_urlname_0_0_6.zip
(9.28 КБ) 1311 скачиваний
hook_urlname_0_0_6.zip
(9.28 КБ) 1311 скачиваний
Shredder
Администратор
Сообщения: 1069
Зарегистрирован: 22.08.13 09:05
Благодарил (а): 132 раза
Поблагодарили: 264 раза
Контактная информация:

hook_urlname : Преобразование ссылок в их имена

Сообщение Shredder »

c61 гений :D

Добавлено спустя 4 часа 3 секунды:
Нашёл лаг, и вроде бы только на этом форуме. На тестовом такого нет. Если в сообщении имеются две ссылки на одну и ту же тему, но в одной из ссылок указан ID сообщения (т.е. прямая ссылка на сообщение), то ссылка на сообщение превращается в пустоту. Пример:

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

http://www.phpbb-work.ru/hook-url-to-name-t50.html
http://www.phpbb-work.ru/hook-url-to-name-t50.html <-- ссылка обрабатывается нормально.

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

http://www.phpbb-work.ru/hook-url-to-name-t50.html#p283
http://www.phpbb-work.ru/hook-url-to-name-t50.html#p283 <-- тут тоже должна быть ссылка, но она пропала, превратилась в пустоту. По факту она никуда не делась: при редактировании сообщения ссылка на месте, но при просмотре её уже нет.

Что это? Конфликт с каким-то из говномодов?
Можно что-нибудь сделать?

Добавлено спустя 22 минуты 37 секунд:
db_view.png
Судя по всему, конфликт вызывается убранным заголовком сообщений, из-за чего вот эта часть кода в хуке:

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

$replace = '>'.censor_text($posts[$post_id]['post_subject']).'<';
выдаёт пустой результат.

Применил для себя следующее исправление - перед указанным куском кода добавил:

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

									if (empty($posts[$post_id]['post_subject']))
									{
										$posts[$post_id]['post_subject'] = $topics[$topic_id]['topic_title'];
									}
Вроде полёт нормальный. :)
Мои моды и расширения для phpBB
Выполняю работы по phpBB3 на заказ. Пишите в личку или на почту.
Бесплатная поддержка - только в темах.
Аватара пользователя
c61
Разработчик модов
Сообщения: 249
Зарегистрирован: 24.08.13 16:46
Благодарил (а): 20 раз
Поблагодарили: 62 раза

hook_urlname : Преобразование ссылок в их имена

Сообщение c61 »

Shredder писал(а): Если в сообщении имеются две ссылки на одну и ту же тему, но в одной из ссылок указан ID сообщения (т.е. прямая ссылка на сообщение), то ссылка на сообщение превращается в пустоту.
Понял, попробую исправить... Это из-за попытки кэширования в хуке.
Shredder писал(а):Применил для себя следующее исправление - перед указанным куском кода добавил:
Код проверки на пустоту заголовка сообщения жил в неправильном месте, перекинул куда надо, спасибо ! Сегодня выложу исправленную версию...

Да, название поменял как ты предлагал, так намного лучше ! Предлагаю "hook_urlname : Преобразование ссылок в их имена", отличие только в добавке "их"))

Добавлено спустя 1 час 55 минут 14 секунд:
Выпущена версия 0.0.7. Изменения:
  • устранение ошибочек, обнаруженных Shredder'ом
  • исправлена ошибочка для SEO если после .html присутствует sid (обратите внимание: изменены sseo_search и useo_search, а также код поиска)
  • изменение названия мода
Добавлено спустя 8 часов 31 минуту 59 секунд:
0.0.8. Изменения:
  • исключено выделение ключевых слов viewtopic, post, topic для SEO и др. (hilit=), при котором ссылка не преобразовывалась, например

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

    http://c61.no-ip.org/forum/viewtopic.php?f=11&t=91&hilit=viewtopic
    спасибо sweetah !
  • исключена возможная подмена имени ссылки в тэге url, например

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

    [url=http://yandex.ru]viewtopic?p=123[/url]
Добавлено спустя 13 часов 42 минуты 44 секунды:
Выпущена версия 0.0.9. Изменения:
  • отремонтированы wiki url, сломанные в версии 0.0.8
Аватара пользователя
c61
Разработчик модов
Сообщения: 249
Зарегистрирован: 24.08.13 16:46
Благодарил (а): 20 раз
Поблагодарили: 62 раза

hook_urlname : Преобразование ссылок в их имена

Сообщение c61 »

Выпущены новые версии, история:

0.0.A. Изменения:
  • обработан hilit для viewforum и memberlist
0.1.2. Изменения:
  • внедрен класс URLNAME
  • значительно ускорена работа алгоритмов
  • добавлена возможность получения отладочной информации о времени выполнения и количестве sql-запросов
  • добавлено управление кэшированием sql-запросов
0.1.4. Изменения:
  • дополнен патч для корректных ссылок на кириллице и со спецсимволами
  • добалено исправление фич phpBB при обработке magic url
0.1.5. Изменения:
  • добалено исправление фич phpBB при обработке magic url по последнему символу ?
0.1.6. Изменения:
  • расширен список wiki url
Shredder
Администратор
Сообщения: 1069
Зарегистрирован: 22.08.13 09:05
Благодарил (а): 132 раза
Поблагодарили: 264 раза
Контактная информация:

hook_urlname : Преобразование ссылок в их имена

Сообщение Shredder »

В патче для русских ссылок - ошибки:
Пункт 2 - в первой и третьей правке для functions.php встречается последовательность \{pPo}. Может, должно быть \p{Po} ?
Пункт 3 - в поиске и замене (первая правка) для functions_content наличествует такой код (часть строки):

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

5[b]5)[/b]
Опечатка?

Пункт 4 - вторая правка для message_parser ошибочная. Мне кажется, что в замене должно стоять:

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

		if (!preg_match('#^' . get_preg_expression('url') . '$#iu', $in) &&
			!preg_match('#^' . get_preg_expression('www_url') . '$#iu', $in))
Мои моды и расширения для phpBB
Выполняю работы по phpBB3 на заказ. Пишите в личку или на почту.
Бесплатная поддержка - только в темах.
Аватара пользователя
c61
Разработчик модов
Сообщения: 249
Зарегистрирован: 24.08.13 16:46
Благодарил (а): 20 раз
Поблагодарили: 62 раза

hook_urlname : Преобразование ссылок в их имена

Сообщение c61 »

Shredder писал(а):Пункт 2 - в первой и третьей правке для functions.php встречается последовательность \{pPo}. Может, должно быть \p{Po} ?
Ага, конечно \p{Po}. Но функция жуёт и так почему-то)
Пункт 3 - в поиске и замене (первая правка) для functions_content наличествует такой код (часть строки):
thnks, должно быть (strlen($url) > 55)
Shredder писал(а):Пункт 4 - вторая правка для message_parser
Да, это copy-paste))

См. v.0.1.7. Изменения:
  • исправление ошибок в патче
Добавлено спустя 16 часов 39 минут 6 секунд:
См. v.0.1.8. Изменения:
  • очередное исправление ошибок в патче
Надеюсь, последнее))

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

hook_urlname : Преобразование ссылок в их имена

Сообщение Shredder »

Такое предложение: чтобы не менять каждый раз настройки после обновления хука - хук можно сделать с админкой и установочным скриптом (или просто SQL). Правки файлов для этого не понадобятся. Конечно, это требует времени, понимаю...
Сам я кроме наклонного шрифта в хуке никогда ничего не меняю, а менять эту фигню мне не трудно, так что предложение, скорее, ради других пользователей и ради удобства управления модом. :)
Мои моды и расширения для phpBB
Выполняю работы по phpBB3 на заказ. Пишите в личку или на почту.
Бесплатная поддержка - только в темах.
Аватара пользователя
c61
Разработчик модов
Сообщения: 249
Зарегистрирован: 24.08.13 16:46
Благодарил (а): 20 раз
Поблагодарили: 62 раза

hook_urlname : Преобразование ссылок в их имена

Сообщение c61 »

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

hook_urlname : Преобразование ссылок в их имена

Сообщение Shredder »

Заметил, что на страницах поиска ссылки не преобразовываются.
Хотя с поиском там вообще что-то странное - иногда ссылки даже не активны. Возможно, они просто "обрезаются" и от хука это и не зависит.
Мои моды и расширения для phpBB
Выполняю работы по phpBB3 на заказ. Пишите в личку или на почту.
Бесплатная поддержка - только в темах.
Аватара пользователя
c61
Разработчик модов
Сообщения: 249
Зарегистрирован: 24.08.13 16:46
Благодарил (а): 20 раз
Поблагодарили: 62 раза

hook_urlname : Преобразование ссылок в их имена

Сообщение c61 »

Вроде как хук не обрабатывает поиск, если мне склероз не изменяет... Да, в phpbb в результатах поиска со ссылками не всё как надо, поэтому наверно их и не стоит обрабатывать.
Аватара пользователя
DeathMan
Сообщения: 4
Зарегистрирован: 03.12.13 20:08
Откуда: Курчатов
Благодарил (а): 1 раз
Контактная информация:

hook_urlname : Преобразование ссылок в их имена

Сообщение DeathMan »

Подскажите, а последняя версия данного расширения уже с "Патчем для корректного отображения url с кириллицей" или это актуально при условии что сайт находится в РФ домене ?
Shredder
Администратор
Сообщения: 1069
Зарегистрирован: 22.08.13 09:05
Благодарил (а): 132 раза
Поблагодарили: 264 раза
Контактная информация:

hook_urlname : Преобразование ссылок в их имена

Сообщение Shredder »

DeathMan писал(а):последняя версия данного расширения
В этом форуме расположены моды, а не расширения. Но т.к. это хук, а не мод, то патча в нём не может быть в принципе. Актуально для любых доменов, не только РФ.
Мои моды и расширения для phpBB
Выполняю работы по phpBB3 на заказ. Пишите в личку или на почту.
Бесплатная поддержка - только в темах.
Аватара пользователя
apollion
Сообщения: 75
Зарегистрирован: 21.10.15 18:13
Откуда: Россия
Благодарил (а): 14 раз
Поблагодарили: 8 раз
Контактная информация:

hook_urlname : Преобразование ссылок в их имена

Сообщение apollion »

Не пойму. Это хук дружит с модом от Поручика или будут конфликты?

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

hook_urlname : Преобразование ссылок в их имена

Сообщение Shredder »

Мод и хук работают по разному принципу, хук полностью замещает мод, держать их вместе нет необходимости.

Может. Делает.
Мои моды и расширения для phpBB
Выполняю работы по phpBB3 на заказ. Пишите в личку или на почту.
Бесплатная поддержка - только в темах.
Аватара пользователя
apollion
Сообщения: 75
Зарегистрирован: 21.10.15 18:13
Откуда: Россия
Благодарил (а): 14 раз
Поблагодарили: 8 раз
Контактная информация:

hook_urlname : Преобразование ссылок в их имена

Сообщение apollion »

Спасибо.
Ответить