Линукс, Vim, LaTeX, полезные скрипты, визуализация данных, численные расчёты, немного ФП

20100114

Кнопки твиттера, жуйки, я.ру и ЖЖ для Blogger

Приятно, когда на тебя ссылаются, поэтому любой заядлый блоггер любит всякие кнопки вроде «retweet» и «в делишез». «Retweet» особенно: в микроблогах ссылаются охотнее. Однако кроме твиттера, у нас есть ещё и ЖЖ, и Я.ру, и juick. А вот каким-нибудь stumbleupon никто не пользуется.

Никакие готовые кнопки мне не понравились: 1) большинство из них неправильно работает, если заметка находится на главной странице, 2) они почти все требуют установки чужих скриптов, часто тормозных 3) многие кнопки игнорируют популярные в России (и среди моих читателей) ЖЖ, Я.ру и juick. Вот и пришлось сделать самому.

Решил встроить кнопки в шаблон blogger, потому что именно на этапе применения шаблона известны и заголовок, и постоянный адрес заметки, и при этом не требуется никаких скриптов, кроме движка самого blogger.

Что получилось

Первая версия выглядит примерно так (это просто картинка, не кликать! — настоящие кнопки внизу заметки):

Кнопки подписал по-русски. Для надёжности расшифровал. Проверил, точно работают «пожужжать |жж», «двумЯ.РУками |я.ру» и «расчирикать |twi». Кнопка для жуйки по идее должна работать, только я её проверить не смог, потому что у меня обработчик XMPP URI не настроен. Пожалуйста, проверьте, кто пользуется, отпишитесь и скажите, как надо поправить, если что.

Как установить себе

В шаблоне блога «раскрыть виджеты», найти подходящее место (например, я выбрал post-footer-line-2) и добавить туда такой код:

<div class="sharemebuttons">
<a class="shareme" expr:href='"http://www.livejournal.com/update.bml?subject=Ссылка: "
+ data:post.title + "&amp;event=" + data:post.title + ": "
+ data:post.url'>пожужжать |жж</a>

<a class="shareme" expr:href='"http://my.ya.ru/posts_add_link.xml?title="
+ data:post.title + "&amp;URL=" + data:post.url'>двумЯ.РУками |я.ру</a>

<a class="shareme" expr:href='"xmpp:juick@juick.com?message;body="
+ data:post.title + " " + data:post.url'>перетереть |juick</a>

<a class="shareme" expr:href='"http://www.google.com/reader/link?url="
+ data:post.url + "&amp;title=" + data:post.title + "&amp;srcURL="
+ data:blog.homePageUrl + "&amp;srcTitle=" + data:title'>побузить |buzz</a>

<a class="shareme" expr:href='"http://twitter.com/home?status="
+ data:post.url + " " + data:post.title'>расчирикать |twi</a>
</div>

Для ЖЖ бы хорошо в event помещать уже HTML-код, но у меня пока не получилось.

Надо, наверное, добавить красивые графические иконки (не знаю, дойдут ли руки, но собственноручно нарисованный чижик для твиттера у меня уже есть; нет ничего для жуйки и жж). Пока довольствуюсь вот таким фрагментом CSS (тоже черновой вариант, вставлять в таблицу стилей в верху шаблона):
div.sharemebuttons {
margin-top: 1em;
margin-bottom: 1em;
}
a.shareme, a.shareme:visited {
text-decoration: none;
padding: 3px 8px;
margin: 0em 8px 0em 0px;
background-color: #94cc32;
color: white;
}
a.shareme:hover {
background-color: #aced3a;
color: white;
}

Всякие улучшения приветствуются. Ну и ссылки, конечно :-)

Доп. 1: добавил кнопку для «Я.ру».

Доп. 2: исправление для кнопки «Я.ру» — чтобы при нажатии на кнопку незалогинненному пользователю вначале предлагалось войти в «Я.ру», добавить в шаблон блога такой Javascript-код (например, перед </head>):
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$("a.shareme[href^='http://my.ya.ru']").attr("href", function() {
return "http://passport.yandex.ru/passport?mode=auth&amp;retpath=" + escape(this.href);
});
});
</script>
Без этого скрипта кнопка тоже работает, но только для залогинненых пользователей «Я.ру».

Доп. 3: добавил кнопку для Google Buzz (через Reader).

