Алексей Шумаев

Алексей Шумаев

Был в сети Вчера в 09:45
Заказы принимаю
Навскидку:
Товар в данном случае один — билет на концерт. Его опции — дата, название и т.д. Используем ms2.
А вот сами концерты можно вести в простом дополнении, его не долго сделать на modExtra: таблица + формы редактирования / добавления.
Выводим на фронт список концертов из своего компонента + форма заказа с опциями.
Если ассортимент продукции широкий и есть какое-то количество товаров со стабильным спросом, то почему нет? Хотя этот компонент — чисто маркетинговый, эффективность (конверсию) для конкретного сайта предсказать сложно, слишком от многих параметров она зависит. Думаю, что стоимость компонента по-любому отобьётся ).

Можно покрутить разные сочетания параметров формирования списков и задать глубину сбора данных в пару лет.
А если заказов пока не много, то можно пока сформировать списки руками, просто добавив нужные товары.
С ростом количества пользователей и заказов, эффективность должна возрастать.
Я тестировал на сайте с 10000 активных пользователях и около 25000 заказов за 1,5 года.
На очереди ещё один, но там тоже очень активная деятельность.
Народ ищет документацию в гугле, находит и получает, например: prntscr.com/nlexph
Для человека, кто не в теме, это означает, что фактически — modx мёртв, документация отсутствует.
Ну как-то не серьезно это выглядит, за modx обидно. Не долго же включить docs.modx.com и редирект на docs.modx.org поставить…
Выход один — не пытаться получать данные от скрипта, который не успевает их отдать в течении 1-10 секунд. О таймауте вообще речи не идёт — никто не будет ждать 30 секунд (бывают исключения, но это именно исключения).
Там, где требуются большие затраты времени на получение данных, скрипты нужно запускать в фоне (например cron по расписанию) и кэшировать у себя в базе данных или иным способом. Вот их потом и отдавать по ajax пользователям.
Я 2 варианта использую:
— сбор данных по cron и кэширование у себя
— если нужно отправить несколько запросов к сторонним серверам, то нужно это делать не одним ajax-запросом, а отдельными с таймаутом. По истечении таймаута каждого ajax-запроса что-то сообщать пользователю. Так или часть данных будет получена или хотя бы пользователь видеть какой-то результат запроса.
Вот так, например:
{set $list = 'msProducts' | snippet :[
    'parents' => 0,
    'limit' => 1,
    'loadModels' => 'mvtdocs',
    'innerJoin' => '{
        "ds": {
          "class": "mvtDocsResources",
          "on": "ds.resource_id = msProduct.id"
        }
      }',
    'select' => '{
        "msProduct": "msProduct.id",
        "ds": "ds.file_id"
      }',
    'setTotal'=>1,
 ]}
 
{$list}

Всего с документами: {'total' | placeholder}
Николай, глобально ты прав, но не совсем. Помимо описанной ТС проблемы, есть и другие случаи.
Например, пользователь может менять группу. А от группы зависит разное, например цена на сайте. Бывают таки ситуации, когда желательно бы принудительно завершить сессию.
Банально отвечать на однообразные вопросы «Я вот сейчас на сайте! Почему вы мне дали скидку, а я её не вижу?» — тяжко (то, что необходимость переавторизации везде прописана — «всем как всегда»). И вот тут-то как раз удобно при смене группы выбрасывать с морды заставляя перелогиниваться с новыми правами.