Виджет "Недавно вы смотрели" 2.X

1614
Показывает список недавно просмотренного контента.
Отображает только заданный тип контента.
Компонент "Оригинальные тексты" | Виджет "Реавторизатор"
Комментарии (21)
Shuma 22 сентября 2016 в 17:54 +1
Интересно, а его легко допилить для компонента "Знакомства"?
Arguzov 22 сентября 2016 в 17:59 0
работает со стандартными типами контента, как там в знакомствах реализовано - неизвестно
SE7EN 22 сентября 2016 в 18:01 +2
Отображает только заданный тип контента.- это плохо, если б наоборот указывать из какого контента не показывать было бы лучше.
Но за виджет +
Arguzov 22 сентября 2016 в 18:06 +1
Можно поставить несколько виджетов с разным типом контента.
Хотя... Посмотрим по отзывам - если это востребовано, то сделаю обновление для нескольких типов контента в одном блоке
Dorimen 22 сентября 2016 в 18:24 +1
Это было бы востребовано больше ) Мне кажется.
MegaRostov 22 сентября 2016 в 18:37 +1
Думаю лучше будет когда на самом деле "Недавно вы смотрели" будут выводится со всех разделов.
Или вообще выбор в компоненте разделение кому как удобнее.
А есть компонент "Недавно просмотренные" для всех пользователей с выводом виджета на главную.
Все равно возьму. +++
MegaRostov 22 сентября 2016 в 20:01 0
А есть компонент "Недавно просмотренные" для всех пользователей с выводом виджета на главную.