17 коммент.:

  1. криво работает с Я.ру:
    Если незалогинен, то все с виду проходит нормально (форма для написания поста, авторизация), а пост на выходе не появляется.
    Если залогинен, то все ОК.

    ОтветитьУдалить
  2. Действительно. Подтверждаю. Спасибо.

    Есть идея, как можно исправить (отправлять на http://passport.yandex.ru/passport?mode=auth&retpath=...), но потребуется включить в страницу фрагмент на Javascript, чтобы кодировать аргумент repath (шаблон blogger этого не умеет). Попробую в свободное время.

    ОтветитьУдалить
  3. Добавил скрипт исправляющий кнопку «Я.ру». Теперь работает и так, и так.

    ОтветитьУдалить
  4. скажи лучше что делать когда берут тексты, правят и вставляют туда нехорошие ссылки?

    ОтветитьУдалить
  5. ffsdmad,

    Не знаю, может быть так и так? Ссылаться на это правило. Ещё можно слать DMCA-заявки американским провайдерам и судиться с нашими юр. и прочими лицами (см. 247 ГПК РФ как). Я однажды просто вывесил (и подсунул гуглу) поимённый список плагиаторов (порылся и нашёл кое-что на некоторых). Некоторые «копии» после того исчезли. Стыдно, наверное, стало. А вообще, это тема отдельного разговора.

    ОтветитьУдалить
  6. Проблема с такими кнопками, что сервисов много, у вас я насчитал уже пять штук. На всех не напасёшся. Гораздо выгоднее, чтобы блог экспортировал идентификатор записи, а посетитель выбирал, в какой сервис добавлять блоговый пост, путём настройки блогосферы или веб-броузера. В Atom предусмотрен идентификатор поста, но сквозного удобного решения я пока не видел.

    ОтветитьУдалить
  7. shareme это что?
    меня вот какая кнопка интересует, как сделать кнопку в пост ЖЖ, чтобы на нее нажимал читающий в моем посте и он таким образом отсылал ссылку моего поста от своего имени в твиттер

    ОтветитьУдалить
  8. .shareme — просто название стиля; как кнопку в пост ЖЖ сделать — я не знаю, эти — только для шаблонов blogspot.com.

    ОтветитьУдалить
  9. Спасибо!
    Прикрутил несколько кнопочек у себя в блоге. Понравилось, что не используется грузный js (за исключением Я.ру, но я костыль не ставил).

    ОтветитьУдалить
  10. ugnich написал, что для кнопок расшаривания в juick лучше использовать форму на сайте. Следует заменить url на http://juick.com/post?body=some%20text
    Сделал у себя замену. Не знаю, только как кракозябры вместо кириллицы победить.

    ОтветитьУдалить
  11. Спасибо. Не знал, что там теперь форма есть. Я попробовал сделать

    <a class='shareme' expr:href='&quot;http://juick.com/post?body=&quot; + data:post.title + &quot; &quot; + data:post.url'>перетереть |juick</a>

    Текст в форму вроде подставляется правильный (без кракозяб), но, когда нажимаю «Post» — не отправляется (Forbidden), хотя в Juick залогинен. В общем, пока не буду основным вариантом предлагать.

    ОтветитьУдалить
  12. Это просто класс! Спасиюо! Давно искал для рунета.

    ОтветитьУдалить
  13. я использую код (не знаю как его запостить в коммент) в конце каждого поста - сделал это в шаблоне сообщения - для перепоста в ЖЖ

    ОтветитьУдалить
  14. Здравствуйте!
    Спасибо огромное за такое полезное дело!

    Очень хорошо было бы сделать кнопку для "вконтакта", так как куча народа отчего-то проводит там основное время пребывания в интернете.

    Как это реализовано в постах на этом, к примеру, сайте :
    http://www.lookatme.ru/flows/kosmos/posts/94955-vzryv-sverhnovoy-v-etom-godu

    Реально ли так (или примерно так) сделать и в blogger?

    ОтветитьУдалить
  15. Да, реально. Код кнопки, думаю, примерно такой (не проверял):

    <a class="shareme" expr:href='"http://my.ya.ru/posts_add_link.xml?URL="
    + data:post.url'>вконтакт&nbsp;|вк</a>

    ОтветитьУдалить
  16. Только в href ссылка другая:
    "http://vkontakte.ru/share.php?url="

    ОтветитьУдалить