Главная » phpBB » Статьи о phpBB » Расширение функциональности phpBB3 » Открытие страниц в новом окне
Распечатать статью

Открытие страниц в новом окне

По сравнению с phpBB3, у ссылок в phpBB2 были несколько другие принципы работы: когда Вы кликали на них, открывалось новое окно с соотыетствующей страницей. Это изменение было предпринято по нескольким причинам, но самой важной причиной было стремление достигнуть стандарта верстки XHTML 1.0 Strict для всего форума.

Если Вы все же хотите добиться этого эффекта на форуме phpBB3, то необходимо внести несколько небольших изменений. В этой статье мы постарается подробно объяснить Вам, как это сделать.

Создане ссылок, которые будут открываться в новом окне

Для начала, давайте попробуем создать обычные ссылки (те, что создаются без помощи BBCode) которые будут автоматически открывать страницу в новом окне. Для этого откройте файл includes/functions_content.php и найдите показанный ниже фрагмент кода (обычно это строка 592):

$html  = «$whitespace<!— $tag —><a$class href=\»$url\»>$text</a><!— $tag —>$append»

И замените его следующим фрагментом:

    if ($type == MAGIC_URL_EMAIL)
{
$html    = «$whitespace<!— $tag —><a$class href=\»$url\»>$text</a><!— $tag —>$append»;
}
else
{
$html    = «$whitespace<!— $tag —><a$class href=\»$url\» onclick=\»window.open(this.href);return false;\»>$text</a><!— $tag —>$append»;
}

URL’ы в BBCode

Затем откройте файл bbcode.html в Вашем скине (если Вы используете стиль prosilver, он находится по адресу styles/prosilver/template/bbcode.html file) и найдите следующий фрагмент кода:

<!— BEGIN url —><a href=»{URL}»>{DESCRIPTION}</a><!— END url —>

Теперь замените его на:

<!— BEGIN url —><a href=»{URL}» onclick=»window.open(this.href);return false;»>{DESCRIPTION}</a><!— END url —>

Помогите phpBB пропарсить новый код

Последнее, но не менее важное, Вы также должны внести изменения, которые позволят phpBB пропарсить добавленный html-код: откройте includes/functions.php и замените следующий фрагмент кода, который обычно находится на 2740 строке…

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

… на этот фрагмент:

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

Т. к. Вы уже обновили файл шаблона не забудьте также произвести очистку кэша на форуме с помощью соответствующей кнопки в админке.

Вы можете оставить комментарий, или обратную ссылку на Ваш сайт.

Оставить комментарий

Похожие статьи