Как все ссылки сделать "в новом окне"?

Главные вкладки

Аватар пользователя Гость Гость (не проверено) 5 октября 2006 в 13:20

Как все ссылки сделать "в новом окне"?
Можно это определить через CSS?
Можно сделать по условию?

ЗЫ
Вопрос конечно не совсем по Друпалу, но прошу отнестись снисходительно :).

Лучший ответ

Аватар пользователя yo-ki yo-ki 10 сентября 2007 в 0:29

Незнаю, то что нужно или нет, но вот модуль который добавляет ко внешним ссылкам значок и открывает их в новом окне:
http://drupal.org/project/extlink
и ещё пару модулей со ссылками видел, но уже забыл Smile
поройтесь на друпал.орг )

Комментарии

Аватар пользователя smile smile 5 октября 2006 в 13:32

через цсс - нельзя.

если координально прям все, то можно через джава скрипт я думаю.
иначе - просто руками в соотвествующих шаблонах прописать target=_blank

Аватар пользователя rariteth rariteth 5 октября 2006 в 13:41

прикольно, это вообще кому-нибудь ещё в голову приходило.
искать ссылки в шаблонах трудновато будет, т.к. там только вызовы функций одни - это в /includes, а это зачем интересно, кому охота тысячи окон открывать?

Аватар пользователя Onza Onza 5 октября 2006 в 13:50

Вроде можно чего-то добавить в urlfilter.module для внешних линков (target=_blank). У меня правда не вышло. Если есть готовый рецепт для него - было бы очень хорошо Smile

Аватар пользователя rariteth rariteth 5 октября 2006 в 14:05

если ссылка внешняя, значит создана в рукопашную - так там и надо писать. а так надо пробывать в модуле path.module и добавлять бокс с функцией "открыть в новом окне"

Аватар пользователя Shedko Shedko 16 октября 2006 в 4:20

вот наткнулся на статейку на drupal.org по этой теме. Смотрите там то что надо.

Module to choose whether external links open in new window?

I know the external links have been discussed many times, but it always comes down to administator/designer choice what is best for users. Yes, (the experienced one) can open the link in a new window/tab. Still, I believe it would be a great feature to have a block with a checkbox "Open external links in a new window". Unfortunately I don't have the skills to do it myself.

http://drupal.org/node/23857

только одно НО, придется менять файлы из ядра Sad
либо надеяться, что кто-либо из тех, кто хорошо знаком с php напишет модуль фильтра, который будет сравнивать если ссылка начинается с нашего домена, то ничего не делать, а если с дркгого, то менять код на открытие в новом окне.

Аватар пользователя Гость Гость (не проверено) 1 ноября 2006 в 10:08

Спасибо всем участвовавшим. Жаль только решения так и не было.
Ну вот, наконец появилось время и занялся я этой проблемой.
В результате копаний в интернете и использования метода "научного тыка" решение нашел.
Проблема решается использованием скрипта на Яве.
Сразу предупреждаю, что Ява я не знаю. Поэтому претензии по "красоте кода" не принимаются :-).

<script language="JavaScript">
<!--

var
pause_time = .5; // в секундах, период обхода страницы

function LinksToBlank() {

    //обойдем страницу и исправим сслыки
    for (var NumLink = 0; NumLink < document.links.length; NumLink++)
    {
        iLink = String(document.links[NumLink]);
        //обращаем внимание на второй параметр substring, это длинна строки с адресом сайта
        if (iLink.substring(0, 20) !== "http://www.MySite.ru")
        {
        document.links[NumLink].target='_blank';
        }
    }

    //обойдем и фреймы
    for (var NumFrame = 0; NumFrame < parent.frames.length; NumFrame++)
    {
        for (var NumLink = 0; NumLink < parent.frames[NumFrame].document.links.length; NumLink++)
        {
            iLink = String(parent.frames[NumFrame].document.links[NumLink]);
            //обращаем внимание на второй параметр substring, это длинна строки с адресом сайта
            if (iLink.substring(0, 20) !== "http://www.MySite.ru")
            {
            parent.frames[NumFrame].document.links[NumLink].target='_blank';
            }
        }
    }
    setTimeout("LinksToBlank();",pause_time*1000);
}
LinksToBlank();
// -->
</script>

Все ссылки на на другие сайты будут открываться в новом окне. Впрочем условия каждый может изменить под себя.
Поместить этот скрипт можно прямо в "проблемную" страницу или в page.tpl.php.
И не забудьте заменить "http://www.MySite.ru" на адрес вашего сайта.

Вот такой код. Может кому пригодится.
Мне этот скрипт необходим для нормальной работы "информеров".
"Информер" может быть недоступен. Проблема в том, что когда недоступен "информер", то недоступен и сайт :-(.
Проблема решается помещением "информера" в фрэйм. Но появляется другая проблема, некоторые "информеры" открывают ссылки во фрэйме, что совершенно никуда не годится. А с этим скриптом, проблема решается.

Аватар пользователя yo-ki yo-ki 10 сентября 2007 в 0:29

Незнаю, то что нужно или нет, но вот модуль который добавляет ко внешним ссылкам значок и открывает их в новом окне:
http://drupal.org/project/extlink
и ещё пару модулей со ссылками видел, но уже забыл Smile
поройтесь на друпал.орг )