
В Эфире:

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

Слишком много ссылок
Типичная ситуация, с которой приходится сталкиваться: размещение на одной странице множества ссылок. Когда число ссылок, условно говоря, больше пятидесяти, могут начаться негативные последствия.
Поисковые службы могут начать считать страницу «собранием ссылок» (в русском сегменте используют иной, куда менее приятный термин). Обрамить ссылки так, чтобы не производилось их индексирования? Вес страницы в глазах того же 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 килобайт, но этот файл статический и прекрасно кэшируется.
Адрес уведомления об обратной ссылке для этой записи:
- Блог пользователя Константин Бояндин
- Версия для печати
- Войдите на сайт для отправки комментариев
- 1176 просмотров
Отправить в Твиттер
Блог в СИНДИКАТе | Проза жизни | ИНФОтека | де Мотиватор | Люди, имена и блоги
Если явным образом не выражено иначе, все работы на данном сайте доступны по лицензии
Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 Unported License.
Перевод текста упомянутой выше лицензии на русский язык
© 2009 Константин Бояндин


Интересный трюк. А текстовые
Интересный трюк.
А текстовые ссылки точно не учитываются. По крайней мере в яндексвебмастере так написано.
Официально - да, на рейтинги
Официально - да, на рейтинги и прочее не влияют. Но вот не учитываются ли полностью - вопросы открытый.
Интересно придумал! Но лучше
1. Большая коллекция ссылок
1. Большая коллекция ссылок приведёт к обесцениванию страницы - выпадению из индекса. Так что в любом случае авторы сайтов не получат ссылочной массы.
2. Если бы пользы не было, сюда бы не заходило столько посетителей. заходят и -далее, в гости к упомянутым блогам. Вот вам и польза.
А почему реализация именно на
А почему реализация именно на jQuery, а не Mootools? :)
Что-то вы однообразны, тов.
Что-то вы однообразны, тов. платный комментатор.
Но учту свою ошибку и по поводу предыдущего вашего комментария. Ничего личного.
А если по другому
Мне кажется чтобы код был меньше, можно не вырезать http из названия, а вместо span сразу писать тег А, но без HREF (его потом подставлять)
Атрибут href является
Атрибут href является обязательным - при переходе на строгое соответствие стандартам это само по себе породит немало ошибок.
По стандартам href
По стандартам href обязателен, но и без него браузеры нормально все выводят, а поисковики наверно не будут такие ссылки понимать. Не вижу причин соблюдать стандарты, так как хуже от этого не будет.
Тут мы с вами коренным
Тут мы с вами коренным образом расходимся во мнении. Я считаю, что будет.
Один только аргумент: всё идёт к тому, что стандартом разметки станет XHTML 2.0. А в существующих стандартах неверная разметка означает, что браузер, по умолчанию, ничего толком не покажет.
Стандарты придумывают не смеху ради. Я лично не вижу смысла прогибаться под Яндекс - кто он такой, в конце концов, если не в состоянии даже управляющие теги брать из стандартов?
Если кто-то хочет прогибаться по ПС и корёжить рамзетку под них, его право. Я - не намерен.
Ах вот оно...
Это делается главным образом для поисковиков? Таким способом заковыристым с ними побороться.
А кто сказал, что
А кто сказал, что бороться?
Это делается в первую голову для того, чтобы страница не становилась свалкой ссылок.
Ведь не все ресурсы, которые перечисляешь, охота видеть полноценными ссылками.
Но некое "прогибание" под поисковики тоже можно узреть. если захотеть.
Сложно
Слишком сложный способ чтоб его применять, мое имхо.
Предложите равномощную
Предложите равномощную альтернативу. Так, чтобы
- с точки зрения поисковиков не было активных ссылок
- с точки зрения посетителей-людей эти ссылки были
Обязательно это делать с
Обязательно это делать с jquery?
Разумеется, нет. Но,
Разумеется, нет.
Но, поскольку Drupal использует для динамических эффектов, включая AJAX, jQuery, логично именно его интерфейс и использовать.
Если нужно дополнение, как это сделать под другими JS-библиотеками, скажите.
jQuery
Почему не MooTools,
Почему не MooTools, Script.aculo.us, Dojo... и сколько там ещё этих библиотек?
Ответ простой: потому что на CMS, которой я пользуюсь, используется jQuery.
Можно и для других библиотек написать фрагмент - тривиальная ведь вещица.
Зачем так сложно?
Зачем так усложнять, если есть *очень* простой способ? Ставите ссылку с добавлением rel="nofollow" — и все, проблема решена.
Ответил вам в Disqus-реплике
Ответил вам в Disqus-реплике вашего комментария.