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

Темы по наиболее часто задаваемым вопросам по phpBB 3.0.x. Читать в первую очередь!

Сообщение vg 26.02.2008 1: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;
vg
phpBB 1.4.3
 
Сообщения: 65
Зарегистрирован: 03.11.2006 23:07

Сообщение trijin 07.03.2008 22: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]
trijin
phpBB 1.0.0
 
Сообщения: 2
Зарегистрирован: 07.03.2008 21:35

Сообщение Rayden 07.03.2008 22:06

Rayden давно переделал себе по совету отсюда:
http://www.phpbb.com/kb/article/links-o ... w-windows/
И всем того же советует :wink:
phpBB2 FAQ
phpBB3 FAQ
Аватара пользователя
Rayden
Модератор
Модератор
 
Сообщения: 2489
Зарегистрирован: 27.06.2005 1:07

Сообщение Kastaneda 17.03.2008 18: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); 
Kastaneda
Модератор
Модератор
 
Сообщения: 688
Зарегистрирован: 06.10.2004 14:29

Сообщение Skinny777 17.03.2008 21:00

Попробовал у себя - работает
Skinny777
phpBB 1.2.1
 
Сообщения: 21
Зарегистрирован: 12.11.2007 22:51

Сообщение DJOnic 25.03.2008 10:58

Kastaneda
Привет! Если не трудно, выложи сюда файлик postlink.js . Не могу никак на ктут попасть. Регится не дает, а без этого не скачать ((
Спасибо!
DJOnic
phpBB 1.0.0
 
Сообщения: 4
Зарегистрирован: 25.03.2008 10:54

Сообщение Rayden 25.03.2008 12:03

DJOnic
Не ври, отдает прямо по ссылке в предыдущем посте, даже на ктук заходить не надо.
phpBB2 FAQ
phpBB3 FAQ
Аватара пользователя
Rayden
Модератор
Модератор
 
Сообщения: 2489
Зарегистрирован: 27.06.2005 1:07

Сообщение Kastaneda 25.03.2008 14:53

По-моему KTUK в настоящее время закрыт на тех. обслуживание. Попробуйте позже, или скачайте с этой ссылки.
Kastaneda
Модератор
Модератор
 
Сообщения: 688
Зарегистрирован: 06.10.2004 14:29

Сообщение DJOnic 26.03.2008 9: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>
DJOnic
phpBB 1.0.0
 
Сообщения: 4
Зарегистрирован: 25.03.2008 10:54

Сообщение amordezomb 27.03.2008 4: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
Аватара пользователя
amordezomb
phpBB 1.0.0
 
Сообщения: 6
Зарегистрирован: 30.01.2008 14:07
Откуда: Россия, Москва

Сообщение DJOnic 27.03.2008 8:47

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

Это только у тебя так. У меня открывается одно окно с сылкой...
DJOnic
phpBB 1.0.0
 
Сообщения: 4
Зарегистрирован: 25.03.2008 10:54

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

DJOnic писал(а):Это только у тебя так. У меня открывается одно окно с сылкой...


Не исключаю данный вариант, но тем не менее, и без привязки postlink.js всё работает 8)
Аватара пользователя
amordezomb
phpBB 1.0.0
 
Сообщения: 6
Зарегистрирован: 30.01.2008 14:07
Откуда: Россия, Москва

Сообщение boriss 28.03.2008 21:01

Kastaneda

Спасибо, простенько и со фкусом.
http://audi-club.ee - Русский форум Ауди в Эстонии!
boriss
phpBB 1.4.2
 
Сообщения: 55
Зарегистрирован: 09.11.2005 23:44

Сообщение 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
Feo
phpBB 1.2.0
 
Сообщения: 10
Зарегистрирован: 17.03.2008 6:42

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

А зачем сразу два метода использовать?
Kastaneda
Модератор
Модератор
 
Сообщения: 688
Зарегистрирован: 06.10.2004 14:29

Пред.След.

Вернуться в FAQ (phpBB 3.0.x)

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0