Русский AddThis — одна кнопка для всех сервисов закладок
Сайт odnaknopka.ru предлагает для загрузки widget для WordPress, который позволяет использовать одну-единственную кнопку для добавления статьи в один из многих сервисов закладок (русский вариант AddThis!). Plugin для WordPress доступен для скачивания со страницы сайта.
Теперь о плохом (люблю я покритиковать): код, генерируемый плагином, никуда не годится :-), ибо генерирует он не валидирующийся (и избыточный) HTML. Честно говоря, и сам PHP-код плагина имеет некоторые проблемы: использование htmlspecialchars()
для априорно неизвестной кодировки (WordPress можно сконфигурировать для использования практически любой кодировки) не является самым удачным решением.
По традиции, я решил переписать код:
View CodePHP | |
<?php class widget_odnaknopka { function widget_odnaknopka() { add_filter('the_content',array(&$this, 'odnaknopka')); add_action('wp_head', array(&$this, 'action_head')); } function odnaknopka($content) { return $content . '<span class="odnaknopka"><script type="text/javascript">okbm("'.wp_specialchars($url).'","'.wp_specialchars($title).'")</script></span>'; } function action_head() { print '<script src="http://odnaknopka.ru/wp/ok2.utf8.js" type="text/javascript"></script>'; } } $widget = new widget_odnaknopka(); ?> |
Так мне он нравится больше
Замечания:
- кнопка, генерируемая скриптом, помещается не внутрь элемента
<div>
, как это было в оригинале (так как это конфликтует с автоматической генерацией тэгов<p>
WordPress), а в <span class="odnaknopka">. Поэтому придётся немного изменить CSS, например, так:View CodeCSSspan.odnaknopka { display: block; margin: .5em 0; }
- имя скрипта (ok2.utf8.js) в функции
widget_odnaknopka::action_head()
придётся поменять для другого внешнего вида кнопки (на данный момент, сайт предоставляет три варианта кнопок) и кодировки.
Есть еще один нехороший момент — скрипт (okx.xxx.js
) использует метод document.write()
для добавления кнопки в HTML-код, что может не работать, если HTML отдаётся как application/xhtml+xml
. Когда дойдут руки — перепишу весь скрипт