Закладки

Главные вкладки

Комментарии

Аватар пользователя Kaer 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 snegin 5 января 2014 в 16:23

Я создал файл 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>?>

Нажимаю на кнопку но ничего не работает!!

Аватар пользователя Kaer 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 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 } ?>