Это был вопрос!, такой виджет мне бы не помешал..
SALIK 22 сентября 2016 в 19:48 0
Лучше для нескольких типов контента joke Тогда и мне пригодится =))
А за идею +++ Хороший виджет)))
Arguzov 22 сентября 2016 в 19:03 +2
Вот смотрите, к примеру будет в типа контента перемешано: объявления и допустим статьи. Мне кажется будет путаница. Лучше сделать 2 блока: просмотренные объявления и отдельно просмотренные статьи.
MegaRostov 22 сентября 2016 в 19:51 0
Да возможно вы и правы!!
MegaRostov 22 сентября 2016 в 19:59 0
А если в виджете сделать выбор какой контент показывать?
Так это же совсем будет ГУД.
к примеру:
В объявлениях - объявления, статьи
В новостях - статьи, новости, посты.
И так далее.
Alex 22 сентября 2016 в 20:02 0
Отлично. То что нужно было. Только почему то текст не обрезает на указанное число знаков.
Arguzov 23 сентября 2016 в 04:05 0
отправил обновление
Alex 23 сентября 2016 в 11:03 0
Обновился, теперь всё работает. Ставлю плюс.
GoodMade 23 сентября 2016 в 14:09 0
Я бы в виджете вывел множественный выбор типов контента.
GoodMade 23 сентября 2016 в 14:09 0
Вернее в настройках виджета.
Arguzov 23 сентября 2016 в 16:15 +2
в работе
MegaRostov 26 сентября 2016 в 22:02 0
Буду ждать обновления!
Arguzov 28 сентября 2016 в 10:46 +1
Обновление вышло и разослано, теперь множественный выбор контента!
скриншоты в каталоге обновлены
MegaRostov 6 октября 2016 в 08:10 0
Хороший компонент!
Вопрос Сможете или есть компонент "Недавно смотрели" для всех пользователей. Что смотрели пользователи на сайте.
С удовольствием приобрел бы.
Capitan 8 декабря 2019 в 22:43 0
Давно не пользовался. Установил и выдало ошибку
Notice: Undefined index: lvTime in //////system/widgets/lastvisited/widget.php on line 11 и 12 и 25
вот код
Код PHP:
  1. <?php
  2. class widgetLastvisited extends cmsWidget {
  3. public $is_cacheable = false;
  4.  
  5. public function run(){
  6.  
  7.  
  8. $op=$this->options;
  9. $opfields=array();
  10.  
  11. $arr=$_SESSION['lvTime'];
  12. $arrd=$_SESSION['lvData'];
  13.  
  14. //print_r($op);
  15. if ($arr) {
  16. $arr=cmsModel::yamlToArray($arr);
  17. $arrd=cmsModel::yamlToArray($arrd);
  18. //print_r($arrd);
  19. } else {
  20. $arr=array();
  21. $arrd=array();
  22. }
  23.  
  24. foreach($op['ctypes'] as $v) {
  25. $opfields[$v]=array('title'=>$op['title-'.$v],
  26. 'image'=>$op['image-'.$v],
  27. 'teaser'=>$op['teaser-'.$v]);
  28. }
  29. // print_r($opfields);
  30.  
  31. $core = cmsCore::getInstance();
  32.  
  33.  
  34. if ($core->controller == 'content'){
  35.  
  36. $uri_segs = explode('/', $core->uri);
  37.  
  38. $ctype_string = $uri_segs[0];
  39. $slug = !mb_strstr($core->uri, '.html') ? mb_substr($core->uri, mb_strlen($ctype_string)+1) : null;
  40.  
  41. $matches = array();
  42.  
  43. if (preg_match('/^([a-z0-9_]+)$/', $ctype_string, $matches)){
  44. $ctype_name = $matches[0];
  45. } else
  46. if (preg_match('/^([a-z0-9_]+)-([a-z0-9_]+)$/', $ctype_string, $matches)){
  47. $ctype_name = $matches[1];
  48. }
  49.  
  50. $model = cmsCore::getModel('content');
  51. $tree = $model->getContentTypes();
  52. $clist= array_collection_to_list($tree, 'name', 'title');
  53.  
  54. if (in_array($ctype_name,$op['ctypes']) ) {
  55.  
  56.  
  57.  
  58.  
  59. $slug = mb_substr($core->uri, mb_strlen($ctype_name)+1);
  60. $slug = mb_substr($slug,0,mb_strlen($slug)-5);
  61.  
  62. if ($slug) $a=$model->getItemByField('con_'.$ctype_name, 'slug', $slug);
  63.  
  64. if($a) {
  65. $arr[$ctype_name.$a['id']]=mktime();
  66.  
  67. $arrd[$ctype_name.$a['id']]=array_merge($a,array('visit'=>date('Y-m-d H:i:s',$arr[$ctype_name.$a['id']]),
  68. 'simage'=>cmsModel::yamlToArray($a[$opfields[$ctype_name]['image']]),
  69. 'steaser'=>$a[$opfields[$ctype_name]['teaser']],
  70. 'ctype'=>$ctype_name,
  71. 'ctitle'=>$clist[$ctype_name]
  72. ));
  73.  
  74.  
  75.  
  76. arsort($arr);
  77. $newarr=array_slice($arr,0,$op['limit'],true);
  78.  
  79. $_SESSION['lvTime']=cmsModel::arrayToYaml($newarr);
  80.  
  81. $neward=array();
  82. foreach($arr as $k=>$v) $neward[$k]=$arrd[$k];
  83.  
  84. $_SESSION['lvData']=cmsModel::arrayToYaml($neward);
  85. unset($neward[$ctype_name.$a['id']]);
  86. } else $neward=$arrd;
  87.  
  88.  
  89.  
  90.  
  91.  
  92. }
  93. }
  94.  
  95. if($style){
  96. $this->setTemplate('list_'.$style);
  97. } else {
  98. $this->setTemplate($this->tpl_body);
  99. }
  100. $neward=$neward ? $neward : $arrd;
  101.  
  102. return array(
  103. 'hide_except_title' => $hide_except_title,
  104. 'teaser_len' => $op['teaser_len'],
  105. 'title_field' => 'title',
  106. 'image_field' => 'simage',
  107. 'teaser_field' => 'steaser',
  108. 'is_show_details' => $op['show_details'],
  109. 'style' => $style,
  110. 'items' => $neward,
  111. 'show_ctitle' => $op['show_ctitle']
  112. );
  113.  
  114.  
  115.  
  116.  
  117. }
  118.  
  119. }
  120. ?>