Заявка на плагин: внешние ссылки в новом окне

Все доброго дня.
Ну просто кровь из носу необходим плагин, который бы добавлял такой функционал:
— внутренние ссылки — как есть
— внешние ссылки (определяем по домену) — добавляем target="_blank"

Зачем это надо? Да просто для того чтобы бедные юзеры не тыкали каждый раз кнопку Back, чтобы вернуться на ресурс.
Как по мне, намного удобнее просто закрыть окно и оказаться на сайте, с которого куда-то перешел, чем закрыть окно и забыть урл указанного сайта.

Кроме того, все мы пользуемся сервисами типа imagebam для хранения и линковки фото. В этом случае тоже ну очень удобно, когда такая ссылка открывается в новом окне.

Прошу поддержать предложение тех, кому такой функционал тожн необходим.

Спасибо.

P.S.: Да, я знаю, что на Хабре этого нет и все в порядке. Но не забывайте, что айтишник — не простой обыватель, мы умеем нажимать кнопки правильно, а большинство — нет :)

19 комментариев

avatar
Подправьте название топика.
avatar
Спасибо, поправил.
avatar
в /engine/modules/text/Text.class.php заменить функцию MakeUrlNoIndex на эту:
public function MakeUrlNoIndex($sText) {
		return preg_replace('#<a([^<]*)href=["\']http://(?![a-z0-9.-]*'.quotemeta($_SERVER['HTTP_HOST']).'\/)([^"\']*)["\']([^<]*)>(.*)</a>#ismU','<a$1href="http://$2"$3 rel="nofollow" target="_blank">$4</a>', $sText);
	}
  • xyz
  • 0
avatar
Нет такой. Просто добавить?
avatar
В /engine/modules/text/Text.class.php
132	        public function Parser($sText) {
133	                $sResult=$this->FlashParamParser($sText);               
134	                $sResult=$this->JevixParser($sResult); 
135	                $sResult=$this->VideoParser($sResult); 
136	                $sResult=$this->CodeSourceParser($sResult);
137	                return $sResult;
138	        }

добавить вызов перед return
$sResult=$this->MakeUrlNoIndex($sResult);

И функцию прописать в этом же файле
avatar
Супер, спасибо. Все работает.
avatar
Распишите и всем остальным, раз уж вам помогли =)
avatar
Так написано же все что нужно выше :)
Какую функцию куда вставить и как ее вызывать.
avatar
Единственное из топика livestreet.ru/blog/wishlist/5427.html#comment79787 уберите rel=«nofollow» так как если он там присутствует то в коде получается 2 раза этот тег повторяется и получается rel=«nofollow» rel=«nofollow».
avatar
А вообще большое спасибо xyz очень полезный хак..:)
avatar
В /engine/modules/text/Text.class.php
перед
return $sResult;

вставляю
$sResult=$this->MakeUrlNoIndex($sResult);


Затем сразу же после закрытия этой функции вставляю следующую, как Вы и описали:
public function MakeUrlNoIndex($sText) {
                return preg_replace('#<a([^<]*)href=["\']http://(?![a-z0-9.-]*'.quotemeta($_SERVER['HTTP_HOST']).'\/)([^"\']*)["\']([^<]*)>(.*)</a>#ismU','<a$1href="http://$2"$3 rel="nofollow" target="_blank">$4</a>', $sText);
        }


Никаких изменений. Не хотят ссылки открываться в blank'e.
Что может подкрутить?
avatar
откройте редактирование топика и пересохраните его
avatar
Thanks ;)
avatar
Попробовал! Пересохранил. Не помогло. (((
avatar
А как бы разделить ссылки на внутренние и внешние.
Внешние открывать в новом окне, а внутренние — в том же окне.
avatar
Попробовал сделать так, у себя на сайте, все работает, получается, что внутренние ссылки открываются в старом окне, а внешние ссылки открываются в новом окно. Скажите, а что нужно изменить в данном коде, чтобы все ссылки открывались в новом окне. Просто у меня на сайте сделан редирект на другие сайты с помощью рнр файла(чтобы скрыть реферальную ссылку), вот такой код файла
<?php $URL="http://www.example.com/?Click=24343";
header("Location:$URL");
exit();
?>

Или может можно, что-то добавить в этот код, чтобы страница открывалась в новом окне? Честно сказать я не очень силен в рнр, пробую методом тыка, ничего не получается
avatar
Заодно, надо чтобы можно было добавить класс и описать стиль для ссылки, означающей, что ссылка откроется в новом окне.
avatar
Все это выполнено в ввиде единого плагина.
avatar
Спасибо вам большое! Когда я начал писать, картинку сделал в виде гиперссылки и нажал предпросмотр, нажав на картинку я перешел по адресу потом назад и весь текст пропал, я был расстроен. Нашел ваш способ, отлично помогло! Спасибо вам!
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.