snegin 4 января 2014 в 22:25 Как можно создать похожие закладки для анонимных пользователей! http://saransk.sutochno.ru/ Drupal7 Есть вопрос Решение проблем Блог Войдите или зарегистрируйтесь, чтобы отправлять комментарии
Kaer 5 января 2014 в 14:59 я такое делал так: добавляешь кнопку через шаблон что-то вроде <button class="favorite-button" title="Добавить в избранное" data-nid="<?= $node->nid ?>">Добавить в избранное</button> пишешь javascript который вешает куки типа такого: jQuery('.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('_')); }); пишешь крохотный модуль <?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;}?> и должно работать. Правда куки лучше выставить на побольше.
snegin 5 января 2014 в 16:23 Я создал файл mymodule.info С кодом: <?phpname = mymoduledescription = "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>?> Нажимаю на кнопку но ничего не работает!!
Kaer 5 января 2014 в 18:20 <?php и ?> - в .info и .js не нужны kroha_menu() переименуй в mymodule_menu() <button class="favorite-button" title="Добавить в избранное" data-nid="<?= $node->nid ?>">Добавить в избранное</button> нужно добавлять в вывод ноды(node.tpl.php), этот файл должен быть в теме. PHP теги тоже не нужны. Может для начала почитать азы про HTML и прочее?
snegin 5 января 2014 в 21:39 все равно не получается!!! кнопка выводится... щелкаю по ней и ничего не происходит!! <div id="node-<?php print $node->nid; ?>" class="node<?php if ($sticky) { print ' sticky'; } ?><?php if (!$status) { print ' node-unpublished'; } ?>"> <?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 } ?>
Комментарии
подозреваю рулес с чемт скрещивать придетсо
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 } ?>
за деньгу могу модуль написать, включишь и все заработает