[looked] Компонент "Вы смотрели"

Компонент looked для MODX revolution даёт возможность добавить на сайт блок с последними просмотренными страницами (товарами) пользователем.

Looked имеет два сниппета:
  • addLooked — регистрация просмотров
  • looked — вывод на экран результатов, если есть

Регистрация просмотренных страниц сниппет addLooked

Регистрация просмотренных страниц.
  • Все просмотры сохраняются в сессию.
  • Возможность указать шаблоны
Параметры:
  • &limit — Ограничение записи в сессию, по умолчанию 5
  • &templates — ID шаблонов через запятую, где нужно учитывать просмотры. Если пусто — учитывать везде, при условии что сниппет [[addLooked]] вызывается в каждом шаблоне. Или разместите сниппет только в тех шаблонах, где нужен учёт. По умолчанию: пусто
Пример:
[[addLooked?
	&templates = `4`
]]

Вывод результатов, сниппет looked

Добавляет блок с просмотренными ресурсами. Looked является обёрткой для указанного сниппета в параметрах. Проверялось на msProducts и pdoResources.

  • Исключение текущей страницы из выдачи
  • По желанию может вернуть ID ресурсов
Параметры:
  • &snippet — Какой сниппет использовать для вывода результатов. По умолчанию: msProducts
  • &parents — По умолчанию: 0
  • &limit — Ограничение вывода просмотров на странице. По умолчанию: 5
  • &ids — Если «Да», сниппет вернёт ID просмотренных ресурсов. По умолчанию: Нет
  • &tplOuter — Чанк-обёртка всего блока. По умолчанию: lookedOuterTpl
  • &tpl — Чанк оформления каждого пункта. По умолчанию: lookedTpl
  • &sortby — Любое поле ресурса для сортировки. По умолчанию: пусто
  • &sortdir — Направление сортировки. По умолчанию: пусто
Так как сниппет не производит выборку, а просто выводит просмотренные товары, то &parents служит для переопределения этого параметра у используемого сниппета, где это — текущий ресурс, по умолчанию. Поэтому менять его значение не стоит.

Примеры:
[[!looked?
	&includeThumbs = `24x92`
]]
[[!looked?
        &snippet = `pdoResources`
        &includeTVs = `price, image`
]]
Заказывал клиент — делюсь с сообществом.

Компонент в modstore.
Посмотреть в работе можно здесь.
Марат Марабар
07 июля 2016, 20:00
modx.pro
14
9 266
+27
Поблагодарить автора Отправить деньги

Комментарии: 71

Марат Марабар
07 июля 2016, 23:01
+5
В обед выложил в modstor, до сих-пор не прошёл модерацию. Поэтому ссылки нет.
Воеводский Михаил
08 июля 2016, 00:14
+5
Только сегодня сделал аналог, завтра планировал отправить в магазин. Теперь уж смысла нет.

