[FAQ] Ссылки в новом окне

Темы по наиболее часто задаваемым вопросам без привязки к версии phpBB. Читать в первую очередь!
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Мини [FAQ] по phpBB 3.1.x/3.2.x | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать расширения

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
Gisher
phpBB 2.0.12
Сообщения: 857
Зарегистрирован: 04.10.2006 7:50
Благодарил (а): 11 раз
Поблагодарили: 13 раз

[FAQ] Ссылки в новом окне

Сообщение Gisher » 16.12.2007 3:07

Ссылка уже не актуальна, так как в файле includes/functions.php, нет таких строк:

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

$html    = "$whitespace<!-- $tag --><a$class href=\"$url\">$text</a><!-- $tag -->$append"; 
Есть иное решение?

Ответ: существуют несколько методов изменения поведения ссылок. Выберите для себя один из имеющихся:
  1. Статья в официальной базе знаний, касающаяся открытия ссылок в новом окне
  2. Альтернативный метод изменения поведения ссылок, основанный на использовании JavaScript
  3. Мод Prime Links

vg
phpBB 1.4.0
Сообщения: 38
Зарегистрирован: 03.11.2006 22:07
Забанен: Бессрочно

Сообщение vg » 26.02.2008 0:09

Kovu писал(а):Вне все исправления. Стоит first_post_on_every_page_phpbb3 & Quick reply for phpBB3. Редактирую сообщение с ссылкой. Нажимаю предпросмотр. И в форме редактирования вместо просто е-майл адреса
name@domain.com появляется
name@domain.com" target="_blank
Как исправить? http:// ссылка не портится.
А с этим так и нет решения?

Попробывал решение с http://www.phpbb.com/kb/article/links-o ... w-windows/
Так ообще какие то кракозябры выдало и теперь при редактировании добавляет строкe
onclick="window.open(this.href);return false;

trijin
phpBB 1.0.0
Сообщения: 2
Зарегистрирован: 07.03.2008 20:35

Сообщение trijin » 07.03.2008 21:00

Kovu писал(а):Уважаемый Rayden.
Эту правку тоже делал. Но, всеравно, после например нажатия на предпросмотр. В самом предпросмотре еще все ок, а вот в поле редактирования:

1) Портятся е-майл ссылки.

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

name@domain.com
в

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

name@domain.com" target="_blank
т.к. при изменениях надо кое что учесть.
Rayden писал(а):open includes/functions_content.php,
find this (around line 592):

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

$html    = "$whitespace<!-- $tag --><a$class href="$url">$text</a><!-- $tag -->$append"; 
and replace with this:

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

$html    = "$whitespace<!-- $tag --><a$class href="$url" target="_blank">$text</a><!-- $tag -->$append";
Это немного неверное. (или в обработчики decode надо на мыло тоже встраивать уборку таргета.)

правильная замена:

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

	if($type==MAGIC_URL_EMAIL) {
		$html	= "$whitespace<!-- $tag --><a$class href="$url">$text</a><!-- $tag -->$append";
	} else {
		$html	= "$whitespace<!-- $tag --><a$class target="_blank" href="$url">$text</a><!-- $tag -->$append";
	}

	return $html;
Kovu писал(а): 2.1) Портятся внутренние ссылки
2.2) Портятся длинные ссылки
при приведенном мной изменении эти проблемы так же решаются т.к. в исправлениях Rayden была ошибка последовательности. Таргет желательно добавлять после класса иначе надо менять регулярки в includes/functions.php.
Удачи.

P.S.> вообще атрибут target убран из спецификация HTML по крайней мере у тега A точно. Потому в официале и прибегают к использованию js. Но браузеры понимают и ладно =)[/code]

Аватара пользователя
Rayden
Former team member
Сообщения: 3739
Зарегистрирован: 27.06.2005 1:07
Поблагодарили: 44 раза

Сообщение Rayden » 07.03.2008 21:06

