jQuery-cкрипт «Добавить в закладки»

Данный скрипт — это усовершенствованная версия JS-скрипта «Добавить в закладки», который я представил читателям более года назад.

Прежде всего хочу поблагодарить Женю Самборского за то, что помог мне его «добить». Скрипт уже давно был почти готов, но одна деталь не давала мне его выложить на блоге.

jQuery-cкрипт “Добавить в закладки” можно прикрутить практически к любому сайту, а его установку я покажу на примере WordPress.

Особенности скрипта

  • В шаблон сайта вставляется всего одна строчка кода. Все остальное находится в подключаемом скрипте.

    Ребята, ну ради Бога, не используйте вы плагины и скрипты, которые в исходном коде выводят целые портянки html-кода. Яркий пример того, как делать не надо — блог Яна Такушевича. Я ужаснулся, когда заглянул в код страницы — даже на моем большом разрешении монитора 1920×1200 html-код закладочного плагина не вмещается в один экран! При этом размер текста поста как минимум раза в 2 меньше этого кода для закладок. И так для каждого поста. Теперь представьте, сколько лишнего «веса» это дает для каждой страницы сайта. Ян, задумайся об этом!

  • Никаких лишних внешних ссылок, а, соответственно, нет надобности в добавлении множества из несуществующего в HTML-стандарте тега <noindex>, придуманного Яндексом.
  • Небольшой вес скрипта (если не считать фреймворк jQuery). А учитывая, что скрипт кешируется браузером посетителя, как и сам фреймворк, разница в «весе» загружаемой страницы становится существенной по сравнению с html-вариантом, упомянутым чуть выше.
  • Ссылки разделены на 2 части: 1-я — закладочные сервисы, 2-я — социальные сервисы. Все это красиво оформлено в виде выпадающего списка. Если вы дружите с CSS и у вас есть желание оформить списки по-своему, то можете легко это сделать.
  • Несложная настройка скрипта.

Из минусов я отметил бы разве что раздельные иконки для каждого сервиса, т.е. сколько иконок, столько и запросов к серверу, что не есть хорошо. Можно было бы использовать технологию CSS-спрайтов, однако, тогда потеряется простота настройки — при каждом изменении списка сервисов придется пересобирать картинку с иконками, да к тому же подгонять CSS-стили.

Демо

Чтобы вам было проще разобраться с установкой скрипта, я подготовил чистый пример без всего лишнего.

Скачать

jQuery-cкрипт «Добавить в закладки»

Загрузок: 4160 | Размер: 22 Кб

Установка

Процесс установки скрипта показан на примере WordPress.

  1. Содержимое архива (за исключением файла index.html) скопируйте в папку с вашей темой. Место расположения всех файлов не принципиально, только учитывайте пути до них при подключении.
  2. Подключите эти файлы, добавив в файл header.php перед тегом </head> следующие 2 строки:
    <link href="<?php bloginfo('stylesheet_directory'); ?>/jqsocial.css" type="text/css" rel="stylesheet" />
    <script type="text/javascript" src="<?php bloginfo('stylesheet_directory'); ?>/jqsocial.js"></script>
    

    Если у вас есть какой-то файл со скриптами, то можно перенести в него содержимое файла jqsocial.js и соответствующую строчку не писать. Аналогично можно поступить со стилями — содержимое jqsocial.css перенести в файл style.css. Смысл этого — снизить количество запросов к серверу.

  3. Если в вашей теме не подключен фреймворк jQuery, то перед двумя строками из предыдущего пункта добавьте эту:
    <?php wp_enqueue_script('jquery'); ?>
    

    Для тех, кто будет использовать скрипт не на WordPress — jQuery подключается следующим образом. Вместо вышеуказанной строки вставлять эту:

    <script type="text/javascript" src="http://jqueryjs.googlecode.com/files/jquery-1.3.2.min.js"></script>
    
  4. В файле jqsocial.js найдите строку:
    var folder = 's/';
    

    и в кавычках укажите путь до папки с иконками.

  5. Теперь в те файлы шаблона, которые выводят посты (например, index.php, archive.php, search.php, single.php) добавьте такую строчку:
    <script type="text/javascript">jqsocial(encodeURIComponent('<?php the_permalink() ?>'),encodeURIComponent('<?php the_title(); ?>'))</script>
    

    Для тех, кто будет использовать скрипт не на WordPress, поясняю, где должны подставляться URL и название статьи:

    <script type="text/javascript">jqsocial(encodeURIComponent('полная_ссылка_на_статью'),encodeURIComponent('название_статьи'))</script>
    
  6. Вот, собственно, и все. Наслаждаемся результатом.

