Сегодня я расскажу как сделать кнопку 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;}
Вот и все. Кнопка полностью сохраняет функциональность оригинального плагина. Разметка очень простая и ее легко изменить, создавая свои уникальные кнопки.
Если возникли вопросы, задавайте в комментариях, буду рад на них ответить.
А где же rel=»nofollow» 🙂
Это уже на ваше усмотрение. Я лишь указал путь 🙂
Как на блоге вебмозга 🙂 спасибо 🙂 интересно было, как так сделать можно 🙂
А не правильней использовать Twitter API? Или он не позволяет делать подобные ретвиты?. Кстати, а что считает кнопка? Все ретвиты или количество нажатий?
Через Twitter API можно, я привел пример реализации через Topsy. Кнопка считает все ретвиты.
начинаю изучать php, не подскажете что означает запись $post->post_title и в частности что делает значок стрелки?
Это относится к теме ООП (объектно-ориентированного программирования). Стрелка означает обращение к данным, в данном случае к заголовку в глобальной переменной $post.
то есть должен быть какой-то файл с описанием этих переменных, а где он прописан?
спасибо заранее 🙂
Там бы поправить код возле «response->all» 🙂
Спасибо, поправил. Редактор рубит php-символы, приходится по 100 раз проверять.
Заметил, потому что себе как раз ворую код 🙂
Затем и выложен 🙂 Сейчас вроде точно должно работать.
Да я сам подправил уже.
Вчера пытался сделать тоже самое для своего сайта, получилось определять количество только для уже ранее опубликованных постов, для новых он почему-то выводил знак вопроса и ошибку. Выводил URL с помощью PHP переменных серверных — решил сделать как проще. =) Не вышло! Попробую Ваш вариант.
спасибо, довольно интересно
в закладки заберу, а там может на досуге и к себе куда-нибудь пристрою 😉
Полезно! Подписался на обновления блога:)
спасибо что плагин ставить не нужно
Здравствуйте, спасибо за мануал, раньше искал и не мог найти что-то подобное, а тут случайно увидел и аж обрадовался! 🙂
Вопрос таков, а можно также сделать с Фейсбуком? Заранее спасибо!
всё работает. замечательно, но вот подскажите. у меня виден код на странице. как мне его спрятать? и что значит в пределах Loop? может в моём шаблоне в файле single.php нет функции loop? сразу хочу извиниться за может быть дилетантский вопрос.
поиск помог мне. всё получилось. теперь у меня вместо тяжёлого (так везде пишут) плагина, быстрый retweet twitter`а
спб
а как сделать rel=»nofollow» вот сюда $retweetInfo = json_decode(file_get_contents(‘http://otter.topsy.com/stats.json?url=’.$shareUrl));
?>
Спасибо, красиво получилось…)