Закладки
4 января 2014 в 22:25
Как можно создать похожие закладки для анонимных пользователей! http://saransk.sutochno.ru/
- Блог
- Войдите или зарегистрируйтесь, чтобы отправлять комментарии
Как можно создать похожие закладки для анонимных пользователей! http://saransk.sutochno.ru/
Комментарии
подозреваю рулес с чемт скрещивать придетсо
flag + session_api
я такое делал так:
добавляешь кнопку через шаблон что-то вроде
пишешь javascript который вешает куки типа такого:
var $el = jQuery(e.target);
fav_nids = Cookies('fav_nids') ? Cookies('fav_nids').split('_') : [],
nid = $el.data('nid');
if($el.hasClass('active')) {
for (var i = 0, len = fav_nids.length; i < len; i++) {
if (fav_nids[i] == nid) fav_nids.splice(i, 1);
}
$el.removeClass('active');
$el.attr('title', 'Добавить в избранное');
} else {
fav_nids.push(nid);
$el.addClass('active');
$el.attr('title', 'Убрать из избранного');
}
Cookies('fav_nids', fav_nids.join('_'));
});
пишешь крохотный модуль
<?phpfunction kroha_menu() {
$items['favorites'] = array(
'title' => 'Избранные',
'page callback' => 'favorites_list',
'access callback' => TRUE,
);
}
function favorites_list() {
if (empty($_COOKIE['fav_nids'])) {
return 'Ваш список избранного шрифтов.';
}
$fav_nids = explode('_', $_COOKIE['fav_nids']);
$nods = array();
foreach ($fav_nids as $val) {
$nods[] = node_view(node_load($val), 'teaser');
}
return $nods;
}
?>
и должно работать. Правда куки лучше выставить на побольше.
Я создал файл mymodule.info
С кодом:
<?phpname = mymodule
description = "Filter the modules list."
core = 7.x?>
Затем файл mymodule.module
<?php function kroha_menu() {
$items['favorites'] = array(
'title' => 'Избранные',
'page callback' => 'favorites_list',
'access callback' => TRUE,
);
}
function favorites_list() {
if (empty($_COOKIE['fav_nids'])) {
return 'Ваш список избранного шрифтов.';
}
$fav_nids = explode('_', $_COOKIE['fav_nids']);
$nods = array();
foreach ($fav_nids as $val) {
$nods[] = node_view(node_load($val), 'teaser');
}
return $nods;
}
?>
Потом файл mymodule.js
<?phpjQuery('.favorite-button').click(function(e) {
var $el = jQuery(e.target);
fav_nids = Cookies('fav_nids') ? Cookies('fav_nids').split('_') : [],
nid = $el.data('nid');
if($el.hasClass('active')) {
for (var i = 0, len = fav_nids.length; i < len; i++) {
if (fav_nids[i] == nid) fav_nids.splice(i, 1);
}
$el.removeClass('active');
$el.attr('title', 'Добавить в избранное');
} else {
fav_nids.push(nid);
$el.addClass('active');
$el.attr('title', 'Убрать из избранного');
}
Cookies('fav_nids', fav_nids.join('_'));
});?>
Вывел в блоке форму -
<?php<button class="favorite-button" title="Добавить в избранное" data-nid="<?= $node->nid ?>">Добавить в избранное</button>?>
Нажимаю на кнопку но ничего не работает!!
<?php и ?> - в .info и .js не нужны
kroha_menu() переименуй в mymodule_menu()
<button class="favorite-button" title="Добавить в избранное" data-nid="<?= $node->nid ?>">Добавить в избранное</button>
нужно добавлять в вывод ноды(node.tpl.php), этот файл должен быть в теме. PHP теги тоже не нужны.
Может для начала почитать азы про HTML и прочее?
все равно не получается!!! кнопка выводится... щелкаю по ней и ничего не происходит!!
<?php //print $picture ?>
<?php if ($page == 0): ?>
<h2><a href="<?php print $node_url ?>" title="<?php print $title ?>"><?php print $title ?></a></h2>
<?php endif; ?>
<?php if ($submitted): ?>
<span class="submitted"><?php print $submitted; ?></span>
<?php endif; ?>
<div class="txt clear-block">
<?php hide($content['links']); hide($content['comments']); print render($content) ?>
</div>
<div class="clear-block">
<div class="links"><?php print render($content['links']) ?></div>
</div>
<button class="favorite-button" title="Добавить в избранное" data-nid="<?= $node->nid ?>">Добавить в избранное</button>
</div>
<?php if ($node->comment_count > 0 and $page) { ?><h2 class="page_subtitle"><?php print t('Комментарии') ?></h2><?php print render($content['comments']) ?><?php } ?>
за деньгу могу модуль написать, включишь и все заработает