Главная
Статьи » Расширение функциональности phpBB3
 

| ПРОСМОТРОВ: 3647
 

По сравнению с 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}" class="postlink">{DESCRIPTION}</a><!-- END url -->

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

<!-- BEGIN url --><a href="{URL}" onclick="window.open(this.href);return false;" class="postlink">{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',
         );

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

АВТОРСКИЕ ПРАВА
Автор: zeroK
Перевод: Tarus
Права на статью принадлежат порталу BB3x.ru
При перепечатке ссылка на источник обязательна
Форум phpBB, русская поддержка форума phpBB
2008 - 2015 © BB3x.ru - русская поддержка форума phpBB
авторов модов
разработчиков скинов
русификаторов
и всех поклонников phpBB3