Всем привет! Сегодня на seo-mayak.com я расскажу как скрыть ссылку от индексации средствами библиотеки jQuery и AJAX запросов.
Не так давно я уже писал, что ссылки, закрытые атрибутом noffolow, прекрасно индексируются поисковыми системами.
Допустим в статье есть пять ссылок, четыре из них внутренние и одна внешняя. Вес страницы всегда поровну делится межу ссылками, передовая по ним PageRank и ВИЦ.
Из этого следует, что внешней ссылке досталось пятая часть общего веса страницы.
Стараясь сохранить статический вес страницы, многие веб-мастера закрывают внешние ссылки атрибутом nofollow. И действительно, в этом случае PR и ВИЦ (индекс Яндекса) не передаются. НО!
Из этого следует вывод, что пятая часть общего веса страницы, которая перешла по внешней ссылке, помеченной nofollow, просто улетучилась в пустоту.
Но как же тогда быть? Для того, чтобы на 100% скрыть ссылку от индексации поисковыми системами я использую jQuery.
Как подключить к сайту библиотеку jQuery
jQuery — это библиотека JavaScript, основанная на взаимодействии JavaScript и HTML. Также средствами jQuery можно взаимодействовать с сервером с помощью AJAX запросов.
AJAX — это набор способов разработки веб-приложений. Техника AJAX позволяет отправлять динамические запросы серверу без видимой для пользователя перезагрузки веб-страницы.
Для начинающих веб-мастеров наверное будет сложно вникнуть в суть определений, да это и необязательно. Целью данной статьи является научить Вас скрывать ссылки от индексации и поверьте сложного в этом ничего нет, Вам лишь надо прочитать данную статью до конца и следовать инструкциям.
Начнем с подключения библиотеки jQuery к сайту. Есть несколько способов подключения, но я остановлюсь на самом простом. Воспользуемся возможностями, которые нам представляет гигант интернет индустрии Google. Google хранит на своих серверах все версии библиотеки jQuery, но нам нужна версия не ниже 1.7.
С помощью FTP клиента открываем для редактирования файл header.php, который находиться в папке с темой и до закрывающего тега </head> вставляем следующее:
<script type="text/javascript" src= "http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
Мы только-что подключили библиотеку jQuery самой последней версии.
Как скрыть ссылку от индексации с помощью AJAX
Стоит сказать, что способов скрытия ссылок от индексации с помощью запросов AJAX существует много, с созданием отдельных файлов и без них, но я всегда публикую только проверенные на себе варианты.
Мне приглянулся метод скрытия ссылок без использования структуры <a href=“seo-mayak.com“></a> как таковой, что гарантированно предохраняет ссылку от индексации поисковиками.
Код, в который следует обернуть ссылку, выглядит так:
<span class="external-reference" data-link="Ссылка с http">анкор ссылки</span>
В коде надо заменить «Ссылка с http» на URL страницы, на которую Вы хотите сослаться.
Также в коде задан класс для тега <span>:
class="external-reference"
Ссылка без применения стилей будет выглядеть как простой текст, например:
Обязательно подпишитесь на обновления блога!
Словосочетание «Подпишитесь на обновление блога» и есть анкор ссылки. Теперь добавим стили, чтобы ссылка выглядела естественно в глазах пользователя.
Открываем для редактирования файл style.css, который также расположен в папке с темой и в самом конце прописываем следующее:
span.external-reference { color: #5151FF; /* выбираем цвет ссылки */ text-decoration: underline; /* устанавливаем подчеркивание */ cursor: pointer; /* создаем курсор при наведении*/ }
Теперь ссылка примет свой привычный вид:
Обязательно подпишитесь на обновления блога!
Поисковые системы будут индексировать анкор ссылки как простой текст и поэтому если Вы используете в качестве анкора голый URL, то есть смысл закрыть текст ссылки тегом noindex для Яндекса:
<!--noindex--><span class="external-reference" data-link="Ссылка с http">URL адрес</span><!--/noindex-->
Итак, как видите сложного ничего нет, но осталось вставить скрипт, который будет заниматься обработкой запроса.
Для этого в файле footer.php перед закрывающем тегом </body> вставляем следующее:
<script> +function($){ $(document).ready(function(){ $('.external-reference').replaceWith (function (){return'<a onclick="return !window.open(this.href)" href="'+$(this).data('link')+'" title="'+$(this).text()+'" >'+$(this).html()+'</a>';}); }); }(jQuery); </script>
Если Вы не хотите, чтобы ссылки открывались в новом окне, то надо убрать в скрипте следующий участок кода:
onclick="return !window.open(this.href)"
Также можно вставить этот скрипт непосредственно в редактор НТML, если вы хотите скрыть ссылку только на одной странице.
Как скрыть от индексации ссылку в виде картинки
Веб-мастера очень часто используют изображение в виде ссылки. Как же в этом случаи правильно скрыть ссылку от индексации с помощью jQuery и AJAX?
Все очень просто, вот эта картинка является ссылкой, но ссылка скрыта от индексации, хотя само изображение прекрасно индексируется:
Осуществляется скрытие по тому же способу, который был приведен выше, только вместо анкора надо вставить изображение:
<span class="external-reference" data-link="Ссылка с http"><img title="title для картинки" alt="alt для картинки" src="Путь до картинки" width="450" height="333" /></span>
Для обработки используется тот же скрипт, что и для обычных ссылок.
Попробуйте данный метод применить у себя на сайте, а если будут вопросы, то я всегда готов ответить на них в комментариях.
Есть еще один способ скрыть ссылки в jQuery AJAX, который я описал в статье «Сквозные ссылки».
Советую почитать: Кнопка в редактор для ajax-ссылки
До встречи!
С уважением, Виталий Кириллов
я давно задумываюсь о таком методе скрытия ссылок. Интересно только одно: за клоакинг поисковики не накажут?
Насколько я знаю Алексей, с помощью jQuery AJAX можно скрыть от поисковиков не только ссылки, но и, к примеру, сайдбар целиком, да так что в исходном коде останутся только дивы. Это уже давно реалезованно на многих блогах. С моей точки зрения клоакинг на лицо, но блоги неплохо живут и даже процветают
Клоакинга здесь нет. Клоакингом называется подмена контента в зависимости от IP-адреса посетителя, юзерагента или еще чего-то. Так показывают разный контент роботу поисковика и человеку. Это палится и наказывается.
В данном случае контент остается одинаковым для любого пользователя, к тому же и меняется только по клику. Это не нарушает никаких правил/требований поисковиков, а посему и не наказывается. Метод абсолютно рабочий и безопасный.
То есть так можно без проблем закрывать ссылки. Последствий от поисковиков никаких не будет? Спасибо за информацию, это очень нужная и полезная инфа!
Елена, закрывать все внешние ссылки я Вам не советую, так как «закупоренные» сайты поисковики оценивают неоднозначно.
Нужная информация для опытных вебмастеров, мне кажется новичкам сложно будет бороться со скриптами
Ирина, не надо с ними бороться и боятся скриптов не надо. Пока не попробуешь не разберешься, а разбираться, рано или поздно, все равно придется.
Спасибо за полезную информацию! 🙂 Для некоторых моментов скрытая ссылка очень важна! Берем на заметку. Успехов Вам и Удачи! 🙂
Интересный способ скрытия ссылок, Виталий! Алексей, что такое клоакинг и как могут наказать?
Наталья, рад снова тебя видеть. Клоакинг — это обман поисковиков. А наказание одно — бан!
Вопрос такого плана — а как таким методом открывать ссылки во всплывающем окне?
Другими словами, код
a target=»_blank» title=»Открыть в новом окне.» onclick=»return !window.open(‘http://site.ru/test.html’, ‘_blank’, ‘scrollbars=1, resizable=1, menubar=0, left=100, top=100, width=500, height=500, toolbar=0, status=0’);return false» href=»#» rel=»nofollow»Открыть во всплывающем окне/a
выполнить на jQuery?
Александр я посмотрю, что можно сделать и напишу Вам.
Виталий, а закрывать от индексации нужно внешние ссылки или и внутренние тоже?
Елена, в основном конечно закрывают внешние ссылки, но бывают случаи когда и внутренние закрывают.
а в каком случае нужно закрыть внутреннюю ссылку?
Например, ссылки на страницу «контакты» или другую не информативная страницу.
Виталий, а ссылки из одной статьи на другие статьи нужно скрывать как текст? или можно оставить хотя бы одну?
Ссылки из статьи на статью закрывать вообще не надо.
Виталий, а как убрать подчёркивание, чтобы был текст, выделенный цветом?
Елена, подчеркивание устанавливается с помощью стилей:
[php]text-decoration: underline; /* устанавливаем подчеркивание */[/php]
Уберите эту строчку и подчеркивание исчезнет.
Если вы хотите выделить шрифт жирным, то надо добавить следующую строчку:
[php]font-weight: bold;[/php]
пробовала, почему-то подчёркивание не исчезло, потом поставила на это место строку text-decoration: none;, всё равно подчёркнуто, вот думаю, как прописать конкретно — не подчёркивать. не подскажете?
Елена, а Вы про какие ссылки говорите? У меня в статье реальный пример, в котором ссылка выглядеть как текст. Без подчеркивания и без цвета. Вот надо по-колдовать со стилями.
А может у Вас какой-то исключительный случай.
И ещё один вопрос. Сколько в статье допустимо ссылок на другие статьи?
Елена, все зависит от размера статьи. Примерно на 1000 слов 5 — 7 ссылок вполне достаточно.
И ещё, Виталий, как Вы закрыли от индексации комментаторов? Может быть в какой-то статье у Вас есть, я ещё не всё изучила)
Елена все комментаторы в WordPress по-умолчанию закрыты тегом nofollow. Скрывать их не надо, комментарии очень полезны для блога.
Когда я прочитала у Вас и поставила RDS bar, то те ссылки, которые закрыты от индексации, они зачёркнуты, вот у Вас имена комментаторов зачёркнуты, у меня почему-то нет, хотя тоже вордпресс, поэтому и спросила, может надо прописать.
Елена, возможно у Вас чет-то по-другому. Откройте файл comment-template.php, который находится в папке wp-includes и найдите там такую строчку (у меня строка №155):
$return = "<a href=’$url’ class=’url’>$author</a>"
И вставьте nofollow вот так:
$return = "<a href=’$url’ rel=’external nofollow’ class=’url’>$author</a>"
Доброго времени суток Вам! Скажите, а как мне скрыть все исходящие ссылки с моего сайта, если он «одностраничный». Как скрыть все сразу ? Каждую ссылку отдельно не получается. Сайт самописный, посмотрите и если возможно скажите, буду блогадарен. Спасибо!
Алексей, мне не понятно, почему у Вас не получается скрыть ссылки по отдельности!
Скорее потому, что я не знаю как. Видимо это надо делать в phpmyadmin. Добавляю я эти ссылки (сервера) через специальную панель управления, а там никак не скрыть их.
Алексей, я затрудняюсь Вам дать дельный совет.
Как проверить работает скрипт или нет, просто в стилях к скрипту меняю цвет он не меняется, удаляю скрипт из footer.php ссылка становиться не активной но при этом стили работают, также могу удалить строку со скриптом в header но при этом оставить скрипт в footer и ссылка все равно работает
Макс, попробуйте переставить скрипт-обработчик с footer.php в header.php. Вставьте его перед закрывающим тегом:
</head>
Возможно у Вас уже была подключена библиотека jQuery, если так, то 2 раз ее подключать не надо.
да действительно был подключен не заметил строку, но почему стили не работают?
Макс, я сходу не могу Вам выдать диагноз. Ведь у меня и у многих других все работает. Попробуйте прописать стили в файле header.php.
Здравствуйте!
А как закрыть ссылки если они выводятся функцией? Например, у меня в хлебных крошках, ссылка на категорию выводится функцией the_category. Как-то можно ее закрыть от индексации и в ноиндекс?
Roman, об этом вскоре будет статья. В двух словах объяснить сложно.
Спасибо, буду ждать!
Виталий, здравствуйте!
Такая проблема… Надо закрыть ссылку на картинке, все делаю, как Вы написали, но в результате, вместо внешней ссылки на нужный сайт, — ссылка вида мойсайт.ru/undefined.
Подскажите пожалуйста, с чем это может быть связано и как это исправить??
Спасибо.
Никита, давайте я еще раз покажу, как правильно скрывать картинки ссылки.
<span class="external-reference" data-link="Ссылка на внешний ресурс с http"><img title="title для картинки" alt="alt для картинки" src="Путь до картинки" width="450" height="333" /></span>
Обратите внимание на:
data-link="Ссылка на внешний ресурс с http"
Возможно здесь ошибка.
Использовался именно такой код, ссылку вставлял с http…
Код в футере необходимый тоже стоит…
Всё перепроверял по нескольку раз.
Виталий, возможно, в чем-то еще может быть причина??
Трудно сказать, может шаблон имеет свои особенности.
Доброго времени суток, подскажите пожалуйста в вашем скрипте
$('.external-reference').replaceWith (function (){return'<a href="'+$(this).data ('link')+'" title="'+$(this).text ()+'" rel="nofollow">'+$(this).html ()+'</a>';})
параметр href="'+$(this).data ('link')+'" берется из (data-link="Ссылка с http"), а для чего этот код? title="'+$(this).text ()+'" и как он вызывается?
Николай, это ничто иное, как title. Скрипт обрабатывает не только обычные ссылки, но и ссылки в виде изображений, где alt и title будут не лишними.
Доброго времени суток, хелп ми) пожалуйста, при загрузке в header.php скрипта
пропадают картинки и часть текста(, что делать как быть?
тема платная не рекомендуетвставлять что либо в style.css отправляет в app.css, но с этим я разобрался)
Виталий, отличная статья!
Я через поисковик Яндекс 30 сайтов просмотрел, но нигде нормального объяснения не нашел, как с jQuery закрыть ссылки от индексации. Если честно, то читая вашу статью, я тоже не сразу разобрался. Пока все коды в шаблон не вмонтировал, не понял, как это работает.
Спасибо за статью!
Отличный блог, куча полезной информации. Спасибо, тёзка)
А если у меня плагин стоит WP No External Links и в плагине All In One SEO Pack тоже есть возможность ссылки закрывать, что лучше? Или лучше закрывать ссылки jQuery AJAX?
Какой оптимальный вариант?, а то я что-то запутался.
Здравствуйте Виталий!
Я закрываю где-то половину ссылок тегом nofollow, а вторую половину через Query AJAX.
Спасибо, отличная информация!
Правильно ли я понял, скрыв ссылку от индексации, по ней нельзя будет перейти даже пользователям?
Кучу вариантов перепробовал, почитав Вашу статью. Получилось ссылку сделать не активной для клика и перехода по ней, но все стили сохранились, которые обычно присутствуют у активных ссылок на моем сайте.
Игорь, ну зачем нужна ссылка, по которой даже пользователь перейти не может. Это тогда и не ссылка вовсе. Такую ссылку не видят поисковики, а в остальном это самая обычная ссылка!
Что-то у меня не получается сделать ссылку ссылкой.
Подскажите пожалуйста, правильно ли я сделал?
Яндекс Маркет
Игорь, Вам еще рано заморачиваться подобными вещами. Займитесь лучше наполнением блога и уберите рекламу, если не хотите похоронить свой молодой проект.
Здравствуйте! Я хотел спросить, а за скрытие внутренних ссылок ничего не бывает от поисковых систем? Например, мне нужно скрыть некоторые сквозные ссылки из сайдбара.
Можете спокойно закрыть хоть все ссылки в сайдбаре, многие именно так и поступают.
Спасибо большое за ответ!
Еще вопрос: а как именно скрыть ссылки в сайдбарах, не подскажете? Особенно интересует виджет «Последние записи».
В двух словах такого не расскажешь. Возможно вскоре я посвящу этой теме отдельную статью. Так, что следите за обновлениями.
Сенсей, что такое ВИЦ?))) Может ВИЧ?
Грамотей, ВИЦ — это взвешенный индекс цитирования, а ВИЧ я бы никому не пожелал.
Здравствуйте Виталий, на моем сайте при переходе в админке на страницу плагина WP optimize, а также при переходе на страницу Яндекс.ПДС открывается пустая страница или 404, которой якобы нет, помогает только ‘переход’ назад…
Скажите пожалуйста в чем может быть проблема?
Спасибо.
Евгений, я не использовал данные плагины, возможно их надо просто переустановить.
Переустановил, — не помогло! 🙁
А тут еще одна беда, — при обновлении плагинов или ядра wordpress, сайт становится не доступным, а точнее выскакивает надпись «Ведутся технические работы» , да такое и должно быть, но раньше это длилось 1-3 минуты, то сейчас я, спустя 20 минут удалил всё из папки /update, только тогда сайт «завелся» (заработал). Что может быть я так и не знаю, а обновления так и висят в панели… 🙁 Прошу помощи!
Евгений, мне нужно взглянуть на проблему изнутри. Напишите мне через форму обратной связи.
Евгений, у Вас случайно плагин для кеширования не стоит? У меня в свое время чертовщина творилась с сайтом из за плагина, удалил его и все заработало. Не помню точно как он называется. Если есть плагин для кеша попробуйте удалить его, не деактивировать, а именно удалить.
Спасибо Vit! После удаления плагина кэширования баз данных я смог установить обновления, пока всё вроде бы хорошо! Спасибо еще раз.
А хостинг теперь не ‘перегрузится’ моим сайтом с посещением в 2200-2500 чел/сут?
Рад, что помог:) Про перегрузку сайта ничего сказать не могу, напишите вашему хостинг провайдеру, они должны знать ответ на этот вопрос.
Здравствуйте.
Спасибо за подробную статью.
Все сделал как в инструкции, но почему то скрытая ссылка ведёт на такой адрес:
домен.ру/раздел-где-опубликована-ссылка/null
Подскажите, в чем может быть проблема?
Здравствуйте Дмитрий! Ищите ошибку. Не видя, что вы прописали, я не могу Вам дать точные рекомендации.
Дмитрий у меня такая же была проблема пока я не поместил оба скрипта в footer.php.
Здравствуйте, Виталий.
Подскажите, а как быть в случае если надо закрыть родную ссылку на картинку с другого сайта и заменить на свой адрес.
Пример у меня выглядит так сейчас:
Несколько картинок подгружаются с других сайтов, с помощью jQuery AJAX хочу закрыть ссылки на эти сайты, но оставить для индексации свои подставленные ссылки.
Попробовал по Вашему примеру , получилось примерно так, но скорее всего так не правильно, и ссылка на мою страницу тоже получается закрыта:
Не отображается текст между [php]и[/php],подскажите,как мне правильно вставить его, либо мои комментарии становятся пустыми..
Юрий, фильтр зашиты не позволяет добавлять коды в комментарии, в натуральном виде.
Воспользуйтесь преобразователем.
Пример у меня выглядит так сейчас:
<a href ="Ссылка На Страницу Моего Сайта">
<img src="Ссылка На Источник Картинки.Jpg" width="300" height="260" alt="Альт Текст" class="alignleft" /></a>Несколько картинок подгружаются с других сайтов, с помощью jQuery AJAX хочу закрыть ссылки на эти сайты, но оставить для индексации свои подставленные ссылки.
Попробовал по Вашему примеру , получилось примерно так, но скорее всего так не правильно, и ссылка на мою страницу тоже получается закрыта:
<span class="external-reference" data-link="ссылка на страницу моего сайта"><img title="тайтл текст" alt="альт тескт" src="Ссылка На Источник Картинки.Jpg" width="300" height="260" class="alignleft" /></span>
Извините за мусор, только учусь..
Юрий <img src="Ссылка На Источник Картинки.Jpg" width="300" height="260" alt="Альт Текст" class="alignleft" /></a> — это путь до картинки, и в данном случаи картинка является анкором. Чтобы ссылка считалась ссылкой, она должна иметь атрибут href.
Если Вы не хотите закрывать ссылки на страницы Вашего ресурса, что правильно, то просто не закрывайте их.
Большое Спасибо, Виталий, за быстрый ответ.
То есть изначальный вариант правильный, и в данном случае нет нужды здесь в применении jQuery AJAX..
«Игорь, Вам еще рано заморачиваться подобными вещами. Займитесь лучше наполнением блога и уберите рекламу, если не хотите похоронить свой молодой проект»
Добрый день. Прочитала ваш комментарий, мне немного понятно теперь. Я уже почти оформила все на сайте, и уже разместила в шапке три партнерские ссылки, получается,пока их нельзя размещать или нужно просто закрыть ? А как же тогда интернет-магазины, у них с самого начала там есть реклама, наверное. У меня пока нет статей на сайте, но уже дня через три начну писать. Как тогда добавлять в статьи партнерские ссылки, вы не могли бы мне подсказать, как лучше ?
Луиза, любые внешние ссылки губительны для молодых сайтов, но если без них никак, то конечно их надо закрывать. Вы поймите, если у Вас посещаемость 30 человек в сутки, то на партнерках или рекламе вы ничего не заработаете. Прежде всего надо работать над посещаемостью и когда она достигнет 300-500 посетителей в сутки, только тогда можно думать о рекламе.
Спасибо за ответ
Добрый день, это опять я. Получается, нужно писать статьи, а когда посещаемость будет хорошей, можно потом уже в эти статьи добавлять партнерские ссылки или как-то по другому, просто я новичок и мне немного не понятно это.
Здравствуйте Луиза! Пишите статьи и вставляйте ссылки, просто скрывайте их с помощью AJAX, как показано в статье.
Добрый день, поставил сие скрипт, но почему то ссылка перестает работать, то есть переход не осуществляется по внешней ссылке.
Google прекрасно умеет читать то, что загружается через AJAX, так что для него такой метод сокрытия ссылок не прокатит, увы. Насчет Яндекса — не знаю.
Читать то Гугл через AJAX умеет, да вот только ссылки он не индексирует, По крайней мере за последней год ни одна моя ссылка скрытая через AJAX так и не была проиндексирована Гуглом.
Виталий, возможно, что всё-таки гугл учитывает ваши исходящие ссылки, так как имея Ссылок на сайт:
доноров — 106, всего ссылок — 2347
и Ссылок с сайта:
акцепторов — 96, всего ссылок — 822
из них ссылок с главной — 3
у Вас Pr = 1, а мог бы быть 4! (не в обиду конечно)
Может всё таки google их считает?
Евгений, я так понял, что речь идет про мой сайт, так вот ссылки в комментариях и ссылки с главной я закрыл совсем недавно, провожу эксперимент, а там уже можно будет точно сказать, индексирует Гугл эти ссылки или нет. На счет PR вы явно переборщили 🙂 4 для меня пока много.
НА счет Pr: это не я переборщил, а сервис sbup.com 🙂 но, видимо после апгрейда гугловского должен быть Pr3! (искренне желаю!)
Ссылки я смотре через xtool. А каким сервисом Вы пользуетесь, если не секрет?
И до сих пор не могу понять какая у Вас посещаемость? ~19000?
Евгений, ссылки я смотрю на linkpad.
Кстати совсем недавно, всего ссылок было не 822 а 2144/
Было:
Стало:
Здравствуйте.
Подскажите пожалуйста, как Вы подключили стиль CSS:
span.external-reference {
color: #5151FF; /* выбираем цвет ссылки */
text-decoration: underline; /* устанавливаем подчеркивание */
cursor: pointer; /* создаем курсор при наведении*/
}
Если после загрузки страницы скрипт преобразуется в нормальную ссылку:
подпишитесь на обновления блога!
Интересует как все же передать стили CSS ?
Или таким образом просто создавать стили для всех тегов ?
Здравствуйте Владимир! Я маленько не понял, в чем проблема. Все стили прописываются для класса .external-reference.
В том то и дело…. После загрузки страницы скрипт
$('.external-reference').replaceWith (function (){return'<a href="'+$(this).data ('link')+'" title="'+$(this).text ()+'" rel="nofollow">'+$(this).html ()+'</a>';})
преобразует анкор ссылки в обычную ссылку у которой данного стиля и нет .external-reference.
Да не спорю в исходнике это <span class="external-reference" но на выходе обычная ссылка для которой данный класс не подключон.
Не знаю, все работает.
У Вас просто передаются стили от вашего тега «а».
Может быть, я уже не помню, в любом случаи спасибо за уточнение.
Здравствуйте Виталий Кириллов.
Проводя очередной эксперимент по вашей методике….. В частности как скрыть изображение наткнулся вот с чем: Если использовать тот же скрипт для картинок, указав для тега «img» титл он выводит его адекватно. Но есть и вторая сторона медали!!!
Открыв даже Ваше изображение «Девушка с цветком» через инспектор элементов, которое Вы спрятали…. Можно обратить внимание на саму ссылку в которой не валидно создается тот же титл. Для такого варианта больше подходит:
Не выводит полный скрипт… Обрезка.
В общем без использования (this).text для изображений, а только (this).html
Здравствуйте! Я пробовал использовать данную технологию, но при нажатии на получившуюся ссылку ничего не происходит. Даже если навести курсор, то адрес не отображается. Может это зависит от CMS?
Здравствуйте! На других CMS работу скрипта я не проверял, но думаю, что все должно работать.
Заметил что у владельца блога похожим способом закрыты рубрики (правый сайдбар). Причем на главной рубрики то же сокрыты. Возможно я не прав но мнее кажется, что целесообразнее закрыть на всех старницах сквозняки рубрик, а на главной оставить как есть ссылками…
В исходном коде, как я понимаю, a href=»» быть не должно, но он есть
Здравствуйте! Скажите пожалуйста, а как можно скрыть ссылки в комментариях? Заранее спасибо!
Вот ссылка.
Доброго времени суток многоуважаемый Автор .
Подскажите пожалуйста как с помощью вашего метода реализовать
следующую схему:
<a href="http: //site.ru/" rel="nofollow">Название ссылки</a>
не теряя свойств вашего варианта
приведённого в статье
При этом, при наведении курсора мыши на ссылку будет отображаться содержание «href», а переход будет осуществляться по адресу в «onclick».
А можно сделать вариант, что бы
onclick="return !window.open(this.href)"
можно было вставлять по желанию в код ссылки в редакторе. А то бывают случаи когда надо, что бы ссылки открывались в том же окне (внутренние переходы), а так же и нужны, что бы открывались в новом окне(внешние переходы).Нет Игорь, я думаю не получится.
А не знаете почему так может быть: jQuery подключен с google через functions.php сквозные ссылки прячет на странице ссылки прячет, а в посте не работает. Подключаю ещё раз jQuery с google в heder.php (по исходному коду jQuery подключен 2 раза) ссылки в посте начинают работать и они спрятаны.
Не знаю.
Виталий, добрый вечер и спасибо за статью!
У меня не осуществляется переход по ссылке из вашего блога:
«Обязательно подпишитесь на обновления блога!
Словосочетание «Подпишитесь на обновление блога» и есть анкор ссылки, можете нажать на строчку и убедиться.»
При нажатии на строчку ничего не происходит.
Закрыл на своей странице ссылку «Polar Grill» — тот же эффект.
Может быть я не понял чего-то?
Когда внес изменения в файл header.php, исчезли по всему сайту фоновые картинки.
Андрей, я тут у себя работал со стилями и много чего поменял, наверное поэтому строчка перестала работать как ссылка. Раньше все функционировало. Надо подправить статью.
Скрипт рабочий конечно, но теряется валидность для XHTML, data- применяется в HTML5, существуют несколько более простых решений, у Алаева были неплохие статьи по этому вопросу…
хорошая статья..подробная…но я все равно не пойму как и что . Вот у меня код и не очень понимаю как в него применить ваш способ..подскажите пожалуйста..спасибо
вот ещё одна ссылка кодом <a title="» как к ней приложить span чтобы работало?
Андрей, я так и не понял какой у Вас код и какая ссылка. В статье вроде все расписал.
Спасибо за интересный пост!! Поставила на Джумлу посмотрю как будет индексироваться. Хотя конечно страшновато, боюсь Яндекса))
Не надо боятся! Мой блог уже прошел все испытания)
Ну бред же. Чистый бред. Зачем людей обманывать то? Да и ты сам должен знать, что js не индексируется поисковиками никак. Все, что делается через js работает исключительно в браузере.
Виталий, скажите, а атрибут rel=»nofollow» уже не нужно добавлять к ссылке? Посмотрела у Вас в статье про битые ссылки добавлен еще этот атрибут.
Юлия, я не стал переделывать все ссылки с nofollow, просто наверное лень копаться в старых записях.
Понятно тогда почему так. Спасибо за ответ!
Спасибо Виталий, скопировала ваш первый скрипт прямо в админку,ничего сайт остался жив. Остальное не освоила, еще зайду.
Виталий у меня есть к вам еще вопрос, подробно написала вам на гмайл почту, как часто вы туда заходите. Может быть моя проблема есть еще у кого-то.
Спасибо за полезную и интересную статью!
Здравствуйте, очень замечательная статья. Подскажите ссылка, которая начинается не с http, а с https так же закрывается?
Должно по идее работать, но я не пробовал.
Виталий, а Вы пробовали, работают ли закрытые таким образом ссылки в мобильных версиях сайтов? Я установила плагин для мобильной версии моего сайта и ссылки стали обычным текстом. Так должно быть?
Нет Юлия, плагин я не пробовал. Думаю вполне возможно, что плагин прогоняет все через фильтр, где убираются лишние эффекты, за что и может быть принят тег span. Лучше конечно сделать мобильную версию не используя плагины, я как раз сейчас над этим работаю, но надо знать css.
Подскажите как закрыть ссылки в сайтбарре боковой колонке?
Вот статья по теме.
Это единственный на сегодняшний день способ))) Интересно, скоро ПС научатся ссылки в скриптах видеть? Тогда вообще труба — вариантов пока больше нет ))))
Код скрипта не работал. Пришлось гуглить. Есть решение:
https://toster.ru/q/191721
Вот такой код сразу работает:
<script>(function($){
$(document).ready(function(){
$('.external-reference').replaceWith (function (){return'<a href="'+$(this).data('link')+'" title="'+$(this).text()+'">'+$(this).html()+'</a>';});
});
})(jQuery);</script>
Дмитрий, так это мой код, слямзеный из статьи «Сквозные ссылки». Даже переменные переименовать не потрудились. Правда для тегов я полностью функцию прописывать не стал, просто привел категории в пример.
Что код ваш — никто не спорит, проблема в том, что без $(document).ready(function() скрипт не работал. Мне кажется стоит в этой статье дописать.
Спасибо Дмитрий! Я если честно, сразу не понял о чем Вы. Давайте я как раз в комментарии и приведу вариант обновленного скрипта.
ДОбрый день
Все сделал, как в статье, но при клике на ссылку ничего не происходит
перед указал
$('.external-reference').replaceWith (function($){
$(document).ready(function(){
$('.external-reference').replaceWith (function (){return'<a href="'+$(this).data('link')+'" title="'+$(this).text()+'" rel="nofollow">'+$(this).html()+'</a>';});
});
}(jQuery));
код ссылки в html
www.thefurnish.ru/shop/svet/svet-dlya-detskoy
подключение jquery
в консоли хрома
Uncaught TypeError: Cannot read property ‘replaceWith’ of null(anonymous function) @ (index):654
-(
Хелп
Здравствуйте Алексей!
Попробуйте такой скрипт:
Подскажите как вставить для рубрик только onclick="return !window.open(this.href)"
Вставьте код прямо в ссылку, рядом с class="external-reference".
рубрики выводятся через wp_list_categories Хотел чтобы они открывались в новом окне onclick="return !window.open(this.href)"
class="external-reference" такого класса у меня нет а выше приведенная функция полностью вырубает сайт только белый экран
Алексей, вот тут все описано. В принципе ничего никуда вставлять не надо, скрипт сам все сделает.
сделал так function mayak_hide_navigation_menu( $mayak_hide_menu ) {
$pum = array ("<a", "/a>", "href", );
$bum = array ('<a onclick="return !window.open(this.href)"', "/a>", "data-link");
return str_replace($pum, $bum, $mayak_hide_menu);
}
add_filter( 'wp_list_categories', 'mayak_hide_navigation_menu' );
А нет ли более простого варианта? к <ul><?php wp_list_categories();?> </ul> прикрутить onclick="return !window.open(this.href)"
Только через фильтр, по другому никак. Только вы href и data-link из кода уберите.
скажите а ПС на данный момент точно не видят такие ссылки, закрытые через скрипт? А то часто вижу что люди пишут мол поисковики видят все, но может не учитывают их?
Всё сделал,вроде получилось!Респект!!!доступно и понятно.СПС за статью.
Виталий, в коде своего сайта я вижу библиотеку jQuery. Ее нужно еще раз подключать, или нет?
Нет, подключать второй раз не надо.
Спасибо, Виталий за ответ, я подумала, что библиотека jQuery может быть в другой папке находится.
Виталий, доброе утро! Подскажите, а если надо, чтобы ссылки с картинками открывались в новом окне, а текстовые ссылки в том же — это можно как-то реализовать? Например сделать 2 класса external-reference, и добавить в footer.php 2 скрипта обработчика (один без ссылок в новом окне, другой, чтобы открывал в новом окне). Спасибо.
Как всегда написал Вам и сразу пришло решение;))) Сделал класс external-reference1 и в обработчике и в ссылке и все заработало))
Виталий, подскажите, а можно сделать так, что бы ещё и кнопка в редакторе админки была для вставки ссылок?
То есть, чтобы не прописывать код в режиме HTML, а в обычном режиме прописать ссылку, выделить и нажать на кнопку. И ссылка уже закрыта кодом автоматически.
Сделать то наверное можно, вод бы только понять как…
У меня есть материал для закрытия ссылок другим скриптом с кнопкой, но он на моем блоге не корректно работает. Хотите, скину по почте, может сможете разобраться и прикрутить кнопку к Вашему методу. Я думаю, что Ваши читатели и я в том числе были бы Вам благодарны за такое удобство с кнопкой..
Давайте, попробуем.
Отправила!
Только не правильно почту указала в форме.
Напишите еще раз)
Здравствуйте, Виталий. Вставила все ссылки куда нужно: в хедер, футер, и в стили. Обернула ссылки в баннере. После чего от баннера осталась только коричневая полоса. Хорошо, что в блокноте был сохранен прежний текст и я быстро все исправила. Однако мне хотелось ссылки закрыть, но не получилось. Что-то здесь не так.
Здравствуйте Ксения Юрьевна! Закрывайте банеры с помощью второго варианта, который описан в статье сквозные ссылки.
Спасибо, Виталий, попробую разобраться со вторым способом.
Добрый день, Виталий. Подскажите, как грамотно решить вот такую задачу — картинки подгружаются с Яндекс.фотки, что бы место меньше занимать. Но должно складываться впечатление, что они лежат в корневой папке, то есть я прописываю только путь до картинки: То есть я достиг чего хотел, а именно что бы картинка не была ссылкой, а как будто лежит в корневой папке. Стоит ли мне ее закрывать от индексации и как лучше это сделать? Подскажите, пожалуйста.
Виталий, подскажите, пожалуйста, как адаптировать приведенные Вами действия к шаблону joomla. В частности, куда вставлять скрипт для обработки запроса (тот что Вы вставляете в footer.php)?
Влад, обычно скрипт вставляется в футер, но можете вставить его в область head.
Виталий, дело в том, что, как я понял, два основные включения дополнительного кода — это 1) вставка в header.php подключения библиотек (здесь вроде бы понятно)
2) вставка обрабатывающего скрипта в footer.php («Для этого в файле footer.php перед закрывающем тегом вставляем следующее:…»). Дело в том, что у меня в шаблоне в футере нет тегов . Тогда вставлять перед , или же перед общим закрывающем в самом конце общего кода? Или, как Вы ответили выше, в head?
И еще вопрос, как понять, заработали ли все это? Что вес никуда не пропадает?
Заранее благодарен!
Небольшая ремарка: Тогда вставлять перед /footer, или же перед общим закрывающим /body в самом конце общего кода? Или, как Вы ответили выше, в head?
Попробуйте перед закрывающим тегом body или можетt в head вставить.
Здравствуйте.
Так и не понят как сделать, что бы скрипт открывал ссылку в новой вкладке. Подскажите пожалуйста.
Здравствуйте! Вот готовый скрипт:
Виталий, здравствуйте! Возможно мой опыт по установке Ваших скриптов поможет устранить проблемы, возникающие у некоторых читателей Вашего блога. Я действовала строго по Вашим инструкциям: вставила скрипты в фанкшин, футер и стайл. Результат: нерабочие ссылки в сайтбаре и в исходном коде нет нужных изменений. Я открыла сайтбар и увидела, что в моей теме используется тег wp_list_cat, а не wp_list_categories. Я заменила тег в сайтбаре на wp_list_categories. После этого в исходном коде произошли нужные изменения, но в сайтбаре ссылки не работали.Тогда я ещё раз откопировала скрипт обработчик с Вашего сайта, вставила его в нотепад, а оттуда в футер. И все проблемы исчезли. Спасибо Вам большое, буду ждать результатов.
Здравствуйте Татьяна! Функция wp_list_cat не входит в функционал WordPress и написана разработчиками Вашего шаблона. Такой часто встречается и Вы молодец, что во всем разобрались!
Пытался закрыть внутренние сквозные ссылки на своем сайте при помощи jQuery AJAX. Основу я брал из блога Алаича
alaev.info
. Но у меня были проблемы с работоспособностью ссылок, скрипты не работали. Использовал следующий кодвнешняя ссылка
$(‘.hidden-link’).replaceWith (function (){return»+$(this).html ()+»;})
В поиске решения своей проблемы попал на Ваш блог и нашел конструкцию, обрамляющую код основного скрипта, добавил в нее код скрипта от алаича и все заработала. Ваш код также полностью работоспособный. Спасибо!
+function($){
$(document).ready(function(){
});
}(jQuery);
У меня вопрос: эта конструкция подключает jQuery?
+function($){
$(document).ready(function(){
});
}(jQuery);
У меня вопрос: эта конструкция подключает jQuery?
Это запускает выполнение тела функции после загрузки страницы.
А у меня вопрос к Автору и всем — а где AJAX? Не увидел ничего связанного с этой технологией. Аякс позволяет не менять содержимое кода страницы, как мне кажется про это написано, технология позволяет получить данные с сервера и поместить их на странице без ее перезагрузки.
И возникает вопрос — а как же скрывать ссылки правильно и эффективно?
Странно. Такое активное обсуждение, но на простой вопрос, о котором собственно суть статьи так и нет ответа….
Пишут обо всем, но только не по делу.
Так как же правильно скрыть ссылку? Тем более, что все ПСы уже давно умеют переходить по яваскрипт-коду?
И для автора повторно вопрос — а при чем тут AJAX?
Михаил, вы взгляните на ссылкe через firebug и надеюсь поймете причем тут AJAX.
И не просто смотрел, а с огромным интересом, и код из статьи перечитывал и не увидел ни одного признака AJAXа.
Итак, что бы не быть голословным.
habrahabr.ru/post/14246/
— тут немножко про технологию (Вики не привожу, там без красивых примеров кода). Тут описано использование технологии на голом JS. У ВАС В СТАТЬЕ НЕТ НИЧЕГО ПОДОБНОГО!Далее
api.jquery.com/jquery.ajax/
— Вы используете библиотеку JQUery, тут описание работы с технологией при помощи библиотеки. ГДЕ У ВАС В КОДЕ ХОТЯ БЫ $.ajax?Смотрим примеры кода — — тут слово AJAX это часть пути к библиотеке JQuery.
Далее
+function($){
$(document).ready(function(){
$(‘.external-reference’).replaceWith (function (){return»+$(this).html()+»;});
});
}(jQuery);
сам скрипт — просто делаем замены в строке после того, как готов DOM.
На самой ссылке onclick=»return !window.open(this.data-link)» — открытие подготовленных ссылок.
Цитирую статью «AJAX — это набор способов разработки веб-приложений. Техника AJAX позволяет отправлять динамические запросы серверу без видимой для пользователя перезагрузки веб-страницы.»
И снова вопрос автору — где AJAX? где отправка и получение запроса от сервера?
Уже не в первый раз вижу описание про AJAX но НИКТО еще не смог объяснить мне откуда взялось это слово — это неграмотность или копипаст?
Михаил, то, что Вы не увидели признаки AJAXа, это Ваши проблемы, но зачем кричать такую глупость, как -«ГДЕ У ВАС В КОДЕ ХОТЯ БЫ $.ajax». На методе jQuery.ajax() технология ajax не заканчивается, хотя это и основной метод.
Вы слышали о методах jQuery(..).load или jQuery.post? Это тоже AJAX!
Вот например:
Вы тоже скажете — «ГДЕ У ВАС В КОДЕ ХОТЯ БЫ $.ajax».
Я уже давно работаю в интернете и повидал не мало разных индивидуумов).
Что касается именно этой моей статьи.
Да, скрипт работает на подобии AJAXa, так как вместо подгрузки контента с сервера, в уже сформированный DOM, в коде просто подменяются символы.
А теперь о том, почему этот метод скрытия ссылок приписали к технологии AJAX. Все просто, потому, что его так нарекли рядовые веб-мастера, а как обычно бывает, потом привязалось.
Поэтому совершенно некрасиво с Вашей стороны обвинять кого-то в неграмотности или копипасте.
На будущее, будьте сдержанней!
«На будущее, будьте сдержанней!» — Если бы Вы отписали это в первом комментарии, то и эмоций у меня бы не было.
Во первых спасибо за хороший комментарий — Вы показали себя как человека, разбирающегося в вопросе, а не копипастера (в 99% случаев это так).
Во вторых — спасибо за ответ на мой вопрос — теперь понятно что к чему.
Но самое главное — так я нигде и не нашел ответ — как же закрыть ссылку — пока что понял, что это бесполезное занятие. ПСы отлично читают яваскрипты и переходят по ним.
Ajax давно читается Гуглом, Яндексом до сих пор нет. Но для Гуга надо просто запрешать индексировать файл со скриптом обработчиком в robots.txt и Гугл тоже ослепнет.
А вот это наверное самая ценная информация за все время по этой теме.
Получается, что гугель пробует прочитать JS, перенаправляется на php скрипт и тут получает аутлуп и заканчивает дальнейшую попытку перехода. И самое главное все довольно просто.
Надо попробовать что получится.
Спасибо за ценную информацию!
Спасибо большое! Все сработало с первого раза) Метод действенный)
Здравствуйте Виталий! Спасибо за статью, очень познавательно.
На многих сайтах стал замечать редирект через go2cloud, ссылка для примера
mysait.go2cloud.org/aff_c?offer_id=344
если я правильно понимаю то свои партнерские ссылки защищаю именно через редирект на go2cloud. Сможете ли вы подсказать как можно реализовать это, и надежный ли такой способ защиты ссылок?Здравствуйте Максим! К сожалению ничего не слышал о таком способе.
Виталий, здравствуйте!
Всё сделал, но хочу убедиться что работает правильно, так как есть отличие между моими ссылками и вашими.
Вот скрин prntscr.com/g4qpjx у меня есть rel=»nofollow», а у вас нет.
Здравствуйте! Атрибут rel=nofollow лучше убрать.
Виталий, можно узнать почему атрибут rel=nofollow лучше убрать и как именно его убрать, ведь я всё сделал как написано в данной статье?
И я вижу что у вас в тексте статьи Атрибут rel=nofollow отсутствует, а в комментариях присутствует — подскажите почему?
Извините за множество вопросов) Но если разбираться, то уже до конца))
Спасибо!
Я пересмотрел ваш скрипт и если правильно понимаю, то убрать Атрибут rel=nofollow нужно вот тут prntscr.com/g7wd54 ?
Но я не понимаю зачем его убирать, если вы в скрипте его прописали и наверное не просто так?
И дублирую прошлый мой коммент «у вас в тексте статьи Атрибут rel=nofollow отсутствует, а в комментариях присутствует — подскажите почему?»
Да действительно, он у меня в скрипт был заложен.
Спасибо, что обратили внимание, уже не помню как он там оказался.
Атрибут rel=nofollow у меня присутствует только в теле комментариев, и только в тех ссылках, которые небыли пропущены через скрипт обработчик.
По умалчиванию WordPress добавляет rel=nofollow ко всем внешним ссылкам с комментариев.
Мне кажется, что мы говорим о разным вещах.
Если смотреть через ctrl+u, то у меня получается вот такой код
<span class="external-reference" data-link="ссылка">какой-то текст</span> Т.е. без атрибута rel=nofollow.
А если смотреть через ctrl+shift+i, то получается код как я писал выше:
<a onclick="return !window.open(this.data-link)" data-link="ссылка" title="blog post because" rel="nofollow">какой-то текст</a>
Поэтому давайте проясним данную ситуацию ))
Алекс, вам просто надо набраться знаний и ситуация сама прояснится.
Технология AJAX таким образом и работает, иначе как бы вы могли переходить по ссылке.
Пока вам важно знать, что поисковый робот смотрит исходный код, а не готовый DOM.
Яша научился распознавать скрипты, по крайней мере ваш уже не работает и для робота является ссылкой. Может есть какие-н еще наработки в этом направлении?
Попробуйте скрипт закинуть в отдельный файл и закрыть его от индексации в роботс.ткст
Виталий!!!! А после обновления темы, настройки этих скриптов, которые добавлялись в шапку, футер и css, не слетят???
Слетит конечно! Чтобы ничего не слетело надо создавать дочернюю тему.