Последние просмотренные товары. Ищу лучший способ

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

Аватар пользователя volocuga volocuga 10 января 2010 в 14:38

Нужен блок с последними просмотренными товарами.

Есть такой модулёк http://www.ubercart.org/forum/support/4357/recently_viewed_products_list

Не хочется ставить доп.модуль,верю,что можно реализовать вьюсам (всё равно уже стоят)

Я пробовал через вид "Access log",но там недоступно поле вывода ССК поля,а мне позарез нужна картинка

Вот вид:

<?php
$view 
= new view;
$view->name 'recently_viewed';
$view->description 'Shows Recently Viewed Nodes';
$view->tag 'recentlyviewed';
$view->view_php '';
$view->base_table 'accesslog';
$view->is_cacheable FALSE;
$view->api_version 2;
$view->disabled FALSE;
$handler $view->new_display('default''Recently Viewed''default');
$handler->override_option('relationships', array(
  
'uid' => array(
    
'label' => 'uid',
    
'required' => 0,
    
'id' => 'uid',
    
'table' => 'accesslog',
    
'field' => 'uid',
    
'relationship' => 'none',
  ),
));
$handler->override_option('fields', array(
  
'title' => array(
    
'label' => '',
    
'display_as_link' => 1,
    
'exclude' => 0,
    
'id' => 'title',
    
'table' => 'accesslog',
    
'field' => 'title',
    
'relationship' => 'none',
  ),
));
$handler->override_option('sorts', array(
  
'timestamp' => array(
    
'order' => 'DESC',
    
'id' => 'timestamp',
    
'table' => 'accesslog',
    
'field' => 'timestamp',
    
'relationship' => 'none',
  ),
));
$handler->override_option('filters', array(
  
'path' => array(
    
'operator' => 'contains',
    
'value' => 'node',
    
'group' => '0',
    
'exposed' => FALSE,
    
'expose' => array(
      
'operator' => FALSE,
      
'label' => '',
    ),
    
'case' => 1,
    
'id' => 'path',
    
'table' => 'accesslog',
    
'field' => 'path',
    
'relationship' => 'none',
  ),
  
'uid_current' => array(
    
'operator' => '=',
    
'value' => 1,
    
'group' => '0',
    
'exposed' => FALSE,
    
'expose' => array(
      
'operator' => FALSE,
      
'label' => '',
    ),
    
'id' => 'uid_current',
    
'table' => 'users',
    
'field' => 'uid_current',
    
'relationship' => 'uid',
  ),
));
$handler->override_option('access', array(
  
'type' => 'none',
));
$handler->override_option('cache', array(
  
'type' => 'none',
));
$handler->override_option('title''Recently Viewed');
$handler->override_option('empty''No pages have been viewed since this feature has been enabled.');
$handler->override_option('empty_format''2');
$handler->override_option('distinct'1);
$handler->override_option('style_options', array(
  
'grouping' => '',
));
$handler $view->new_display('block''Block''block_1');
$handler->override_option('block_description''Recently Viewed');
$handler->override_option('block_caching', -1);

?>

Кто что отсоветует?

Комментарии

Аватар пользователя kyky kyky 10 января 2010 в 15:07

К чему эти горы кода?
Что мешает завести в сессии массив, и добавлять туда/считывать оттуда ссылки на ноды?
При загрузке ноды проверяется, есть ли ссылка на нее в этом массиве, и если нет -- добавляется.
Потом создаете сблок с похапе-сниппетом (или дописываете код в шаблоне), который читает из сессии массив и выводит список ссылок. Усё. Никаких запросов к базе.

Аватар пользователя Dan Dan 10 января 2010 в 20:46

kyky описал очень хорошее решение для вас. объём кода будет небольшой, запросов к БД не будет. я бы даже сказал идеальное решение.

Аватар пользователя volocuga volocuga 10 января 2010 в 23:24

Хорошее решение для меня - копи/паст готового.А так это пустая болтовня про сессии,массивы и проч.Я не программер и не собираюсь им быть.Собствено,создавая топик,подразумевалось,что найдётся именно лучшее из готового.
Ладно,поставлю модулёк Smile