1

Тема: [Запрос] Show links in new window

Для меня важно, чтобы внешние ссылки с форума открывались в новом окне. Раньше неплохо работало расширение Show links in new window. Его небольшой код представлен ниже. Уважаемые коллеги, взгляните, пожалуйста опытным глазом, а нужно ли его править? Оно вроде работает и на версии 1,4.


<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE extension SYSTEM "ext-1.0.dtd">

<!--
***********************************************************************

    Copyright (C) 2008  PunBB

    PunBB is free software; you can redistribute it and/or modify it
    under the terms of the GNU General Public License as published
    by the Free Software Foundation; either version 2 of the License,
    or (at your option) any later version.

    PunBB is distributed in the hope that it will be useful, but
    WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
    Foundation, Inc., 59 Temple Place, Suite 330, Boston,
    MA  02111-1307  USA

***********************************************************************
-->

<extension engine="1.0">
    <id>show_links_blank</id>
    <title>Show links in new window</title>
    <version>1.1</version>
    <description>Open all links from posts, signatures and user websites in new windows</description>
    <author>YonasH</author>

    <minversion>1.3dev</minversion>
    <maxtestedon>1.4.2</maxtestedon>

    <hooks>

        <hook id="ps_handle_url_tag_end"><![CDATA[
if ($bbcode)
{
    if ($full_url == $link)
        return '[url]'.$link.'[/url]';
    else
        return '[url='.$full_url.']'.$link.'[/url]';
}
else
    return '<a href="'.$full_url.'" target="_blank">'.$link.'</a>';
    ]]></hook>

        <hook id="vt_row_pre_post_contacts_merge"><![CDATA[
if (isset($forum_page['post_contacts']['url']))
    $forum_page['post_contacts']['url'] = str_replace('><span>', ' target="_blank"><span>', $forum_page['post_contacts']['url']);
    ]]></hook>

        <hook id="pf_view_details_pre_header_load"><![CDATA[
if (isset($forum_page['user_contact']['website']))
    $forum_page['user_contact']['website'] = str_replace('rel="me"', 'rel="me" target="_blank"', $forum_page['user_contact']['website']);
    ]]></hook>

        <hook id="pf_change_details_about_pre_header_load"><![CDATA[
if (isset($forum_page['user_contact']['website']))
    $forum_page['user_contact']['website'] = str_replace('rel="me"', 'rel="me" target="_blank"', $forum_page['user_contact']['website']);
    ]]></hook>

    </hooks>
</extension>

Download

Сайт ser

Поделиться

2

Re: [Запрос] Show links in new window

Подскажите, пожалуйста, почему данное расширение может не работать?

Версия форума 1.4.2

Версия расширения 1.1.1 для 1.4.1

Никаких ошибок и пр, просто не функционирует...

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

Если можно как-то ещё реализовать данную функцию (открывать внешние ссылки в новой вкладке) - буду рада помощи!

Поделиться

3

Re: [Запрос] Show links in new window

Leksa, тут http://punbb.informer.com/forums/topic/ … ew-window/ в первом посте есть ссылка на версию 1.1.1 от KeyDog.
Там код отличается от приведенного в этой теме.

Моя сборка FluxBB 1.5 * Parserus - BBCode parser

Поделиться

4

Re: [Запрос] Show links in new window

Visman, благодарю, но была всё что уже имеется я облазила и испробовала... по ссылке тоже была, и эта версия не работает...

Не могу понять, почему...

Поделиться

5

Re: [Запрос] Show links in new window

Leksa, какие расширения еще стоят?

Моя сборка FluxBB 1.5 * Parserus - BBCode parser

Поделиться

6 (24.12.2014 02:51 отредактировано Leksa)

Re: [Запрос] Show links in new window

Visman, да практически все возможные smile

Add Fields 0.4.4
Разработчик: KANekT

Admin Clear Cache 1.1.5 
Разработчик: PunBB Development Team

