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

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

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

52 ответов

128 просмотров

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

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

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

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

30500 за редактор? )
Владимир
47
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
1
Он в одиночку это дело запилил или была какая-то команда?
Aquinary
12
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Всем привет, нужна как никогда, нужна помощь с IO в загрузчике. Пишу в code16 после установки сегментных регистров, пишу вывод символа. Пробовал 2 варианта: # 1 mov $0x0E, %a...
Shadow Akira
14
Карта сайта