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

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

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

52 ответов

63 просмотра

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 по большей части делает вызов н...

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

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

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

а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Эх кто-то пришел и весь праздник испортил :( You need complex FBX scene importing setup to change things on import? good luck with that. You need navigation and pathfinding? g...
Serg Gini
5
Какого хера? /Sources/App/Modules/User/Models/UserLinkApple.swift:21:20: warning: stored property '_id' of 'Sendable'-conforming class 'UserLinkApple' is mutable @ID(...
Alexander Sherbakov
14
Всем привет! Подскажите. Я написал приложение на Delphi 10.2 Tokyo под Windows 10. И передо мной стал вопрос о том чтобы сделать это приложение кроссплатформенным (под Linux и...
Дмитрий Завгородний
24
Привет всем. Подскажите где можно посмотреть, какая версия электрон, поддерживает версии windows? Некий changelog. Мне бы желательно, поддержку 7,8,10... latest, как понимаю и...
Anonym Squad
21
Почему стало ломаться на D11? "739002.86400000' is not a valid timestamp" function IncDateTime(aStamp:TTimeStamp;aKind:TTriggerKind;aInterval:Integer):TDateTime; //aStamp = 2...
Катерина Свиридова
8
У тебя в конфиге нигде нет deny all; или вообще любого deny?
Alexander Sherbakov
10
Портфолио: Зовут меня Александр, мне 36 лет. Город Пушкино. Общий рабочий стаж: ~14 лет Уровень квалификации: Senior Full-stack developer Где прочесть мой код? https://github....
Magic
10
Ребят, чет я уже не догоняю... Крч в коде на асм там происходит нечто вроде a+число (a+1, a+2 и т.д.). Но почему строка lea ecx, [edx+1] работает как a+1?? В edx берется адрес...
Alan 🔝 Бэброу
4
думаешь я не смогу также сделать? мне это просто не удобно
int 💳 𝙖𝙞𝙧 𝙗𝙞𝙜 𝙗𝙤𝙗 🔫 check bio / spam block / AFK / nohello.com / GMT+3
9
Карта сайта