Страница 1 из 13

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

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

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

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

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

Добавлено: 16.12.2007 3:18
Rayden
Зачем иное? Просто строчка перехала в другой файл. Надо же голову приложить хоть капельку.
Вот полное решение, с учетом последних изменений в коде:


In styles/prosilver/template/bbcode.html
find this:

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

<!-- BEGIN url --><a href="{URL}" class="postlink">{DESCRIPTION}</a><!-- END url -->


and replace with this:

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

<!-- BEGIN url --><a href="{URL}" class="postlink" target="_blank">{DESCRIPTION}</a><!-- END url -->


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";


Open: includes/functions.php
Find:

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

case 'bbcode_htm':
            return array(
                '#<!\-\- e \-\-><a href="mailto:(.*?)">.*?</a><!\-\- e \-\->#',
                '#<!\-\- l \-\-><a (?:class="[\w-]+" )?href="(.*?)(?:(&|\?)sid=[0-9a-f]{32})?">.*?</a><!\-\- l \-\->#',
                '#<!\-\- ([mw]) \-\-><a (?:class="[\w-]+" )?href="(.*?)">.*?</a><!\-\- \1 \-\->#',
                '#<!\-\- s(.*?) \-\-><img src="\{SMILIES_PATH\}\/.*? \/><!\-\- s\1 \-\->#',
                '#<!\-\- .*? \-\->#s',
                '#<.*?>#s',
            );  


Replace With:

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

case 'bbcode_htm':
            return array(
                '#<!\-\- e \-\-><a href="mailto:(.*?)">.*?</a><!\-\- e \-\->#',
                '#<!\-\- l \-\-><a (?:class="[\w-]+" target="[\w-]+" )?href="(.*?)(?:(&|\?)sid=[0-9a-f]{32})?">.*?</a><!\-\- l \-\->#',
                '#<!\-\- ([mw]) \-\-><a (?:class="[\w-]+" target="[\w-]+" )?href="(.*?)">.*?</a><!\-\- \1 \-\->#',
                '#<!\-\- s(.*?) \-\-><img src="\{SMILIES_PATH\}\/.*? \/><!\-\- s\1 \-\->#',
                '#<!\-\- .*? \-\->#s',
                 '#<.*?>#s',
            );   
Добавлено спустя 2 минуты 25 секунд:

И не 15-й, а 16-й это вопрос в факе.
Переименую, пожалуй.

Добавлено: 16.12.2007 3:37
Gisher
Rayden
спасибо, всё прекрасно работает
есть аналогичное решение для вложенных картинок?

Добавлено: 06.01.2008 8:32
Gisher
Rayden писал(а):И не 15-й, а 16-й это вопрос в факе.
14-й

Добавлено: 06.01.2008 18:48
Rayden
Не умничай. FAQ с тех пор переделали.

Добавлено: 07.01.2008 2:35
incubus
Что-то до меня не доходит, все правильно сделал, перепроверил, очистил кэш, обновил тему - никаких результатов.
Стоит мод Last post topic on index for phpBB3 (rxu), Posts merging (rxu), Quick reply for phpBB3 (rxu) и статистика Visitors Today (1.0.4). Еще в темах, панель с инфо о юзерах, сдвинута влево.

Добавлено: 07.01.2008 16:30
incubus
Я, не написав ни одного нового поста с ссылкой, начала сразу проверять старые сообщения. Получается, что только в новых сообщениях ссылки будут открываться в новых окнах.

Добавлено: 07.01.2008 17:02
Kastaneda
Ссылки в старых сообщениях, обрамлённые тегом [url] будут открываться в новом окне. За это отвечает замена, проделанная в файле bbcode.html. А обычные ссылки наверно не будут открываться в новом окне.

Добавлено: 08.01.2008 11:20
Gisher
Kastaneda писал(а):ссылки наверно не будут открываться в новом окне.
вы правы, открываются в новом окне только после редактирования сообщения, скорей всего нужен SQL запрос в базу, который обновит все сообщения

Добавлено: 09.01.2008 10:13
Crelby
Gisher писал(а):есть аналогичное решение для вложенных картинок?
+1 к вопросу.
Искал, не нашёл.

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

Добавлено: 13.01.2008 0:01
incubus
Да, действительно есть такое. Еще заметил такую особенность, если смотришь в пред. просмотре длинную ссылку, например указывающую на пост, то она обрезается и уже при повтором пред.просмотре/отправке - не корректно отображается.

Добавлено: 13.01.2008 1:01
Kovu
Будем надеяться, что Гуру чтонибудь придумают. А пока пришлось оставить новую страницу только для bbcode :(

Добавлено: 13.01.2008 4:29
Rayden
Млять, а это для кого я писал? Без этой правки будет вылезать " target="_blank
Rayden писал(а): Open: includes/functions.php
Find:

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

case 'bbcode_htm':
            return array(
                '#<!\-\- e \-\-><a href="mailto:(.*?)">.*?</a><!\-\- e \-\->#',
                '#<!\-\- l \-\-><a (?:class="[\w-]+" )?href="(.*?)(?:(&|\?)sid=[0-9a-f]{32})?">.*?</a><!\-\- l \-\->#',
                '#<!\-\- ([mw]) \-\-><a (?:class="[\w-]+" )?href="(.*?)">.*?</a><!\-\- \1 \-\->#',
                '#<!\-\- s(.*?) \-\-><img src="\{SMILIES_PATH\}\/.*? \/><!\-\- s\1 \-\->#',
                '#<!\-\- .*? \-\->#s',
                '#<.*?>#s',
            );  


Replace With:

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

case 'bbcode_htm':
            return array(
                '#<!\-\- e \-\-><a href="mailto:(.*?)">.*?</a><!\-\- e \-\->#',
                '#<!\-\- l \-\-><a (?:class="[\w-]+" target="[\w-]+" )?href="(.*?)(?:(&|\?)sid=[0-9a-f]{32})?">.*?</a><!\-\- l \-\->#',
                '#<!\-\- ([mw]) \-\-><a (?:class="[\w-]+" target="[\w-]+" )?href="(.*?)">.*?</a><!\-\- \1 \-\->#',
                '#<!\-\- s(.*?) \-\-><img src="\{SMILIES_PATH\}\/.*? \/><!\-\- s\1 \-\->#',
                '#<!\-\- .*? \-\->#s',
                 '#<.*?>#s',
            );   

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

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

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

name@domain.com
в

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

name@domain.com" target="_blank
2.1) Портятся внутренние ссылки
Т.е. форум у себя сокращает внешний вид внутренних ссылоки.

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

http://domain.com/forum/posting.php?mode=post&f=20
сокращается до

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

posting.php?mode=post&f=20
Это норм, но в самой форме редактирования мы уже тоже видим не нормальную ссылку, а обрезок

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

posting.php?mode=post&f=20
2.2) Портятся длинные ссылки
Например,

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

http://www.google.com/search?hl=en&sa=X&oi=spell&resnum=0&ct=result&cd=1&q=Huhuhu&spell=1
сокращается внешне до

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

http://www.google.com/search?hl=en&sa=X ... hu&spell=1
И в форме редактирования мы опять же получаем не нормальную ссылку, а ее внешний сокращенный вариант

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

http://www.google.com/search?hl=en&sa=X ... hu&spell=1