171 похожих чатов

Всем привет. Подскажите, почему данные о просмотренных товарах могут не

записываться в сессию (или запишется 1 какой-нибудь и всё) ?

52 ответов

82 просмотра

https://modstore.pro/packages/ecommerce/looked

Дмитрий
нет

ну, тебе надо функцию "Вы смотрели такие то товары"?

Денис Усманов
https://modstore.pro/packages/ecommerce/looked

я обычно looked ставлю, проблем не замечал за ним

Дмитрий- Автор вопроса
Денис Усманов
ну, тебе надо функцию "Вы смотрели такие то товары...

Такая функция уже есть. Только данные о просмотренных товарах могут не записываться в сессию (или запишется 1 какой-нибудь и всё)

Дмитрий
Такая функция уже есть. Только данные о просмотре...

ну, у тебя как я понял "getviewed", он видимо тупит с записью, так?

Дмитрий
да

ну, а я предлагаю компонент выполняющий твою задачу, который таких проблем не имеет

Дмитрий
да

следовательно, попробуй заменить, или "getviewed" магию особенную имеет?

Дмитрий- Автор вопроса
Денис Усманов
следовательно, попробуй заменить, или "getviewed" ...

да вроде магии нет, но хочется понимать, почему не рабоатет)

Дмитрий
да вроде магии нет, но хочется понимать, почему не...

не ищешь лёгких путей?) показывай его код тогда, будем посмотреть

Дмитрий- Автор вопроса
Денис Усманов
не ищешь лёгких путей?) показывай его код тогда, б...

<?php $id = $modx->resource->id; $tpls = explode(',', $modx->getOption('ms2_template_product_default')); if (!isset($limit)) {$limit = 10;} if (!isset($tpl)) {$tpl = 'tpl.msProducts.row';} // Вносим ID просмотренных товаров if (in_array($modx->resource->template, $tpls)) { if (!isset($_SESSION['viewed'])) { $_SESSION['viewed'] = array($id); } else { if (in_array($id, $_SESSION['viewed'])) { $key = array_search($id, $_SESSION['viewed']); unset($_SESSION['viewed'][$key]); } if (count($_SESSION['viewed']) > $limit) { array_shift($_SESSION['viewed']); } $_SESSION['viewed'][] = $id; } } // Если указано действие returnViewed - выводим просмотренные товары if ($action == 'returnViewed') { $ids = array_reverse($_SESSION['viewed']); if (empty($ids)) {return;} $config = array( 'resources' => '-'.$modx->resource->id.','.implode(',', $ids) ,'parents' => -1 ,'tpl' => $tpl ,'limit' => $limit ,'includeContent' => 1 ); $config = array_merge($config, $scriptProperties); return $modx->runSnippet('msProducts', $config); }

Дмитрий- Автор вопроса

не знал, надо запомнить)

Дмитрий- Автор вопроса
Денис Усманов
{$limit = 10}; может так?

ну а как тогда лимит задавать при вызове getViewed ?

Дмитрий
<?php $id = $modx->resource->id; $tpls = explode('...

'parents' => -1 я бы так не писал, а написал бы 'parents' => 0

а) ща я в IDE закину тож

а, ну да, в принципе всё верно

Дмитрий- Автор вопроса
Денис Усманов
а, ну да, в принципе всё верно

хрень-какая то я хожу по товрам а в сессии пусто viewed

Дмитрий- Автор вопроса
Денис Усманов
а, ну да, в принципе всё верно

ms2_template_product_default шаблон в настрйоках правильно выставлен

Дмитрий- Автор вопроса
Денис Усманов
а, ну да, в принципе всё верно

может быть трабл если я его везде через ajaxSnippet вызываю?

Дмитрий
может быть трабл если я его везде через ajaxSnippe...

Ты же по сути в своём коде запускаешь msProducts, вот и перепиши его под запуск ajaxSnippet с использованием msProducts

Дмитрий
сложна(

// Если указано действие returnViewed - выводим просмотренные товары if ($action == 'returnViewed') { $ids = array_reverse($_SESSION['viewed']); if (empty($ids)) {return;} $config = array( 'snippet' => 'msProducts' ,'resources' => '-'.$modx->resource->id.','.implode(',', $ids) ,'parents' => -1 ,'tpl' => $tpl ,'limit' => $limit ,'includeContent' => 1 ); $config = array_merge($config, $scriptProperties); return $modx->runSnippet('ajaxSnippet', $config); }

Дмитрий- Автор вопроса

короче это ajaxSnippet тупит походу и не пишет в сессии

поэтому иди лучше помучай looked)

