Собственная кнопка Retweet с счетчиком без плагинов

Сегодня я расскажу как сделать кнопку Retweet с счетчиком и с собственным оформлением, по сути, какую захотите такая и будет. Для этого мы будет использовать  Topsy’s Otter API.

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

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

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

Обратите внимание, что кнопка обязательно должна размещаться в пределах Loop

Разместим в нужном месте следующий php-код:

<?php
$shareUrl = urlencode(get_permalink($post->ID));
$shareTitle = urlencode($post->post_title);
$retweetNick = 'your_twitter_account'; // Ваш твиттер-аккаунт
$retweetInfo = json_decode(file_get_contents('http://otter.topsy.com/stats.json?url='.$shareUrl));
?>

Ниже вставьте html-код:

<div class='retweet'>
    <a href='<?php echo $retweetInfo->response->topsy_trackback_url; ?>'
       class='count'><?php echo $retweetInfo->response->all; ?></a>
    <a href='http://button.topsy.com/retweet?nick=<?php echo $retweetNick; ?>&title=<?php echo $shareTitle; ?>&url=<?php echo $shareUrl; ?>'
       class='button'>добавить в твиттер</a>
</div>

И, наконец, css-код:

.retweet {width: 180px; margin: 15px auto;}
.retweet a {border-radius: 2px; -moz-border-radius: 2px; -webkit-border-radius: 2px; display: block; float: left; height: 26px; line-height: 26px; padding: 0 10px; text-decoration: none;}
.retweet .count {color: #3e8704; font-size: 14px; margin-right: 1px; background: #d5d4d4;}
.retweet .button {color: #fff; font-size: 12px; font-weight: bold; text-shadow: 0 1px 0 #07607f; background: #1ab2e7;}

Вот и все. Кнопка полностью сохраняет функциональность оригинального плагина. Разметка очень простая и ее легко изменить, создавая свои уникальные кнопки.

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

22 комментария на «“Собственная кнопка Retweet с счетчиком без плагинов”»

  1. А где же rel=»nofollow» 🙂

  2. Как на блоге вебмозга 🙂 спасибо 🙂 интересно было, как так сделать можно 🙂

  3. А не правильней использовать Twitter API? Или он не позволяет делать подобные ретвиты?. Кстати, а что считает кнопка? Все ретвиты или количество нажатий?

    • Через Twitter API можно, я привел пример реализации через Topsy. Кнопка считает все ретвиты.

  4. max:

    начинаю изучать php, не подскажете что означает запись $post->post_title и в частности что делает значок стрелки?

    • Это относится к теме ООП (объектно-ориентированного программирования). Стрелка означает обращение к данным, в данном случае к заголовку в глобальной переменной $post.

      • max:

        то есть должен быть какой-то файл с описанием этих переменных, а где он прописан?
        спасибо заранее 🙂

  5. Там бы поправить код возле «response->all» 🙂

  6. Вчера пытался сделать тоже самое для своего сайта, получилось определять количество только для уже ранее опубликованных постов, для новых он почему-то выводил знак вопроса и ошибку. Выводил URL с помощью PHP переменных серверных — решил сделать как проще. =) Не вышло! Попробую Ваш вариант.

  7. спасибо, довольно интересно
    в закладки заберу, а там может на досуге и к себе куда-нибудь пристрою 😉

  8. Полезно! Подписался на обновления блога:)

  9. спасибо что плагин ставить не нужно

  10. Здравствуйте, спасибо за мануал, раньше искал и не мог найти что-то подобное, а тут случайно увидел и аж обрадовался! 🙂
    Вопрос таков, а можно также сделать с Фейсбуком? Заранее спасибо!

  11. всё работает. замечательно, но вот подскажите. у меня виден код на странице. как мне его спрятать? и что значит в пределах Loop? может в моём шаблоне в файле single.php нет функции loop? сразу хочу извиниться за может быть дилетантский вопрос.

  12. поиск помог мне. всё получилось. теперь у меня вместо тяжёлого (так везде пишут) плагина, быстрый retweet twitter`а
    спб

  13. а как сделать rel=»nofollow» вот сюда $retweetInfo = json_decode(file_get_contents(‘http://otter.topsy.com/stats.json?url=’.$shareUrl));
    ?>

  14. Спасибо, красиво получилось…)