Alex Nofollow 0.1
Разработчик: alexantr

Attachment 1.1.19
Разработчик: PunBB Development Team

BBCode buttons 1.4.18
Разработчик: PunBB Development Team

Convert internal link 1.0.0
Разработчик: hcs

Custom pages 1.2
Разработчик: Maikel Punie (adopted for 1.4 PunBB Fun)

Developer helper 1.0.0.27
Разработчик: hcs

Disable signature for group 0.3
Разработчик: floop

Fancy Alerts 1.5.10
Разработчик: dimka.linux@gmail.com

Fancy code highliter 0.6.5
Разработчик: dimka.linux@gmail.com

Fancy jQuery Addons 2.2.2
Разработчик: dimka.linux@gmail.com

Hide IP 1.0.0.0
Разработчик: hcs@mail.rom

jQuery 1.1.5
Разработчик: PunBB Development Team

jQuery UI 0.4.1
Разработчик: KANekT

Last Topic Title 0.6.8
Разработчик: dimka.linux@gmail.com

Move users to group 0.2.1
Разработчик: KANekT

Nick to Form 0.6.2
Разработчик: dimka.linux@gmail.com, modified and adapted to 1.4

Post Edit Control 0.6.1
Разработчик: The HungryCoder (updated dimkalinux)

Private Messaging 2.4.2
Разработчик: PunBB Development Team

Private Messaging Email 1.2.1
Разработчик: Smith (edit for 1.4 by KANekT)

Pun Move Posts 1.1.4
Разработчик: PunBB Development Team

Pun poll 2.3
Разработчик: PunBB Development team

Quick quote 1.2
Разработчик: Seiko

Reputation 4.2.3
Разработчик: hcs

Show links in new window 1.1.1
Разработчик: YonasH

Smiles 0.6.0
Разработчик: KANekT

Smiles for Developer 0.6.0
Разработчик: KANekT

Spoiler BBcode 1.0.1
Разработчик: Visman (visman@inbox.ru)

Stop spam from bots 0.3.3
Разработчик: PunBB Development Team

Topic Description 0.7.0
Разработчик: KANekT

Upload images to post 3.0.0.RC1
Разработчик: hcs

Who view the topic 0.1.2
Разработчик: PunBB.Ru

Рекламные блоки 1.3.0
Разработчик: hcs

Конфликт? Или может ему чего-то не хватает?

Спасибо за помощь!!!

Поделиться

7

Re: [Запрос] Show links in new window

Попробуйте:

https://yadi.sk/d/TRhFSxZYdahVA

PunBB Extensions | Перед созданием темы => ФАК | Профессиональная разработка сложных сайтов

Расширения распространяются по Creative Commons Attribution-NonCommercial 4.0

Сайт KANekT

Поделиться

8

Re: [Запрос] Show links in new window

KANekT пишет:

Попробуйте:

https://yadi.sk/d/TRhFSxZYdahVA

Спасибо! Но увы, тоже не работает...

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

Ребят, подскажите, а эти настройки не влияют?

Я просто уже не знаю куда копать...

Поделиться

9

Re: [Запрос] Show links in new window

Leksa, отключи Convert internal link 1.0.0, Alex Nofollow 0.1 и посмотри что выйдет.

Моя сборка FluxBB 1.5 * Parserus - BBCode parser

Поделиться

10

Re: [Запрос] Show links in new window

Visman пишет:

Leksa, отключи Convert internal link 1.0.0, Alex Nofollow 0.1 и посмотри что выйдет.

Спасибо тебе, ГЕНИЙ!!! Работает без Alex Nofollow 0.1

Огромная благодарность от меня!

Теперь бы ещё решить, как и эту функцию реализовать...

Поделиться

11

Re: [Запрос] Show links in new window

Может кто подскажет ещё, как всё таки реализовать Nofollow для всех внешних ссылок?

Если в файле include/parser.php

строку:
       

return '<a href="'.$full_url.'">'.$link.'</a>';

