Перейти к контенту

Автоматическое скрытие URL


Рекомендуемые сообщения

Мод для создания скрытого текста на форуме есть (например, в зависимости от кол-ва сообщений или при авторизации), НО было бы здорого, если бы все ссылки (которые при "активном" написании форум отлично распознает) автоматически бы скрывались от незарегистрированных пользователей.

 

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

 

Желательный принцип действия: При размещении ссылки форум автоматически ее распознает и кроме тэгов делает ее скрытой от незарегистрированных пользователей. В иделе - тоже самое умеет делать с неактивными ссылками (обычно начинаются с _http:// ).

 

Наверное это можно реализовать установив мод скрытого текста и изменив систему обработки ссылок (как автоматическую, так и для ручного ввода тэгов) - т.е. чтобы хотя бы механически вставлялись не просто

 

[url]...[/url]

 

, а сразу с тэгами скрытия -

 

[HIDE][url]...[/url][/HIDE]

 

 

Но как это реализовать на практике - не знаю...

Буду благодарен за помощь и содействие.

Ссылка на комментарий
Поделиться на других сайтах

post_parser.php. ;)

А конкретнее? :D Тот, с позволения сказать, "алгоритм", который я предположил использовать возник на основе простоты. Может есть более граммотные способы реализации...

Ссылка на комментарий
Поделиться на других сайтах

Значит ставь для начала HIDE_MOD, настраивай его как тебе нужно, затем открываем post_parser.php, ищем // url tags, а дальше пишешь рег.выр. чтобы заменить конструкцию [uгl=*link*]*text*[/uгl] на [hide][uгl=*link*]*text*[/uгl][/hide]
Ссылка на комментарий
Поделиться на других сайтах

Алгоритм понятен. И точка исправления очевидна, НО - не очень получается править. Что-то не то пишу, видимо. Необходим совет...

 

Имеем исходную:

 

$txt = preg_replace( "#\[url\](\S+?)\[/url\]#ie"									   , "\$this->regex_build_url(array('html' => '\\1', 'show' => '\\1'))", $txt );
					$txt = preg_replace( "#\[url\s*=\s*\&quot\;\s*(\S+?)\s*\&quot\;\s*\](.*?)\[\/url\]#ie" , "\$this->regex_build_url(array('html' => '\\1', 'show' => '\\2'))", $txt );
					$txt = preg_replace( "#\[url\s*=\s*(\S+?)\s*\](.*?)\[\/url\]#ie"					   , "\$this->regex_build_url(array('html' => '\\1', 'show' => '\\2'))", $txt );

 

А еще есть PARSE POLL TAGS .

 

Видимо как-то не так тэг [HIDE] в эту конструкцию прописываю, потому что не работает... :D

Ссылка на комментарий
Поделиться на других сайтах

Ты смотри где заменяется на конструкцию <a href='*link*'>..., там и подставляй.
Ссылка на комментарий
Поделиться на других сайтах

Повторюсь немного... Алгоритм, что и где искать я представляю. Хромает практическая реализация. Помогите пожалуйста...
Ссылка на комментарий
Поделиться на других сайтах

я вообще хз какая у тебя версия, вот для 1.3

 

function unconvert()

находим (болдом выделено то, что у тебя может быть другое :D )

$txt = preg_replace( "#<a href=[\"'](http://|https://|ftp://|news://)?(\S+?)['\"].+?".">(.+?)</a>#" , "\\\3\[/url\]" , $txt );

меняем на:

в function convert() делаем тоже самое

Ссылка на комментарий
Поделиться на других сайтах

И напоминаю, не забудь установить HIDE_MOD. :D
Ссылка на комментарий
Поделиться на других сайтах

Song | Jax

 

Естественно я прописывал все по аналогии. Не просто так же помощи прошу :D При наличии в сообщении ссылки она вставляет тэги [HIDE] как надо, НО при этом как бы не распознает их как вызов "скрытого текста". Т.е. например если я создаю сообщение:

 

[HIDE]http://www.Link1.ru[/HIDE]

и...

http://www.Link2.ru

 

Т.е. когда в первой строке сам изначально прописываю тэги [hide], а вторую ссылку отдаю на обработку форуму, то в итоге получается, что первая ссылка НЕ активная, но зато скрыта, а вторая ссылка хоть формально и находится в тэгах [HIDE] (что видно при редактировании), активна, НО не скрыта.

 

Т.е. при банальной подставе в результат выдачи тэгов, они не обрабатываются как надо, а воспринимаются просто как код.

 

Можно исправить значение кнопки URL , то бы она автоматом добавляла и HIDE, но во-первых мало кто вообще этой кнопкой пользуется (практически все руками вводят тэги), а во-вторых это не решает проблемы скрытия ссылок при автоматическом их распознавании.

 

Вот для решения это проблемы я и прошу помощи...

 

Версия форума: 2.0.4

 