Молодец, опередил :)
    Yar
    Yar
    08 июля 2016, 09:32
    0
    Вот спасибо-хорошо!
      Alexander V
      08 июля 2016, 16:20
      0
      Эта штука базу не раздувает? Как удаляются данные?
        Марат Марабар
        08 июля 2016, 16:47
        +5
        Просмотры сохраняются в сессию, по умолчанию 5 ресурсов.
        Anton
        11 июля 2016, 14:52
        0
        Отличное дополнение. Спасибо автору! Только есть одно «но» сейчас — снипет looked не поддерживает работу с getProducts. Если в параметре &snippet указать getProducts то ничего не выводится. Если указывать getResources то работает. Просто я по умолчанию использую getProducts для вывода ресурсов.
          Марат Марабар
          11 июля 2016, 18:12
          +2
          Приведи пример как вызываешь.

          В принципе, если обязательно нужно использовать getProducts, то looked может вернуть только айди ресурсов
          [[getProducts?
          	...
          	...
          	&resources=`[[looked? &ids=`1`]]`
          	...
          ]]
            Anton
            11 июля 2016, 21:32
            -1
            [[looked? &tpl=`productTplGetResources` &tplOuter=`myLookedOuterTpl` &snippet=`getProducts` &limit=`3` &includeTVs=`1` &processTVs=`1`]] и так не работает. С getResources и pdoResources работает.
          Дмитрий
          Дмитрий
          19 июля 2016, 11:35
          0
          Работает ли с MIGx?
            Марат Марабар
            20 июля 2016, 22:49
            0
            Вывод просмотров через MIGX? Не проверял.
            Там у него много сниппетов, на сколько я помню (давно уже им не пользуюсь), — какой именно сниппет интересует?
            Михаил
            20 июля 2016, 18:06
            0
            Спасибо! Все работает. Вот только выводит текущий ресурс в просмотренных. Вроде написано «Исключение текущей страницы из выдачи»
            И выводит пять ресурсов, хотя в limit задаю другое

            [[!looked?
            &snippet=`msProducts`
            &tpl=`tpl.msProducts.row_my`
            &includeThumbs=`150x200`
            &limit=`12`
            ]]

              Марат Марабар
              20 июля 2016, 22:39
              0
              Можно обновляться.

              А по лимитам, смотри — сниппет addLooked тоже имеет ограничение на запись в сессию, по умолчанию: 5.
              Укажи ему сколько требуется, — должно быть всё норм.

              И да — спасибо за указание ошибок!
                Михаил
                21 июля 2016, 09:10
                0
                Спасибо! Все работает.
                  adminixi
                  26 сентября 2016, 02:38
                  +1
                  Добрый день!

                  Та же проблема с limit
                  [[addLooked?
                  &limit=`20`
                  &templates=`3`
                  ]]
                  [[!looked?
                  &limit=`20`
                  &tpl=`_tpl.msProducts.row`
                  ]]
                  Но выводит всего 4 последних просмотренных. Версия 1.0.0-pl.
              Семен Морозов
              25 августа 2016, 06:59
              0
              Здравствуйте!
              Делаю подключение &includeThumbs=`218x218` в чанке пытаюсь вывести [[+218x218]] и ничего не происходит.
              Забыл подключить &snippet=`msProducts` ) сорри

              Спасибо за компонент!
                Семен Морозов
                25 августа 2016, 12:26
                0
                При первом выводе, компонент показывает какие то рандомные товары, причем разным пользователям одни и те же. После чистки кэша и куки, начинает работать как надо. Как его заставить выводить товары только реально просмотренные конкретным пользователем, кто просматривает страницу?
                  Марат Марабар
                  25 августа 2016, 12:30
                  0
                  Сниппет нужно вызывать не кешиуемым, отредактировал топик.
                    Семен Морозов
                    25 августа 2016, 12:33
                    0
                    Ну я тоже так подумал, и поставил! в начале. Проблема осталась. Кэш сайта уже почистил всего. Что еще сделать?
                      Марат Марабар
                      25 августа 2016, 14:30
                      1
                      0
                      Не знаю. Я таких проблем не встречал, да и ты только об этом написал. Видимо у других тоже всё хорошо.
                      Даже не знаю чем помочь. Ссылка есть, чтоб посмотреть?
                      Марат Марабар
                      21 сентября 2016, 18:38
                      +1
                      Исправлено. Можно обновляться.
                      Семен Морозов
                      25 августа 2016, 12:48
                      0
                      Еще вопрос есть. Задача вывести блок Вы смотрел, только после просмтра юзером трех товаров, как это можно реализовать?
                        Марат Марабар
                        25 августа 2016, 14:29
                        0
                        Заказать разработку дополнительного функционала наверное.
                    Андрей
                    03 декабря 2016, 13:57
                    1
                    0
                    А как вывести количество просмотренных? Хочу сделать, чтобы число просмотренных отображалось.
                      Марат Марабар
                      03 декабря 2016, 19:19
                      0
                      Подсчёт количества не реализован, но можно добавить..., в принципе.
                      Только не понятно что считать — все просмотры, пока жива сессия или только те, которые записаны. Там же сколько укажешь записывать, столько и пишется — более старые просмотры заменяются новыми.
                        Андрей
                        03 декабря 2016, 19:22
                        0
                        По идее Вы правы, конечно правильнее все которые в сессии выводить, но отображать например, не все. Тогда смысла в том, что цифра будет стоять 36, а реально отобразиться в блоке только 5 или 10 нет…
                        и все таки — как вывести Общее число из сессии. на данном этапе это возможно или в принципе нет?
                          Марат Марабар
                          03 декабря 2016, 19:43
                          0
                          Добавь после этой строчки

                          $modx->toPlaceholder('count', count($arrIds), 'looked');
                          Количество, хранящееся в сессии будет в плейсхолдере
                          [[+looked.count]]
                          В любом месте страницы, где вызывается сниппет.

                          А я завтра обновлю компонент.
                            Андрей
                            03 декабря 2016, 19:58
                            0
                            Спасибо, все работает!
                      Александр
                      15 декабря 2016, 16:47
                      0
                      Может быть глупый вопрос но все же. Можно как то убить сессию при выходе с сайта или закрытия браузера? Что бы просмотренные страницы стерлись! Подскажите пожалуйста!
                        Alexey
                        31 декабря 2016, 13:33
                        0
                        В ff компонент отображает всё как надо, но в хроме и опере не кажет совсем (просто пустое место там где оно должно быть). Я везунчик?
                          Илья
                          10 января 2017, 15:27
                          +1
                          Здравствуйте!
                          После последнего обновления ms2Gallery looked перестал работать.
                          Вот такая связка выдаёт белый экран.
                          [[looked?
                          	&tpl=`lookedTplMy`
                          	&tplOuter=`lookedOuterTplMy`
                          	&limit=`4`
                          	&snippet=`ms2GalleryResources`
                          	&includeTVs=`price1`
                          	&includeThumbs = `190x143,255x191`
                          ]]
                          До этого всё работало…
                            Андрей
                            25 апреля 2017, 10:30
                            0
                            Добрый день.
                            Пытаюсь вывести количество просмотренных, но с условием, на пустоту. Почему -то постоянно выводит 0
                            [[+looked.count:!empty=`[[+looked.count]]`:else=`0`]]
                              Марат Марабар
                              25 апреля 2017, 18:05
                              0
                              А так?
                              [[+looked.count:notempty=`[[+looked.count]]`]]
                              А зачем делать проверку? Если нет просмотренных, Looked вообще ничего не выводит.
                                Андрей
                                25 апреля 2017, 18:10
                                0
                                Мне нужно вывести 0, если нет просмотренных. А то у меня количество просмотренных выводится в шапке сайта, в скобочках. И если там пусто, то получается () — некрасиво))
                                  Марат Марабар
                                  25 апреля 2017, 18:47
                                  0
                                  Попробуй так:
                                  [[+looked.count:default=`0`]]
                                    Андрей
                                    29 апреля 2017, 16:35
                                    0
                                    Такая запись также выводит постоянно ноль. (0)
                                      Марат Марабар
                                      02 мая 2017, 17:55
                                      0
                                      Проверил, вызов плейсхолдера без условий выводит 0, если нет просмотренных
                                      [[+looked.count]]
                                        Евгений
                                        23 июня 2017, 18:14
                                        0
                                        Не выводит — пустоту выдает.
                              Евгений
                              01 июня 2017, 19:10
                              0
                              Подскажите, пожалуйста, как можно реализовать, чтобы если счетчик равен или больше указанного лимита — подставлялся знак ">"?
                                ck
                                ck
                                06 июня 2017, 13:41
                                0
                                Пробую указать &limit=`6` (у обоих сниппетов). Даже в addLooked явно указываю в коде:
                                $limit = $modx->getOption('limit', $scriptProperties, '6');
                                Всё равно выводит только 5 товаров.

                                6 товаров вывелось только при таком вызове:
                                [[addLooked? limit=`7`]]
                                + обратил внимание, что looked не выводит первый просмотренный товар.
                                  Александр Мельник
                                  23 июня 2017, 19:24
                                  0
                                  У меня плейсхолдер [[+looked.count]] вообще отсутствует в списке при выводе без шаблона.
                                  И использование его в шаблоне соответственно всегда дает пустоту.
                                  Каким образом до него достучаться?
                                  Спасибо.
                                    Роман
                                    27 июля 2017, 19:14
                                    0
                                    Добрый день!

                                    Делаю такую конструкцию. Есть кнопка «Просмотренные товары» при клике на нее, снизу поднимается блок с товарами.

                                    Вопрос как сделать конструкцию, что бы если еще нет просмотренных товаров, то скрывать кнопку «Просмотренные товары»?

                                    Спасибо!
                                      Роман
                                      29 июля 2017, 08:55
                                      0
                                      Уточнение, кнопка будет отдельно стоять от основного блока (речь идет про верстку). Поставить её рядом нет возможности.
                                        Роман
                                        01 августа 2017, 13:05
                                        0
                                        Не чего лучше не придумал, как:
                                        [[looked:notempty=`[[looked? &tplOuter=`tplLookedButton`]]`]]
                                        Если у кого будет более быстрый вариант, пишите!
                                      Георгий Графов
                                      03 августа 2017, 17:08
                                      0
                                      День всем добрый кто нибудь пробовал запускать через Fenom?
                                      Конструкция ниже в упор не заводится…
                                      {$_modx->runSnippet('looked', [
                                          'limit' => '3',
                                          'includeThumbs' =>'200x200',
                                          'tpl'=>'lookedTpl',
                                          'snippet'=>'msProducts',
                                          'class'=>'msProducts',
                                      ])}

                                        Марат Марабар
                                        09 августа 2017, 11:48
                                        0
                                        Не заведётся — исправлю в ближайшее время.
                                        Роман
                                        29 августа 2017, 19:31
                                        0
                                        Обновился, посыпались ошибки:

                                        [2017-08-29 19:25:55] (ERROR @ /core/components/looked/model/looked/looked.class.php : 57) looked_err_empty_snippetmsProducts
                                        На что ругается, как исправить?
                                          Марат Марабар
                                          29 августа 2017, 21:52
                                          0
                                          Указанный сниппет не найден, в данном случае msProducts (по умолчанию).
                                            Роман
                                            30 августа 2017, 00:36
                                            0
                                            Не совсем понял, вызов:
                                            [[!looked?
                                            	&snippet=`pdoResources`
                                            	&includeTVs=`tplH1,tplImage`
                                            	&limit=`8`
                                            	&templates=`3,4`
                                            	&tplOuter=`tplLookedOuter`
                                            	&tpl=`tplLooked`
                                            ]]
                                              Марат Марабар
                                              30 августа 2017, 09:10
                                              0
                                              &templates — это параметр другого сниппета.
                                              А так всё правильно, у себя проверил — ошибок нет.
                                                Роман
                                                30 августа 2017, 10:09
                                                0
                                                Можно еще раз?

                                                Вызов (весит в подвале т.е. на всех страницах сайта)

                                                [[addLooked?
                                                	&templates=`3,4`
                                                	&limit=`6`
                                                ]]
                                                [[!looked?
                                                	&snippet=`pdoResources`
                                                	&includeTVs=`tplH1,tplImage`
                                                	&limit=`6`
                                                	&tplOuter=`tplLookedOuter`
                                                	&tpl=`tplLooked`
                                                ]]
                                                Ошибка появляется только тогда, когда я захожу в категорию. Когда внутри страницы, то ошибок нет. Подумал, что может в этом проблема? Перенес снипет addLooked в шаблоны 3,4 но ошибка все равно повторяется в категориях, как будто игнорируется параметр &snippet

                                                Ошибка та же:

                                                [2017-08-30 10:01:15] (ERROR @ /core/components/looked/model/looked/looked.class.php : 57) looked_err_empty_snippetmsProducts
                                                  Роман
                                                  30 августа 2017, 14:00
                                                  0
                                                  Обновился до 1.1.0-beta1

                                                  Ошибка окультурилась )))

                                                  [2017-08-30 13:33:38] (ERROR @ /core/components/looked/model/looked/looked.class.php : 57) Указанный сниппет не найден - msProducts
                                                    Марат Марабар
                                                    30 августа 2017, 14:05
                                                    1
                                                    0
                                                    Не могу я твою ошибку воссоздать — это, видимо, только у тебя проблема.
                                                    Если доступ пришлёшь на marat@marabar.ru, вечером гляну.
                                          Al Benedict
                                          25 декабря 2017, 16:43
                                          0
                                          Марат, спасибо за дополнение, отличное. Мог бы подсказать, пожалуйста, как зацепить и вывести миниатюру первого фото из ms2gallery? Используется на обычном сайте, без магазина. Пытаюсь так, но не работает:
                                          [[!looked?
                                                  &snippet=`pdoResources` 
                                          	&leftJoin=`{
                                          		"120x90": {"class":"msResourceFile","alias":"120x90", "on": "120x90.resource_id = modResource.id AND 120x90.path LIKE '%/120x90/' AND 120x90.rank=0"}
                                          	}`
                                          	&select=`{
                                          		"modResource":"*"
                                          		,"120x90":"120x90.url as 120x90"
                                          	}`
                                          ]]
                                          Спасибо заранее.
                                            Костромин Игорь
                                            26 апреля 2018, 23:29
                                            0
                                            Доброго времени суток, поддержка феном еще не появилась?
                                            Alex Panov
                                            27 апреля 2018, 13:49
                                            1
                                            0
                                            Добрый день!
                                            Спасибо за дополнение!
                                            Столкнулся с проблемой. На странице со списком статей делаю вызов:
                                            [[!pdoPage?
                                                 &element=`pdoResources`
                                                 &parents=`42`
                                                 &limit=`3`
                                                 &sortby=`publishedon`
                                                 &includeContent=`1`
                                                 &includeTVs=`tv.img_page`
                                                 &totalVar=`totalCount`
                                                 &tpl=`@INLINE <div class="news-box">
                                                    <em class="date-ago">{{+publishedon:dateAgo}}</em>
                                                    <h2>{{+pagetitle}}</h2>
                                                    <img class="img-thumb" src="{{+tv.tv.img_page}}" alt="{{+pagetitle}}">
                                                    {{+content:ellipsis=`500`}}
                                                    <div class="more"><a href="{{+uri}}">Подробнее...</a></div>
                                                    </div>`
                                                 &tplPageWrapper=`@INLINE <div class="pagination-block"><ul class="pagination">[[+prev]][[+pages]][[+next]]</ul></div>`
                                                 &tplPage=`@INLINE <li><a href="[[+uri]]">[[+pageNo]]</a></li>`
                                                 &tplPageActive=`@INLINE <li class="active"><a href="[[+uri]]">[[+pageNo]]</a></li>`
                                                 &tplPageFirst=``
                                                 &tplPageLast=``
                                                 &tplPagePrev=`@INLINE <li class="control"><a href="[[+uri]]" class="prev"></a></li>`
                                                 &tplPageNext=`@INLINE <li class="control"><a href="[[+uri]]" class="next"></a></li>`
                                                 &tplPageSkip=`@INLINE <li class="disabled"><span>...</span></li>`
                                                 &tplPageFirstEmpty=``
                                                 &tplPageLastEmpty=``
                                                 &tplPagePrevEmpty=`@INLINE <li class="disabled"><span class="prev"></span></li>`
                                                 &tplPageNextEmpty=`@INLINE <li class="disabled"><span class="next"></span></li>`
                                            ]]
                                            [[!+page.nav]]
                                            На этой же странице вызываю:
                                            [[!looked?
                                                	&snippet=`pdoResources`
                                                	&ids=`0`
                                                	&parents=`0`
                                                	&limit=`3`
                                                	&tplOuter=`@INLINE <div>[[+output]]</div>`
                                                	&tpl=`@INLINE <p><a href="{{+uri}}" class="ico-link">{{+pagetitle}}</a></p>`
                                            ]]
                                            Сниппет looked выводит просмотренные страницы в соответствии с параметром &tpl=`@INLINE … ` сниппета pdoResources, вызванного в pdoPage, но не &tpl=`@INLINE ... ` сниппета looked. То есть использует параметр &tpl из вызова другого сниппета. Если убрать обертку pdoPage у сниппета pdoResources — то выводится корректно.
                                            Что я делаю не так?
                                              Илья
                                              13 июня 2018, 15:41
                                              0
                                              Здравствуйте.

                                              &limit вызове обоих сниппетов прописал, но всё равно выводит только 4 товара, в сниппете addLooked тоже правил, результат не отличается…

                                              в чём может быть проблема?
                                                Илья
                                                13 июня 2018, 17:23
                                                0
                                                видимо дело было в кеше, всё работает.
                                                Леонид
                                                22 февраля 2019, 03:44
                                                0
                                                Приветствую. Очень интересный момент произошёл, вывел блоки просмотренных, нажал кнопку Х, всё удалилось, но вот после очистки кэша сайта, чистки кэша браузера блок не выводится, в логах сайта 0. Сталкивался ли кто?
                                                  Zulya
                                                  17 апреля 2019, 21:50
                                                  0
                                                  Здравствуйте!
                                                  Возможно исключить служебные страницы из Looked? Например, страница 404, контакты.
                                                  Я пробую так:
                                                  [[!addLooked?
                                                  &limit=`10`
                                                  &resources=`-598,-211,-703,-70,-685,-557,-558,-577,-596,-41`
                                                  ]]
                                                  
                                                  [[!looked?
                                                          &snippet = `pdoResources`
                                                          &tpl=`lookedTpl2`
                                                          &limit=`10`
                                                          &resources=`-598,-211,-703,-70,-685,-557,-558,-577,-596,-41`
                                                  ]]
                                                  Но, к сожалению, все равно выводит и страницу 404, и все без исключений.
                                                  Есть ли решение? Спасибо!
                                                    Александр
                                                    30 июля 2019, 12:56
                                                    0
                                                    Здравствуйте! А можно ли с помощью Looked посчитать клики пользователя по ссылкам на странице?
                                                    Есть страница (она одна), с помощью pdoResources выводятся документы: заголовок, комментариий, ссылка. И меня озадачили сделать учет клика по этим ссылкам пользователем, чтобы в личном кабинете можно было посмотреть, какие документы были изучены.
                                                      Сергей
                                                      16 сентября 2021, 22:51
                                                      0
                                                      Доброго! А компонент вообще работает? у меня проблема с выводом цены и фото товара. Выводит данные товара в котором находимся.
                                                      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
                                                      71