| Профиль | Блог (5) | Комментарии (58) | Закладки | Продукты |
Я реализовал так:
if($type == 'full'). т.е. она появляется на странице топика.
А теперь вопрос. Как добиться того, чтобы эта кнопка нормально появлялась на главной странице?
function vk_like_node_show_($Node,$node,$type,$return){
if($type == 'full'){
$CI =& get_instance();
$CI->_template(array('
<div id="vk_like"></div>
[removed]
VK.Widgets.Like("vk_like", {type: "full"});
[removed]
'),104);
}
}
Проблема заключается в том, на главной странице кнопка отображается криво. Поэтому я и ввел if($type == 'full'). т.е. она появляется на странице топика.
А теперь вопрос. Как добиться того, чтобы эта кнопка нормально появлялась на главной странице?


$node->extra = $node->extra. "code like blabla"
function like_node_show_($Node,$node,$type){ $node->like = 'Код кнопки'; }И прописать переменную {$node->like}. Открыть файл nodes/templates/node.tpl
в нем найти {$node->extra} и после вставить {$node->like}.
А если аляписто — можно просто хуком пристроится к коду тэгов.
function like_node_show_($Node,$node,$type){ $node->extra .= 'Код кнопки'; }в хуке пристраиваемся к коду tag
$node->extra .= 'Код кнопки';
что эквивалентно
$node->extra = $node->extra + 'Код кнопки';
<iframe src=«http: //www.facebook.com/plugins/like.php?href=
Сюда надо записать код который будет показывать ссылку на пост в котором находиться кнопка
&layout=standard&show;_faces
=false&width=450&action=like&colorscheme=light&height=35» scrolling=«no» frameborder=«0» style=«border:none; overflow:hidden; width:450px; height:35px;» allowTransparency=«true»></iframe>
Вот, пробую разные варианты, но пока результат отрицательный.
$like_code = '<iframe src=«http://www.facebook.com/plugins/like.php?href="' .$node->link. '"&layout=standard&show;_faces =false&width=450&action=like&colorscheme=light&height=35» scrolling=«no» frameborder=«0» style=«border:none; overflow:hidden; width:450px; height:35px;» allowTransparency=«true»></iframe>';$link = 'http://'.$Node->gears->global->url.'/'.$node->url_name.'-'.$node->id.'.html'; $node->extra .= $link;только обязательно сделайте position у вашей шестеренки больше (например 101), а шестеренки tags пропишите (по умолчанию у тэга нет этого параметра), например 100.
После этого сможете пристраиваться к extra еще и еще раз =)
function fblike_node_show_($Node,$node,$type){ $link = 'http://'.$Node->gears->global->url.'/'.$node->url_name.'-'.$node->id.'.html'; $like_code = '<iframe src=«http://www.facebook.com/plugins/like.php?href="'.$link.'"&layout=standard&show;_faces =false&width=450&action=like&colorscheme=light&height=35» scrolling=«no» frameborder=«0» style=«border:none; overflow:hidden; width:450px; height:35px;» allowTransparency=«true»></iframe>'; $node->extra .= $like_code; }С кнопками Facebook, проблем нет — все замечательно, а вот с Вконтакте, они липнут друг к другу.
Если на странице восемь постов, значит в первом посте будет восемь кнопок, а в остальных их не будет.
Посмотреть проблему можно здесь big-ok.ru.
Файлы шестеренки Like.
like.info
title = "like" description = "Index topics with like" core = 1.x version = 1.0 author = "Belyaev Dmitriy <admin@cogear.ru>" enabled = TRUE group = plugins_hooks.php
function like_node_show_($Node,$node,$type){ $link = 'http://'.$Node->gears->global->url.'/'.$node->url_name.'-'.$node->id.'.html'; $node->extra .= ' [removed][removed] [removed] VK.init({apiId: 1956031, onlyWidgets: true}); [removed] <div id="vk_like"></div> [removed] VK.Widgets.Like("vk_like", {type: "10"}); [removed] <iframe src="http://www.facebook.com/plugins/like.php?href='.$link.'&layout=standard&show;_faces =false&width=450&action=like&colorscheme=light&height=35" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:450px; height:35px;" allowTransparency="true"></iframe>'; }<div id="vk_like"></div>и туда пихает кнопочку, потом вторая кнопочка находит на странице опят первый<div id="vk_like"></div>и пихает туда вторую кнопочку и так далее.Тогда сделаем так:
Код:
<div id="vk_like"></div><code> <code> <div id="vk_like_<?=$node->id?>"></div>и код:
V K . W i d g e t s . L i k e ( " v k _ l i k e ". $node->id, { t y p e : " 1 0 " } ) ;Заменить на:
V K . W i d g e t s . L i k e ( " v k _ l i k e ", { t y p e : " 1 0 " } ) ;Пишу со смарта, так что пробуйте:)
Сделал:
function like_node_show_($Node,$node,$type){ $link = 'http://'.$Node->gears->global->url.'/'.$node->url_name.'-'.$node->id.'.html'; $title = $node->name; $description = $node->description; $node->extra .= ' < script type="text/javascript" src="http://userapi.com/js/api/openapi.js?20" >< /script > <div id="vk_like_'.$node->id.'"></div> < script type="text/javascript" > VK.init({apiId: 1955995, onlyWidgets: true}); VK.Widgets.Like("vk_like_'.$node->id.'", {type: "10", pageUrl: "'.$link.'", pageTitle: "'.$title.'", pageDescription: "'.$description.'"}); < /script > <iframe src="http://www.facebook.com/plugins/like.php?href='.$link.'&layout=standard&show;_faces =false&width=450&action=like&colorscheme=light&height=35" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:450px; height:35px;" allowTransparency="true"></iframe>'; }Осталось только понять, куда ссылка с Вконтакте выводиться. Чуть-чуть причесать и можно выкладывать в виде шестеренки.