Очередной заказчик захотел чтобы на сайте рядом с новостями были кнопки для добавления данной новости в ту или иную социальную сеть. Т.к. я не большой любитель различного рода социальных сетей, то для меня это было в новику, поэтому для начала полез искать готовые решения.
Под руку попались модули типа addtoany, addthis и им подобные сервисы. Вроде и красиво и перечень сервисов богатый, но не было в них самого главного. А именно одноклассников. А для меня это было обязательным условием. Да и своего рода зависимость получается от сторонних разработчиков. Оно с одной стороны хорошо, т.к. не надо заморачиваться над тем, поменялся ли алгоритм добавления материала в соц. сеть, т.к. за тебя это должен сделать выбранный сервис. А с другой стороны, должен, но не обязан и можно пролететь. Поэтому проще добавить самодельные кнопочки, тем более что особой сложности в этом нет.
Я делал новости на типе материала "Заметка" (story), поэтому добавил в свою тему файл node-story.tpl.php.
В самом начале данного файла пишем код:
<?php drupal_set_html_head('<script src="http://stg.odnoklassniki.ru/share/odkl_share.js" type="text/javascript" ></script>'); ?>
Этим кодом мы подгружаем ява-скрипт. Он нужен, как не сложно догадаться для одноклассников. На сколько я знаю функция drupal_add_js не работает для внешних скриптов, поэтому используем drupal_set_html_head.
Далее переходим непосредственно к размещению кнопок социальных сетей.
<?php $node_path = url($node->path,array('absolute'=>true)); $cache_path_to_theme = base_path() . path_to_theme(); ?> <div id="add-social"> <!--Livejournal--> <noindex> <a rel="nofollow" href="http://www.livejournal.com/update.bml?event=<?php echo $node_path; ?>&subject=<?php echo $node->title; ?>" target="_blank" title="Опубликовать в своем блоге livejournal.com"> <img src="<?php echo $cache_path_to_theme; ?>/images/icon_livejournal.gif" alt="Опубликовать в своем блоге livejournal.com"> </a> </noindex> <!--Twitter--> <noindex> <a rel="nofollow" target="_blank" href="http://twitter.com/home?status=RT @allexx_info <?php echo $node->title; ?>: <?php echo $node_path; ?>" title="Добавить в Twitter"> <img src="<?php echo $cache_path_to_theme; ?>/images/icon_twitter.gif" alt="Опубликовать в twitter.com"> </a> </noindex> <!--Vkontakte--> <noindex> <a href="http://vkontakte.ru/share.php?url=<?php echo $node_path; ?>" target="_blank" rel="nofollow"> <img src="<?php echo $cache_path_to_theme; ?>/images/icon_vkontakte.gif" title="Поделиться ВКонтакте"> </a> </noindex> <!--Facebook--> <noindex> <a rel="nofollow" target="_blank" href="http://www.facebook.com/sharer.php?u=<?php echo $node_path; ?>"> <img src="<?php echo $cache_path_to_theme; ?>/images/icon_facebook.gif" title="Поделиться в Facebook"> </a> </noindex> <!--Odnoklassniki--> <noindex> <a rel="nofollow" href="<?php echo $node_path; ?>" onclick="ODKL.Share(this);return false;" > <img src="<?php echo $cache_path_to_theme; ?>/images/icon_odnoklassniki.gif" title="Поделиться в Одноклассниках"> </a> </noindex> </div>
Мне для проекта необходимы были: Livejournal,Twitter,Facebook,Вконтакте и Одноклассники, поэтому именно эти кнопки и приведены в качестве примера. Остальные кнопки можно сделать по аналогии. Единственное замечание, не забудьте в коде для Твитера заменить значение @allexx_info на свое.
Полезно. Молодец.
Не уверен, что правильно понял: вторую часть кода вставляем также в node-story.tpl.php?
Да, все правильно. Туда же, в story.tpl.php, в то место где вы хотите видеть эти кнопки.
Спасибо, друг! Я тут уже всю голову сломал, думая как же попроще сделать закладки для друпала.
я вообще ничего не понял, сколько ни лазил в инете нифига ничего нет, может кто подскажет ссамого начала, с установки модуля или вообще без модуля?
Да в том то все и дело, что никакого дополнительного модуля устанавливать не надо. Нужно просто добавить в папку с вашей темой новый файл node-story.tpl.php (если кнопки делаете для типа материала Заметка). Код данного файла будет равен коду файла node.tpl.php (который уже есть в вашей теме) плюс мои вставки в то место, где хотите видеть эти кнопки.
Чегот не работает...
Все ставил в node-blog.tpl (нужно к блогу привязать)
Единственное что может быть - это кэш не обновили.
Заработало, то я немного забыл режим пхп включить)))
Правда вылезла иная лажа... по идее ведь должно автоматом брать адрес страницы... А все кнопки ставят просто адрес главной((( не пойму что за беда(
Беда судя по всему в первой строчке:
$node_path = url($node->path,array('absolute'=>true));
Надо посмотреть что хранится в переменной $node->path или вообще посмотреть что там в $node: print_r($node). На крайняк можно задействовать $PHP_SELF
а можно более подробно? Я пока не настолько хорошо знаю где что в друпале, и довольно слабо знаю пхп(
Если здесь идет зависимость от самого формирования адреса, то используется обычный пазауто, связанный с таксономией.
Напишите там, где у вас идет код php, после строчки
$node_path = url($node->path,array('absolute'=>true));
такие строки:
echo $node_path;
echo $node->path;
echo $PHP_SELF;
И посмотрите что там у вас появится на экране при выводе страницы. Вот оттуда и будете плясать. Нужный вам вариант адреса присваиваете переменной $node_path, которая у вас дальше встречается по тексту при формировании ссылок. Хотя по идее $node_path уже должна содержать в себе адрес с учетом пазауто, т.е. прежде всего просто выведите на экран содрежимое этой переменной и посмотрите что там.
Целостного решения так и не нашел, решил проблемку поставиви возле <?php echo $node_path;?> (выводит корень сайта - мой_сайт.ру) <?php print drupal_get_path_alias($_GET['q']); ?> - выводит остальную часть адреса. Таким вот макаром по кирпичику собрал весь адрес))) теперь буду искать вариант как вывести титл страницы в этих сообщениях)) Потому как тоже не работает ((( Вообще странно, у всего народа все ок, а у меня полный пиздец, извините (((
спасибо огромное за такой полезный материал.
есть один вопрос. Как добавить google+
Не проверял, но если просто тупо взять код который гугл предлагает и вставить, то не получится?
https://developers.google.com/+/plugins/+1button/
получилось. жаль что нет возможности менять вид самой кнопки
Спасибо за совет
Отправить комментарий