заменить на:
       

 return '<a href="'.$full_url.'" rel="nofollow">'.$link.'</a>';

То этот атрибут будет добавлен ко всем ссылкам, включая и внутренние?

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

Заранее, извиняюсь, что немного не по теме, но всё же, как продолжение - вдруг кому понадобится...

Поделиться

12

Re: [Запрос] Show links in new window

Leksa, нельзя так менять. И да, внутренние ссылки тоже будут с nofollow.

Следует совместить это расширение с Alex Nofollow в единое расширение, чтобы избавится от конфликта.

Моя сборка FluxBB 1.5 * Parserus - BBCode parser

Поделиться

13

Re: [Запрос] Show links in new window

Visman, не, мне это не осилить...

"Метод тыка" не действует...

Не поможете?

manifest.xml от Alex Nofollow 0.1

<hooks>

        <hook id="ps_handle_url_tag_end"><![CDATA[
            if ($bbcode)
            {
                if (defined('FORUM_SUPPORT_PCRE_UNICODE') && defined('FORUM_ENABLE_IDNA'))
                {
                    if (preg_match('!^(https?|ftp|news){1}'.preg_quote('://xn--', '!').'!', $link))
                    {
                        $link = $idn->decode($link);
                    }
                }

                if ($full_url == $link)
                    return '[url]'.$link.'[/url]';
                else
                    return '[url='.$full_url.']'.$link.'[/url]';
            }
            else
            {
                if (preg_match('!^https?://'.$_SERVER['HTTP_HOST'].'!', $full_url))
                    return '<a href="'.$full_url.'">'.$link.'</a>';
                else
                    return '<a href="'.$full_url.'" rel="nofollow">'.$link.'</a>';
            }
        ]]></hook>

        <hook id="vt_row_pre_post_contacts_merge"><![CDATA[
            if (isset($forum_page['post_contacts']['url']) && !preg_match('!^https?://'.$_SERVER['HTTP_HOST'].'!', $cur_post['url'])) {
                $forum_page['post_contacts']['url'] = str_replace('a class="external', 'a rel="nofollow" class="external', $forum_page['post_contacts']['url']);
            }
        ]]></hook>

    </hooks>

manifest.xml от Show links in new window 1.1.2

<hooks>

        <hook id="ps_handle_url_tag_end"><![CDATA[
if ($bbcode)
{
    if ($full_url == $link)
        return '[url]'.$link.'[/url]';
    else
        return '[url='.$full_url.']'.$link.'[/url]';
}
else
    return '<a href="'.$full_url.'" target="_blank">'.$link.'</a>';
    ]]></hook>

        <hook id="vt_row_pre_post_contacts_merge"><![CDATA[
if (isset($forum_page['post_contacts']['url']))
    $forum_page['post_contacts']['url'] = str_replace('><span>', ' target="_blank"><span>', $forum_page['post_contacts']['url']);
    ]]></hook>

        <hook id="pf_view_details_pre_header_load"><![CDATA[
if (isset($forum_page['user_contact']['website']))
    $forum_page['user_contact']['website'] = str_replace('rel="me"', 'rel="me" target="_blank"', $forum_page['user_contact']['website']);
    ]]></hook>

        <hook id="pf_change_details_about_pre_header_load"><![CDATA[
if (isset($forum_page['user_contact']['website']))
    $forum_page['user_contact']['website'] = str_replace('rel="me"', 'rel="me" target="_blank"', $forum_page['user_contact']['website']);
    ]]></hook>

    </hooks>

Или всё не так просто, как я думаю?

В любом случае, спасибо!

Поделиться

14

Re: [Запрос] Show links in new window

Leksa, замени в manifest.xml от Alex Nofollow 0.1 строки

                if (preg_match('!^https?://'.$_SERVER['HTTP_HOST'].'!', $full_url))
                    return '<a href="'.$full_url.'">'.$link.'</a>';
                else
                    return '<a href="'.$full_url.'" rel="nofollow">'.$link.'</a>';