Дмитрий- Автор вопроса
Дмитрий
короче это ajaxSnippet тупит походу и не пишет в с...

я вернул как было изначально [[!getViewed:toPlaceholder=`viewOuter`? &action=`returnViewed` &tpl=`tpl.msProducts.row.custom` &includeThumbs=`medium` &limit=`12` &sortby=`RAND()` &templates=`6` ]] [[!+viewOuter:notempty=` <div class="push40"></div> <h2>Вы недавно просматривали</h2> <div class="catalog"> [[!+viewOuter]] </div> <div class="push20"></div> `]]

Дмитрий- Автор вопроса
Дмитрий
так работает

ты какой то велосипед делаешь) есть же готовый компонент под такую задачу)

Дмитрий- Автор вопроса
Дмитрий
да я понял, это не я делал)

исправь) я вот например, вообще не понял смысле впиливания AjaxSnippet

Дмитрий- Автор вопроса
Денис Усманов
исправь) я вот например, вообще не понял смысле вп...

да в приципе оно рабоатет, зачем ставить ещё один компонент

Дмитрий- Автор вопроса
Дмитрий
да в приципе оно рабоатет, зачем ставить ещё один ...

зато выяснил, что сессии через ajaxSnippet тупят

Дмитрий- Автор вопроса
Денис Усманов
исправь) я вот например, вообще не понял смысле вп...

вообще странно что не в куки пишет id просмотренных товаров а в сессию, нафига в сессиию... я бы в куки сделал

Дмитрий- Автор вопроса

да я понял уже, спасибо))))

Дмитрий- Автор вопроса

я смотрю он тоже в сессию пишет

Дмитрий- Автор вопроса

++

Дмитрий
я смотрю он тоже в сессию пишет

хм, я думал в куки 🤷‍♂️ не задавался этим вопросом

Дмитрий- Автор вопроса

не факт что если его вызвать через ajaxSnippet то не будет таких же проблем

Дмитрий- Автор вопроса
Денис Усманов
хм, я думал в куки 🤷‍♂️ не задавался этим вопросом

Параметры: &limit — Ограничение записи в *сессию*, по умолчанию 5

Дмитрий
не факт что если его вызвать через ajaxSnippet то ...

тебе вообще зачем в этот AjaxSnippet всё пихать то?)

Дмитрий- Автор вопроса

а что не лишнее вызывать через AjaxSnippet?

Дмитрий
а что не лишнее вызывать через AjaxSnippet?

зачем? AjaxSnippet по большей части делает вызов не кешируемым разве что вроде как

Дмитрий- Автор вопроса
Денис Усманов
зачем? AjaxSnippet по большей части делает вызов н...

в доке написано, Сниппет можно вызывать кэшированным.

Похожие вопросы

Обсуждают сегодня

А как старый хаскел с новым стыковать ? потому как тут работает https://play.haskell.org/saved/C3xpMzcd, а вот тут https://stepik.org/lesson/7602/step/9?unit=1473 нет ошибка C...
Fedor
131
что насчет пагинга? на осдеве непонятно(
Vi Chapmann 🪙
26
Вопрос я правильно понимаю что в коде newtype ArrowMap k v = ArrowMap { getArrowMap :: k -> Maybe v } getArrowMap есть функция типа k -> Maybe v, если да, то не понимаю задач...
Fedor
64
Ребят, что лучше для реверса: гидра или ида?
En Vind Av Sorg
26
Делаю велосипед логгер. К сообщению хочу прикрутить некоторую информацию, типа, кем отправлено, какой уровень, и всякое такое. И тут подумалось мне, почему бы не хранить весь...
Serjone
24
Как Вы считаете нормально ли в двадцатых годах 21 века в ВУЗах Российской Федерации обучать студентов работе с TASM? Не слишком ли это "архаично"? (Если оффтоп или флейм для э...
Spiker01
52
Комрады, хотел уточнить. Проперть в OnDestroy юнита-хозяина по-прежнему доступна? И еще уточнение: finalization юнита наступает раньше или позже OnDestroy?
Ed Doc
48
если загрузчик efi? если сама PML4 PDPT PDT PT лежит в неудобном для меня месте?
Vi Chapmann 🪙
8
Продолжая диалог про свифт в проде – сейчас возник вопрос в активном наборе бекендеров. В основном в нашей компании мы фанаты Java Spring и полностью ей довольны. Однако найм ...
Guseyn
27
Читаю сейчас [нет, уже больше не читаю!] курсовую о Булгакове, написанную, похоже, с помощью ChatGPT. Это удивительный психоделический опыт. Текст в основном написан в стиле б...
✨ Uni [🌊 В отпуске]
1
Карта сайта