Здравствуйте. Недавно натолкнулся на статью Александра Борисова Noindex и nofollow что это такое и как еще закрыть ссылку от индексации?, где нашёл новый метод скрытия внешних ссылок. О нём и пойдёт речь в этой статье.
Что-за метод?
Он заключается в переводе внешних ссылок в текст, т. е. поисковики видят текст с javascript, а посетители - ссылку.
Ваши действия (Ручной вариант)
Заходим в main.php и вставляем этот код перед закрывающим тегом body:
<script type="text/javascript"> function GoTo(link){window.open(link.replace("_","http://"));} </script>
Вставляем в конец css-файла шаблона:
.alink { color: rgb(70, 175, 158); cursor:pointer; } .alink:hover { color: rgb(61, 214, 185); text-decoration:underline;
Теперь заходим в статью или виджет, в общем, в то место, где хотим вывести ссылку, и пишем:
<span class="alink" onclick="GoTo ('_google.ru')">Внешний сайт</span>
Как вы поняли, _google.ru - это адрес внешнего сайта, а "Внешний сайт" - текст ссылки.
Закрытие ссылок в комментариях
Для этого заходим в папку type_foreach своего шаблона и открываем файл page-comments-tree.php. Если у вас его нет, скачиваем отсюда.
Открываем и ищем строчку:
$tree .= '<span class="tree-comment-author">' . $comments_url . '</span>';
И заменяем на этот код:
$tree .= '<span class="tree-comment-author"><span '.($comusers_url != '' || $users_url != '' ? 'class="alink" onclick="GoTo(\'' . ( $users_url != '' ? $users_url : $comusers_url ) . '\');"':'').'>' . $comusers_nik . '' . $users_nik . '</span></span>';
Как вы поняли, я заменил ' . $comments_url . ' на код span-ссылки:
<span '.($comusers_url != '' || $users_url != '' ? 'class="alink" onclick="GoTo(\'' . ( $users_url != '' ? $users_url : $comusers_url ) . '\');"':'').'>' . $comusers_nik . '' . $users_nik . '</span>
А код после goto - это вывод адресов сайтов юзеров и комюзеров.
Всё, что написано после ">", но до закрывающего тега span - это текст ссылки:
'.($comusers_url != '- это код, отвечающий за вывод адреса комюзера;
' || $users_url != '' ? '- это вывод адреса юзера;
' . $comusers_nik . '- Имя комюзера
' . $users_nik . '- имя юзера.
Таким образом, у нас получился новый файл page-comments-tree.php, который вы можете скачать здесь.
Как закрыть внешние ссылки в статьях
Для этого есть плагин rewrite_links для Maxsite CMS, но он закрывает их при помощи noindex и rel="nofollow", а также редиректов.
Что ж тогда меня заставляет модернизировать этот плагин?
- По редиректом поисковики переходить умеют, а значит учитывают;
- Есть информация, что на noindex и nofollow Яндекс и Гугл больше не обращают внимание. Почему бы тогда не подстраховаться?
Я закрываю ссылки не из-за жадности, а из-за того что есть опыт попадания под фильтр АГС другими блогерами, чего мне не хочется.
Загрузка плагина
Установка плагина
- Распаковываем архив и закачиваем в папку /application/maxsite/plugins;
- Переходим в админ-панель, раздел "Плагины", отмечаем span_links и активируем.
История версий:
- 0.1: появление;
- 0.2: Добавление автоматического подключения скрипта с функцией перед закрывающим тегом body;
- 0.3: Добавил style.css и подключил в head.
P. S. Если у вас был прописан скрипт с функцией, описанный в разделе про ручное подключение span-ссылок, прошу удалить его, иначе работоспособность не гарантирую.
Известно, что при использовании span_links стандартный плагин spoiler перестаёт работать. Пока данная проблема не решена: ждите новой версии.
Для тех, кто любит разбираться в коде
Заходим в файл index.php старого плагина, ссылку на который я дал в начале раздела про закрытие внешних ссылок в статьях и находим такой код:
$out = '<noindex>< a' . $matches[1] . 'href="' . $url . '"' . $matches[3] . ' rel="nofollow" target="_blank" >' . $matches[4] . '</a></noindex>';
И заменяем его на следующий:
$out = '<span class="alink" onclick="GoTo (\'' . $matches[2] . '\');");">' . $matches[4] . '</span>';
Всё
Хочу немного рассказать о том, как проходила модернизация. Изначально там был код $url, но он выводил редирект. Я обратился с вопросом: "Какой код отвечает за адрес ссылки" к Илье Земскову. Он мне сказал, что всё зависит от конкретного случая, после чего было мною решено поискать по коду выше, но ничего подходящего не было, а вот ниже - было:
$url = $matches[2];
Из этого кода я понял, что $url - это $$matches[2]. Так я и нашёл "$matches[2]", который являлся адресом ссылки:
Заключение
Благодарю за внимание. Буду рад, если статья, плагин и правка в файле page-tree-comments.php будут полезны.
P. S. В правках кода участвовал Илья Земсков, за что ему громадная благодарность. Его работа - это добавление url юзеров и приведение кода в рабочее состояние (Думаю вы заметили различия между кодом примера и тем, что я привёл далее).
Комментариев: 29 RSS