Володя · 18 января 2018, 18:13 примерно так $q = $modx->newQuery('msOrderProduct'); $q->innerJoin('msOrder', 'msOrder', "msOrder.id = msOrderProduct.order_id"); $q->where(array( 'msOrderProduct.product_id' => $product->id, 'msOrder.user_id' => $modx->user->id, 'msOrder.status' => 2, )); $view = (bool)$modx->getCount('msOrderProduct', $q); Вопросы / Проверить покупался товар юзером или нет. 7 +1 2
Василий Наумкин · 10 октября 2017, 12:39 Если покопаться в MODX API то можно научиться выводить любой ресурс в плагине на нужном событии: $modx->resource = $modx->getObject('modResource', $modx->getOption('site_start')); $modx->resource->set('content', $pdoTools->runSnippet('@FILE snippets/get_panel.php')); $modx->request->prepareResponse();Здесь, как видно, еще и замена контента на свой идёт, на лету. Можно так на лету и виртуальные ресурсы делать, со своими pagetitle и прочими свойствами. При желании, можно вообще весь сайт без ресурсов сделать =) Готовые решения / Одностраничники на базе MODx без контекстов 16 +5 6
Василий Наумкин · 10 декабря 2015, 07:26 У меня на сайте, например, бывают платные разделы. Чтобы добавить пользователю доступ в них при оплате, работает вот такой плагин: case 'OnWebPageInit': if ($uid = $modx->user->id) { if ($extended = $modx->user->Profile->get('extended')) { if (!empty($extended['updateGroups'])) { unset($_SESSION['modx.user.'.$modx->user->id.'.userGroupNames']); $extended['updateGroups'] = 0; $modx->user->Profile->set('extended', $extended); $modx->user->Profile->save(); $ctxQuery = $modx->newQuery('modContext'); $ctxQuery->select($modx->getSelectColumns('modContext', '', '', array('key'))); if ($ctxQuery->prepare() && $ctxQuery->stmt->execute()) { if ($contexts = $ctxQuery->stmt->fetchAll(PDO::FETCH_COLUMN)) { $serialized = serialize($contexts); $modx->exec("UPDATE {$modx->getTableName('modUser')} SET {$modx->escape('session_stale')} = {$modx->quote($serialized)}"); } } } } } break;Написан давно, работает без нареканий. Для разлогинивания заблокированных пользователей использую вот такой код в том же плагине: if ($modx->user->id) { if (!$modx->user->active || $modx->user->Profile->blocked) { $modx->runProcessor('security/logout'); $modx->sendRedirect('/'); } } Если это всё не то — прошу прощения. Новые дополнения и их версии / switchUser 13 +5 8
Мордынский Николай · 20 марта 2015, 17:32 Вот нашел решение // Try to find by email $modx->event->_output = $modx->getObjectGraph('modUser', '{"Profile":{},"UserSettings":{}}', array ('Profile.email' => $scriptProperties['username']));Сюда можно дописывать еще критерии поиска, можно хоть по дополнительным полям логиниться Плагин вешается на событие onUserNotFound Вопросы / Авторизация по email и номеру телефона 6 +1 6
Возможно ли реализовать возможность предоплаты за доставку на сайте? У меня Робокасса, у них вроде есть docs.robokassa.ru/ru/iframe
Редизайн сообщества На больших экранах основной текст статьи я бы сделал 18 px. Да и текст комментариев можно таким сделать. Для меня лично 16 — мелковато на больших экранах (в комментариях вообще 15 ...
MiniShop3 1.11.0 при клике на radio идет пересчет итоговой суммы в orderUI, в зависимости от способов(оплаты доставки) я так поняла. попробуй код запуска события поставить ниже чем orderUI, после
ImageOptimizer - WebP/AVIF и responsive <picture> для MODX 3 Дополнение доступно modstore.pro/packages/photos-and-files/imageoptimizer
Localizator3 для MODX 3: перевод полей и TV без отдельного context на язык, Vue 3 + PrimeV... Добавил localizator3_default_language
msInShopNotify Начиная с версии 3.0.0-beta добавлена поддержка MiniShop3 Минимальные требования: PHP 8.4 MODX 3.2 MiniShop3
MaxNotify Обновление 1.2.0-pl (03.07.2026) — добавлены уведомления о заявках FormIt через hook-сниппет `maxNotifyFormIt`; — добавлены уведомления о заявках SendIt через hook-...
[msBonus2] 1.3.0 Бонус-коды, уведомления о сгорании и совместимость с msMultiCurre... Да, планируется. Даже чуть больше, чем просто бонусная система)
Здесь, как видно, еще и замена контента на свой идёт, на лету.
Можно так на лету и виртуальные ресурсы делать, со своими pagetitle и прочими свойствами. При желании, можно вообще весь сайт без ресурсов сделать =)
Написан давно, работает без нареканий.
Для разлогинивания заблокированных пользователей использую вот такой код в том же плагине:
Если это всё не то — прошу прощения.
Сюда можно дописывать еще критерии поиска, можно хоть по дополнительным полям логиниться
Плагин вешается на событие onUserNotFound