на

                if (preg_match('!^https?://'.$_SERVER['HTTP_HOST'].'!', $full_url))
                    return '<a href="'.$full_url.'">'.$link.'</a>';
                else
                    return '<a href="'.$full_url.'" rel="nofollow" target="_blank">'.$link.'</a>';

А в manifest.xml от Show links in new window 1.1.2 удали

        <hook id="ps_handle_url_tag_end"><![CDATA[
if ($bbcode)
{
    if ($full_url == $link)
        return '[url]'.$link.'[/url]';
    else
        return '[url='.$full_url.']'.$link.'[/url]';
}
else
    return '<a href="'.$full_url.'" target="_blank">'.$link.'</a>';
    ]]></hook>

И в таком виде переподключи оба расширения.

Моя сборка FluxBB 1.5 * Parserus - BBCode parser

Поделиться

15

Re: [Запрос] Show links in new window

Visman, спасибо вам огромное за помощь и терпение! Всё работает!

Если можно, выложу исправленные варианты для совместной работы этих двух расширений здесь, может кому-нибудь жизнь облегчит:

Post's attachments

alex_nofollow.zip 1.14 Кб, 12 скачиваний с 2014-12-25 

show_links_blank.zip 1.18 Кб, 13 скачиваний с 2014-12-25 

You don't have the permssions to download the attachments of this post.

Поделиться

16

Re: [Запрос] Show links in new window

https://yadi.sk/d/EBKHchB1dcKA9 - 2 в 1

PunBB Extensions | Перед созданием темы => ФАК | Профессиональная разработка сложных сайтов

Расширения распространяются по Creative Commons Attribution-NonCommercial 4.0

Сайт KANekT

Поделиться

17

Re: [Запрос] Show links in new window

KANekT пишет:

https://yadi.sk/d/EBKHchB1dcKA9 - 2 в 1

У кого нибудь осталось 2 в 1?

Сайт nihi1ist

Поделиться

18

Re: [Запрос] Show links in new window

nihi1ist, это

target="_blank"

лучше не использовать на страницах сайта/форума, так как отрытый по такой ссылке сайт получает полный доступ к странице-родителю.

Моя сборка FluxBB 1.5 * Parserus - BBCode parser

Поделиться

19

Re: [Запрос] Show links in new window

Visman, а никакой защиты нет?

Сайт nihi1ist

Поделиться

20

Re: [Запрос] Show links in new window

nihi1ist, не использовать бланк.

Для открытия ссылок в новой вкладке предусмотрено колесико мыши.

Моя сборка FluxBB 1.5 * Parserus - BBCode parser

Поделиться

21

Re: [Запрос] Show links in new window

nihi1ist пишет:

Visman, а никакой защиты нет?

rel="noopener noreferrer"

Сайт sempai

Поделиться

22

Re: [Запрос] Show links in new window

Visman пишет:

nihi1ist, это

target="_blank"

лучше не использовать на страницах сайта/форума, так как отрытый по такой ссылке сайт получает полный доступ к странице-родителю.

А можно подробнее, что значит: "полный доступ"?

sempai пишет:
rel="noopener noreferrer"

Спасибо!

Сайт nihi1ist

Поделиться

23

Re: [Запрос] Show links in new window

А можно подробнее, что значит: "полный доступ"?

js с открытой страницы имеет доступ к открывающей странице.

Моя сборка FluxBB 1.5 * Parserus - BBCode parser

Поделиться

24

Re: [Запрос] Show links in new window

Visman, доступ на чтение, доступ на изменение? Думаю таки на чтение, что не есть полный доступ.

Сайт nihi1ist

Поделиться

25

Re: [Запрос] Show links in new window

nihi1ist, и чтение, и запись, и подмена страницы https://habrahabr.ru/post/282880/

Моя сборка FluxBB 1.5 * Parserus - BBCode parser

Поделиться