P.S. HIDE-MOD естественно установлен и сам по себе работает отлично ;)

Ссылка на комментарий
Поделиться на других сайтах

А надо писать с пробелами

[hide] URL [/hide]

тогда в первом случае у тебя будет обрабатываться ссылка, надеюсь...

 

Не понял про второй случай, ссылки сделал свои?

Ссылка на комментарий
Поделиться на других сайтах

Jax

 

И с пробелами пробывал, и по разному. Не обрабатываются внутри конструкции выдачи ссылок другие тэги. Вот строка из post_parser.php :

 

$txt = preg_replace( "#<a href=[\"'](http://|https://|ftp://|news://)?(\S+?)['\"].+?".">(.+?)</a>#" , "\[HIDE] [url=\\1\\2\]\\3\[/url\] [/HIDE]"  , $txt );

Один из случаев обработки ссылок (как я понимаю, там несколько "обработок" есть). В данном случае это с пробелами. Хотя роли они не играют.

 

При создании нового сообщения просто пишем ссылку с http (как обычно). В итоговом сообщении внешне это выглядитт просто как активная ссылка (как она обычно и выгляжит при распознавании). Если начнем редактировать сообщение, то код действительно содержит все [hide] как надо, но форум их просто не воспринимает (вернее воспринимает, что это тэги и не показывает их, но необходимые действия по скрытию не проводит). Как это еще описать, даже не знаю.. :D

Ссылка на комментарий
Поделиться на других сайтах

Я и прописывал это в unconvert:

 

// unconvert:

// Parses the HTML back into plain text

 

 

А где аналогичное в convert - не вижу, хоть глаз выколи...

Ссылка на комментарий
Поделиться на других сайтах

			// url tags
		// [url]http://www.index.com[/url]   [url=http://www.index.com]ibforums![/url]
		$txt = preg_replace( "#\[url\](\S+?)\[/url\]#ie"									   , "\$this->regex_build_url(array('html' => '\\1', 'show' => '\\1'))", $txt );
		$txt = preg_replace( "#\[url\s*=\s*\&quot\;\s*(\S+?)\s*\&quot\;\s*\](.*?)\[\/url\]#ie" , "\$this->regex_build_url(array('html' => '\\1', 'show' => '\\2'))", $txt );
		$txt = preg_replace( "#\[url\s*=\s*(\S+?)\s*\](.*?)\[\/url\]#ie"					   , "\$this->regex_build_url(array('html' => '\\1', 'show' => '\\2'))", $txt );

если не ошибаюсь...

Ссылка на комментарий
Поделиться на других сайтах

А по-моему нет... По крайней мере прописывание по аналогии ничего не дает кроме предупреждений...

 

// url tags
					// [url]http://www.index.com[/url]   [url=http://www.index.com]ibforums![/url]

					$txt = preg_replace( "#\[hide] [url\](\S+?)\[/url\] [/hide\]#ie"									   , "\$this->regex_build_url(array('html' => '\\1', 'show' => '\\1'))", $txt );
					$txt = preg_replace( "#\[hide] [url\s*=\s*\&quot\;\s*(\S+?)\s*\&quot\;\s*\](.*?)\[\/url\] [/hide\]#ie" , "\$this->regex_build_url(array('html' => '\\1', 'show' => '\\2'))", $txt );
					$txt = preg_replace( "#\[hide] [url\s*=\s*(\S+?)\s*\](.*?)\[\/url\] [/hide\]#ie"					   , "\$this->regex_build_url(array('html' => '\\1', 'show' => '\\2'))", $txt );

Ссылка на комментарий
Поделиться на других сайтах

?? Никаких иных идей нет у Общественности. Я уже по-моему все самые извращенные способы перепробывал - не получается... :D
Ссылка на комментарий
Поделиться на других сайтах

Есть одна...возможно глупая, поскольку сам не проверял

простая, как 2 пальца !!!

устанавливаешь HIDE мод...заходишь в фильтры цензуры и соответственно меняешь на [/HIDE]

Ссылка на комментарий
Поделиться на других сайтах

Jax

 

А оно уже сейчас так... При замене через post_parser Суть-то одна и таже. Но учитываются только "крайние" тэги и как раз после редактирования скрытый текст действительно работает :D

 

Т.е. еще один извращенный способ реализовать распознавание тэгов - это в post_parser после проверки отправлять все на еще одну проверку, как при редактировании.. ;)

Ссылка на комментарий
Поделиться на других сайтах

  • 3 месяца спустя...
  • 2 недели спустя...

ОффТоп:

 

Мне казалось, что совсем недавно (11 ноября) тут появлялся ответ о еще одном варианте. А теперь пропал куда-то. Странно. Даже испробывать не успел..

Ссылка на комментарий
Поделиться на других сайтах

Присоединиться к обсуждению

Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.

Гость
Ответить в этой теме...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Зарузка...
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.