Подскажите как можно вывести виджет "мне нравится" от вконтакта в тизерах? То есть есть список нод (тизерами) сформированный через виевс и хочется чтобы в этом списке (то есть на одной странице) в каждом тизере была кнопка "мне нравится". Естественно, чтобы эти кнопки относилась к каждой конкретной ноде.
Использую модуль vk_openapi
Вставляю вот такой код в node.tpl.php:
<?php if (!$page): ?>
<div id="vk_like"></div>
<script type="text/javascript">
window.onload = function () {
VK.init({apiId: 1862865, onlyWidgets: true});
VK.Widgets.Like('vk_like', {type: 'mini'}, <?php print $node->nid ?>);
}
</script>
<?php endif; ?>
видимо совсем не правильный, так как отображает кнопку только в первом тизере и не на саму ноду, а похоже на страницу списка
Комментарии
Может кто поможет за 500 рубликов
Во первых лучше выводить не тизеры во view, а поля, это быстрее.
Значение поля можно переписать нужным кодом(div c соответствующим id).
Далее, для вставки js есть api функция drupal_add_js(), в частности можно вставлять inline js.
Также ваш код из примера как раз и рассчитан на вставку одной кнопки... Вам надо перечислить все страницы в инициализации VK.Widgets.Like(), их url и.т.д.
Тогда уж так (без drupal_add_js() нагляднее)
<script type="text/javascript">
window.onload = function () {
VK.init({apiId: 1862865, onlyWidgets: true});
VK.Widgets.Like('vk_like_<?php print $nid ?>', {type: 'mini'}, <?php print $nid ?>);
}
</script>
И в header:
<script src="http://vkontakte.ru/js/api/openapi.js" type="text/javascript" charset="windows-1251"></script>
И будет скорее всего всё равно одна кнопка...
Да, так и есть, виджет работает только с определенной страницей.
то есть задача не имеет решения? я видел как в списке нод выводили кнопки "сохранить в контакте".
1. В page.tpl.php
<script type="text/javascript">
VK.init({
apiId: Твой АйДи,
onlyWidgets: true
});
</script>
2. В ноде-тпл-пхп:
<?php if ($node->teaser) : ?>
<div id="teaser-like-<?php print $node->nid;?>"></div>
<script type="text/javascript">
VK.Widgets.Like('teaser-like-<?php print $node->nid;?>',
{
pageTitle: '<?php print $node->title;?>',
pageUrl: '<?php print url('node/'. $node->nid, array('absolute' => TRUE));?>'
}, <?php print $node->nid;?>);
</script>
<?php endif; ?>
Можно добавить pageDescription, но я хз скока там макс длина и какие тэги разрешены.
наверное так:
<?php {
}?>
pageTitle: '<?php print $node->title;?>',
pageUrl: '<?php print url('node/'. $node->nid, array('absolute' => TRUE));?>',
pageDescription: '<?php print drupal_substr(filter_xss($node->teaser, array()), 0, 255);?>'
И как, заработало по вышеперведённому примеру?
Вообще говоря, насколько я понял, надо только 1 раз вызвать VK.Widgets.Like передав ей сформированный массив id, url и.т.п., тогда будет работать корректно, а так будет только в одном тизере кнопка...
вот вроде бы и работает, но значения с нуля идут и не совпадают с тем что внутри ноды.
То есть в тизере одно значение, в полной ноде другое.
вот этот код и в тизере и в полной ноде:
<script type="text/javascript">
VK.Widgets.Like('vk_like-<?php print $node->nid;?>', {type: "button"});
</script>
Не понял, что идёт с нуля и что не совпадает. Готовый HTML в студию
> вот этот код и в тизере и в полной ноде:
Зачем это? Я выше отписал как надо
у меня есть готовые ноды уже в которых люди голосовали (нажимали "мне нравится"). Вот для примера http://sushifan.ru/foto/foto-8080. Там уже 9 голосов. И хотелось чтобы в тизере этой ноды счет не шел с нуля и голоса не пропали. В полной ноде код:
<script type="text/javascript">
VK.Widgets.Like('teaser-like-<?php print $node->nid;?>', {type: "button"});
</script>
а вот список нод с вашим кодом http://sushifan.ru/test
Попробуйте убрать то что выделено жирным
VK.Widgets.Like('teaser-like-<?php print $node->nid;?>',
{
pageTitle: '<?php print $node->title;?>',
pageUrl: '<?php print url('node/'. $node->nid, array('absolute' => TRUE));?>'
}, <?php print $node->nid;?>);
Короче в ноде-тпл должно быть так:
<div id="teaser-like-<?php print $node->nid;?>"></div>
<script type="text/javascript">
VK.Widgets.Like('teaser-like-<?php print $node->nid;?>',
{
pageTitle: '<?php print $node->title;?>',
pageUrl: '<?php print url('node/'. $node->nid, array('absolute' => TRUE));?>'
});
</script>
<?php else: ?>
<div id="teaser-like-<?php print $node->nid;?>"></div>
<script type="text/javascript">
VK.Widgets.Like('teaser-like-<?php print $node->nid;?>', {type: "button"});
</script>
<?php endif; ?>
Ура-ура-ура! Скажите кошелек, немного вебмани на кефир перечислю в знак благодарности
Не подскажите еще как в тизере вывести мини формат кнопки? добавляю в код {type: "mini"} и уже не работает так как надо.
{
pageTitle: '<?php print $node->title;?>',
pageUrl: '<?php print url('node/'. $node->nid, array('absolute' => TRUE));?>',
type: 'mini'
});
PS> Кефир мне завтра пригодится ^_^
R629421240395
Обухов Никита, еще раз спасибо )
вот результат
Отличное решение. Спасибо
Доброго времени суток!
Уважаемые гуру, прошу помощи. Сделал всё так как написано, но кнопка у меня появляется только тогда, когда я перехожу сюда /comment/reply/175#comment-form До этого я её в статье не вижу.
Что я делаю не правильно?
В чём моя ошибка?
Что, никто не знает?
Ауу.... Кто нибудь подскажите в чём дело))
а как передать поле описание и изображение ?
Предлагаю попробовать мой модуль http://drupal.org/sandbox/AlexBukach/1845636, который вставляет кнопку 'Мне нравится' для ВК аналогично модулю Facebook Like Button.
При использовании модуля Views Infinite Scroll (подгрузка материала) не выводиться кнопка, работает только для первых трех тизеров, которые загружаются со страницей. В чем может быть проблема? Кто может подскажите, вот сайт http://esaro.ru
И кто-то может быть знает как вывести таким же способом комментарии в тизер?
Вывел так:
<?php if ($teaser) : ?>
VK.Widgets.Comments('teaser-comments-<?php print $node->nid;?>',
{
pageTitle: '<?php print $node->title;?>',
pageUrl: '<?php print url('node/'. $node->nid, array('absolute' => TRUE));?>',
});
<?php else: ?>
VK.Widgets.Comments('teaser-comments-<?php print $node->nid;?>', {width: "646", attach: "*"});
<?php endif; ?>
Но как быть с Views Infinite Scroll так и не решил.
Так никто и не поможет?