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

Автоматическое скрытие 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 ноября) тут появлялся ответ о еще одном варианте. А теперь пропал куда-то. Странно. Даже испробывать не успел..

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

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

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

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

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

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

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

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

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

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

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

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