Rayden давно переделал себе по совету отсюда:
http://www.phpbb.com/kb/article/links-o ... w-windows/
И всем того же советует :wink:
phpBB2 FAQ
phpBB3 FAQ

Kastaneda
Former team member
Сообщения: 702
Зарегистрирован: 06.10.2004 14:29
Поблагодарили: 4 раза

Сообщение Kastaneda » 17.03.2008 17:12

Имеется более простой способ изменения поведения ссылок, основанный на использовании JavaScript.
  • Загрузите файл postlink_onlick.zip
  • Извлеките из архива файл postlink.js и поместите его в папку phpBB3/styles/
  • Откройте файл overall_header.html всех установленных стилей и…
    Найти:

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

    <script type="text/javascript" src="{T_TEMPLATE_PATH}/styleswitcher.js"></script>
    <script type="text/javascript" src="{T_TEMPLATE_PATH}/forum_fn.js"></script>
    Добавить после:

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

    <script type="text/javascript" src="styles/postlink.js"></script>
После этого все ссылки в сообщениях (за исключением локальных) будут открываться в новых окнах без необходимости редактирования старых сообщений.

Взято отсюда. Проверил — внешне всё работает прекрасно.

Добавлено спустя 7 минут 34 секунды:

И небольшое дополнение для пользователей, проделавших изменения, описанные в базе знаний. Данная модификация вынуждает старые ссылки открываться в новых окнах без необходимости редактирования старых сообщений.

Открыть файл viewtopic.php.
Найти:

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

    $message = bbcode_nl2br($message);
    $message = smiley_text($message); 
Добавить после:

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

    $message = preg_replace('/(class="postlink")/','class="postlink" rel="nofollow" target="_blank"',$message); 

Аватара пользователя
Skinny777
phpBB 1.4.0
Сообщения: 34
Зарегистрирован: 12.11.2007 21:51

Сообщение Skinny777 » 17.03.2008 20:00

Попробовал у себя - работает

DJOnic
phpBB 1.0.0
Сообщения: 3
Зарегистрирован: 25.03.2008 9:54

Сообщение DJOnic » 25.03.2008 9:58

