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

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

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

52 ответов

133 просмотра

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

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

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
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
Карта сайта