Маленькие хитрости: превращаем текстовые ссылки в действующие

jQuery - JavaScript библиотека

Слишком много ссылок

Типичная ситуация, с которой приходится сталкиваться: размещение на одной странице множества ссылок. Когда число ссылок, условно говоря, больше пятидесяти, могут начаться негативные последствия.

Поисковые службы могут начать считать страницу «собранием ссылок» (в русском сегменте используют иной, куда менее приятный термин). Обрамить ссылки так, чтобы не производилось их индексирования? Вес страницы в глазах того же Google всё равно пострадает — в связи с методикой вычисления PR, которым делится страница. Владельцев ресурсов, на которые указывают такие ссылки, тоже порой задевает запрет индексирования.

Один из вариантов — разместить ссылки в текстовом виде. Но тогда будет неудобно по ним переходить: не у каждого в браузере установлен модуль, превращающий такой текст в полноценную ссылку.

Задачу можно решить при помощи JavaScript. WordPress, Drupal и некоторые другие популярные CMS используют JavaScript-библиотеку jQuery, и решение поставленной задачи становится крайне простым.

Шаг 1. Поместите все ссылки, подлежащие преобразованию, в виде следующей разметки:

<span class="makelink">http://example.com</span>

или

<span class="makelink">http://example.com Имя сайта</span>

Шаг 2. В самом конце заметки поместите следующий блок кода

<script type="text/javascript">
$('span.makelink').each(function(index) {
    var h = $(this).html(); var t = h;
    var spos = h.indexOf(' ');
    if (spos > 0) {
        t = h.substring(1 + spos, h.length);
        h = h.substring(0, spos);
    }
    $(this).html('<a href="'+h+'" target="external">'+t+'</a>');
});
</script>

(убедитесь, что разрешается вставка JavaScript-блока).

Всё. Сохраните и смотрите на результат. Пример такого трюка в действии см, например, на странице списка DoFollow блогов, F-R.

Пояснения и замечания

1. Вы можете использовать тег, отличный от span и класс, отличный от makelink, но тогда измените JavaScript-фрагмент соответственно.

2. Если через пробел после адреса ссылки идёт произвольный текст, именно он станет текстом анкора (рабочей ссылки). Если там только URL, он же и будет использован в качестве текста.

3. Если у вас не используется jQuery, установите, следуя инструкциям на сайте. Сокращённый вариант библиотеки занимает 70 килобайт, но этот файл статический и прекрасно кэшируется.

Адрес уведомления об обратной ссылке для этой записи:

http://boyandin.info/trackback/169

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".
Аватар пользователя Гость

Интересный трюк. А текстовые

Интересный трюк.

А текстовые ссылки точно не учитываются. По крайней мере в яндексвебмастере так написано.

Аватар пользователя Константин Бояндин

Официально - да, на рейтинги

Официально - да, на рейтинги и прочее не влияют. Но вот не учитываются ли полностью - вопросы открытый.

Аватар пользователя Гость

Интересно придумал! Но лучше

Интересно придумал! Но лучше не устраивать "собрание ссылок". А эти ссылки ведь не будут индесироваться? Тогда зачем они нужны?
Аватар пользователя Константин Бояндин

1. Большая коллекция ссылок

1. Большая коллекция ссылок приведёт к обесцениванию страницы - выпадению из индекса. Так что в любом случае авторы сайтов не получат ссылочной массы.

2. Если бы пользы не было, сюда бы не заходило столько посетителей. заходят и -далее, в гости к упомянутым блогам. Вот вам и польза.

Аватар пользователя Гость

А почему реализация именно на

А почему реализация именно на jQuery, а не Mootools? :)

Аватар пользователя Константин Бояндин

Что-то вы однообразны, тов.

Что-то вы однообразны, тов. платный комментатор.

Но учту свою ошибку и по поводу предыдущего вашего комментария. Ничего личного.

Аватар пользователя Гость

А если по другому

Мне кажется чтобы код был меньше, можно не вырезать http из названия, а вместо span сразу писать тег А, но без HREF (его потом подставлять)

Аватар пользователя Константин Бояндин

Атрибут href является

Атрибут href является обязательным - при переходе на строгое соответствие стандартам это само по себе породит немало ошибок.

Аватар пользователя Гость

По стандартам href

По стандартам href обязателен, но и без него браузеры нормально все выводят, а поисковики наверно не будут такие ссылки понимать. Не вижу причин соблюдать стандарты, так как хуже от этого не будет.

Аватар пользователя Константин Бояндин

Тут мы с вами коренным

Тут мы с вами коренным образом расходимся во мнении. Я считаю, что будет.

Один только аргумент: всё идёт к тому, что стандартом разметки станет XHTML 2.0. А в существующих стандартах неверная разметка означает, что браузер, по умолчанию, ничего толком не покажет.

Стандарты придумывают не смеху ради. Я лично не вижу смысла прогибаться под Яндекс - кто он такой, в конце концов, если не в состоянии даже управляющие теги брать из стандартов?

Если кто-то хочет прогибаться по ПС и корёжить рамзетку под них, его право. Я - не намерен.

Аватар пользователя Гость

Ах вот оно...

Это делается главным образом для поисковиков? Таким способом заковыристым с ними побороться.

Аватар пользователя Константин Бояндин

А кто сказал, что

А кто сказал, что бороться?
Это делается в первую голову для того, чтобы страница не становилась свалкой ссылок.

Ведь не все ресурсы, которые перечисляешь, охота видеть полноценными ссылками.

Но некое "прогибание" под поисковики тоже можно узреть. если захотеть.

Аватар пользователя Гость

Сложно

Слишком сложный способ чтоб его применять, мое имхо.

Аватар пользователя Константин Бояндин

Предложите равномощную

Предложите равномощную альтернативу. Так, чтобы
- с точки зрения поисковиков не было активных ссылок
- с точки зрения посетителей-людей эти ссылки были

Аватар пользователя Гость

Обязательно это делать с

Обязательно это делать с jquery?

Аватар пользователя Константин Бояндин

Разумеется, нет. Но,

Разумеется, нет.

Но, поскольку Drupal использует для динамических эффектов, включая AJAX, jQuery, логично именно его интерфейс и использовать.

Если нужно дополнение, как это сделать под другими JS-библиотеками, скажите.

Аватар пользователя Гость

jQuery

А почему реализация именно на jQuery, а не Mootools? :)
Аватар пользователя Константин Бояндин

Почему не MooTools,

Почему не MooTools, Script.aculo.us, Dojo... и сколько там ещё этих библиотек?

Ответ простой: потому что на CMS, которой я пользуюсь, используется jQuery.

Можно и для других библиотек написать фрагмент - тривиальная ведь вещица.

Аватар пользователя Гость

Зачем так сложно?

Зачем так усложнять, если есть *очень* простой способ? Ставите ссылку с добавлением rel="nofollow" — и все, проблема решена.

Аватар пользователя Константин Бояндин

Ответил вам в Disqus-реплике

Ответил вам в Disqus-реплике вашего комментария.

Блог в СИНДИКАТе | Проза жизни | ИНФОтека | де Мотиватор | Люди, имена и блоги
Creative Commons License
Если явным образом не выражено иначе, все работы на данном сайте доступны по лицензии
Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 Unported License.
Перевод текста упомянутой выше лицензии на русский язык
© 2009 Константин Бояндин

Статьи: Excart Обзоры