Kastaneda
Привет! Если не трудно, выложи сюда файлик postlink.js . Не могу никак на ктут попасть. Регится не дает, а без этого не скачать ((
Спасибо!

Аватара пользователя
Rayden
Former team member
Сообщения: 3739
Зарегистрирован: 27.06.2005 1:07
Поблагодарили: 44 раза

Сообщение Rayden » 25.03.2008 11:03

DJOnic
Не ври, отдает прямо по ссылке в предыдущем посте, даже на ктук заходить не надо.
phpBB2 FAQ
phpBB3 FAQ

Kastaneda
Former team member
Сообщения: 702
Зарегистрирован: 06.10.2004 14:29
Поблагодарили: 4 раза

Сообщение Kastaneda » 25.03.2008 13:53

По-моему KTUK в настоящее время закрыт на тех. обслуживание. Попробуйте позже, или скачайте с этой ссылки.

DJOnic
phpBB 1.0.0
Сообщения: 3
Зарегистрирован: 25.03.2008 9:54

Сообщение DJOnic » 26.03.2008 8:04

Rayden
Все, сегодня получилось скачать.
Но! У меня ни в одном из шаблонов, кроме как в prosilver нет таких строчек:
$message = bbcode_nl2br($message);
$message = smiley_text($message);


И как мне subsilver2 отредактировать?

Добавлено спустя 9 минут 19 секунд:

Извиняюсь, но забыл добавить, что у меня стоит релиз 3.0Gold.
И поторопился я со своим вопросом.

Нужно сделать так для шаблонов, отличных от prosilver:

Найти в overall_header.html нужного шаблона строку
</head>
и заменить на:
<script type="text/javascript" src="styles/postlink.js"></script>
</head>

Аватара пользователя
amordezomb
phpBB 1.0.0
Сообщения: 6
Зарегистрирован: 30.01.2008 13:07
Откуда: Россия, Москва

Сообщение amordezomb » 27.03.2008 3:32

Kastaneda писал(а):И небольшое дополнение для пользователей, проделавших изменения, описанные в базе знаний. Данная модификация вынуждает старые ссылки открываться в новых окнах без необходимости редактирования старых сообщений.

Открыть файл viewtopic.php.
Найти:

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

    $message = bbcode_nl2br($message);
    $message = smiley_text($message); 
Добавить после:

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

    $message = preg_replace('/(class="postlink")/','class="postlink" rel="nofollow" target="_blank"',$message); 
Большое спасибо!!!
Сделал действия описанные http://www.phpbb.com/kb/article/links-o ... w-windows/ и ссылки в новых постах - стали открываться в новом окне.

Чтобы пофиксировать старые ссылки - произвел замену во viewtopic.php как и описали, и все старые сообщения с ссылками стали тоже открыватся в новом окне.

:!: В дополнение, если к шаблону привязывать postlink.js - то ссылки в новых постах будут двойными, т.е. один клик откроет два новых окна окна.

Проверено в phpBB3 "Olympus" 3.0.0

DJOnic
phpBB 1.0.0
Сообщения: 3
Зарегистрирован: 25.03.2008 9:54

Сообщение DJOnic » 27.03.2008 7:47

amordezomb писал(а):В дополнение, если к шаблону привязывать postlink.js - то ссылки в новых постах будут двойными, т.е. один клик откроет два новых окна окна.
Это только у тебя так. У меня открывается одно окно с сылкой...

Аватара пользователя
amordezomb
phpBB 1.0.0
Сообщения: 6
Зарегистрирован: 30.01.2008 13:07
Откуда: Россия, Москва

Сообщение amordezomb » 27.03.2008 12:13

DJOnic писал(а):Это только у тебя так. У меня открывается одно окно с сылкой...
Не исключаю данный вариант, но тем не менее, и без привязки postlink.js всё работает 8)

boriss
phpBB 1.4.2
Сообщения: 56
Зарегистрирован: 09.11.2005 22:44

Сообщение boriss » 28.03.2008 20:01

Kastaneda

Спасибо, простенько и со фкусом.
http://audi-club.ee - Русский форум Ауди в Эстонии!

Feo
phpBB 1.2.1
Сообщения: 23
Зарегистрирован: 17.03.2008 5:42
Благодарил (а): 1 раз

Сообщение Feo » 01.04.2008 4:33

точно - при установке обоих открывает 2 ссылки (правда одну ссылку, например, опера блокирует)

Все удалил оставил только добавление во viewtopic.php :

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

	$message = preg_replace('/(class="postlink")/','class="postlink" rel="nofollow" target="_blank"',$message); 
При этом при предпросмотре ссылки открываются в том же окне, но уже размещенные на форуме ссылки (старые и новые) открываются в новом окне.

Кто-нибудь знает как можно (где "рыть" в bb_code ?), чтобы сделать не на JavaScript, а в html коде (не на скрипте!) сделать внутренние ссылки открывающимися в том же окне (хотя можно в новом), а все остальные открывались через переадресацию (например, через внутреннюю страницу)? Кстати, такой вариант, кроме всего прочего, позволяет еще и статистику переходов вести.

Добавлено спустя 12 минут 45 секунд:

Кроме всего прочего, если удастся реализовать такой мод - должна резко снизиться эффективность спама, так как ссылки будут далеко и страницу переадресации можно вообще закрыть от индексации с помошью robots.txt

Kastaneda
Former team member
Сообщения: 702
Зарегистрирован: 06.10.2004 14:29
Поблагодарили: 4 раза

Сообщение Kastaneda » 01.04.2008 13:09

А зачем сразу два метода использовать?

Перенесено из форума FAQ (phpBB 3.0.x) в форум FAQ 28.09.2016 15:02 модератором rxu

Вернуться в «FAQ»