Настройка сервисов

Если появилось желание изменить/дополнить/сократить список сервисов, то в файле jqsocial.js находим вот такой кусок кода для первого блока ссылок (закладочные сервисы):

var s=new Array(
	'100zakladok.ru','save/?bmurl='+u+'&bmtitle='+t,
	'delicious.com','post?url='+u+'&title='+t,
	'google.com','bookmarks/mark?op=edit&bkmk='+u+'&title='+t,
	'bobrdobr.ru','add.html?url='+u+'&title='+t,
	'links.i.ua','mark/?url='+u+'&ename='+t,
	'memori.ru','link/?sm=1&u_data[url]='+u+'&u_data[name]='+t,
	'moemesto.ru','post.php?url='+u+'&title='+t,
	'mister-wong.ru','add_url/?bm_url='+u+'&bm_description='+t,
	'linkstore.ru','servlet/LinkStore?a=add&url='+u+'&title='+t,
	'lopas.ru','add_story.php?story_url='+u,
	'myscoop.ru','add/?title='+t+'&URL='+u,
	'ruspace.ru','index.php?link=bookmark&action=bookmarkNew&bm=1&url='+u+'&title='+t,
	'vaau.ru','submit/?action=step2&url='+u
);

и такой кусок кода для второго блока ссылок (социальные сервисы):

var s2=new Array(
	'badabadu.com','?url='+u+'&posttitle='+t,
	'chipp.ru','submit.php?url='+u,
	'feedblog.ru','submit.php?url='+u,
	'korica.info','add_story.php?story_url='+u+'&story_title='+t,
	'monrate.ru','submit.php?url='+u,
	'news2.ru','add_story.php?url='+u,
	'newsland.ru','News/Add/type/news/',
	'sloger.net','submit.php?url='+u
);

Покажу на примере delicious.com, как добавляется сервис. delicious.com дает нам вот такой код для добавления закладки:

<img src="http://static.delicious.com/img/delicious.small.gif" height="10" width="10" alt="Delicious" />
<a href="http://delicious.com/save" onclick="window.open('http://delicious.com/save?v=5&amp;noui&amp;jump=close&amp;url='+encodeURIComponent(location.href)+'&amp;title='+encodeURIComponent(document.title), 'delicious','toolbar=no,width=550,height=550'); return false;"> Bookmark this on Delicious</a>

Из него мы вычленяем следующую ссылку:


http://delicious.com/save?v=5&noui&jump=close&url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title)

Теперь делаем 2 замены: encodeURIComponent(location.href) меняем на u, а encodeURIComponent(document.title) меняем на t. В результате получаем следующую строку, которую нужно вставить в скрипт:

'delicious.com','save?v=5&amp;noui&amp;jump=close&amp;url='+u+'&amp;title='+t,

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

Заметьте, что после последнего сервиса в списке (который перед закрывающейся скобкой), запятая стоять не должна. Также при добавлении новых сервисов обратите внимание, что файл иконки сервиса должен быть с расширением .ico, а название файла состоять из имени домена.

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

Обновления

  • 04.06.09 — доработан файл стилей (jqsocial.css) с целью избежать некоторых багов в отображении панельки с ссылками в связи с особенностями верстки на сайтах.
Комментарии (135)
  1. 1
    Дмитрий

    Добрый день! понравился данный скрипт!

    Я использую самописный сайт на PHP, title я прописываю сам отдельно для каждой страницы….как мне сделать чтобы через переменную $title и $link

    пример:
    (social(encodeURIComponent(‘$link’),encodeURIComponent(‘$title’))) скрипт подставлял бы эти значения.

    как мне это осуществить? я то самому прописываать адреса и названия будет очень долго.

    $title и $link поподробней как и где это самое главное сделать

  2. 5
    Дмитрий

    <title>название раздела</title>

  3. 6
    Дмитрий

    это не движок! обычные php файлы

  4. 7
    Дмитрий

    без вариантов?

  5. 9
    Дмитрий

    вот же решение

    <script type="text/javascript">socializ(encodeURIComponent(location.href),encodeURIComponent(document.title))</script>

  6. 10
    @

    У меня скрипт, увы, не работает. В смысле даже не выпадает окно со списком сервисов в принципе. Хотя подключила все так, как здесь описано в точности. И строку про jquery тоже.

  7. 11
    @

    Извините, все уже исправилось! Почему-то у меня jQuery подключился только через гугль… а как обычно в WP не сработал.