26 августа 2021, 12:29 В случае с уникальными данными (что бывает не очень часто) будет добавляться по одной записи в этой таблице, в то время как в варианте с сессиями набор свойств будет дублироваться в сессии каждого пользователя который зашел на страницу. То есть вариант с сессиями увеличивает размер базы быстрее, но, конечно, как вы правильно упомянули, там есть механизмы очистки. Для разработчиков / Почему AjaxForm использует сессии? 23 0
07 августа 2021, 18:37 Можно сохранять настройки вызова AjaxForm в таблицу такой структуры CREATE TABLE `modx_ajax_form_properties` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `hash` varchar(32) NOT NULL, `properties` json NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `hash` (`hash`) )В коде AjaxForm меняем логику генерации хеша: ksort($scriptProperties); $hash = md5(http_build_query($scriptProperties));и потом добавляем новую запись в базу если такого хеша еще нет. При обработке запроса AjaxForm берем данные по хешу из базы а не из сессии. Для разработчиков / Почему AjaxForm использует сессии? 23 0
11 февраля 2019, 17:14 Если используется хук FormItSaveForm, то можно обойтись без лишнего сниппета: {foreach $_pls['savedForm.values'] | json_decode as $label => $value} {$label}: {$value | e} {/foreach} Готовые решения / Хватить это терпеть! Или зачем столько чанков в FormIt!? 21 +1
27 декабря 2015, 20:25 joinSequenceБыло бы неплохо добавить туда же tvsJoin или всегда включать их первыми, потому что сейчас, если в одном из видов join-а (или только в left join до этого обновления) понадобится значение TV, join для этого TV-параметра придется дублировать самостоятельно, то есть писать &leftJoin=`[{"class": "modTemplateVarResource", "alias": "CountryTv", "on": "modResource.id = CountryTv.contentid AND CountryTv.tmplvarid = 15"}, {"class": "modResource", "alias": "CountryResource", "on": "CountryResource.id = CountryTv.value"}]`вместо &leftJoin=`[{"class": "modResource", "alias": "CountryResource", "on": "CountryResource.id = TVcountry.value"}]` Новые дополнения и их версии / [pdoTools] Версия 2.2 c модификаторами Fenom 39 0
06 апреля 2015, 23:23 Могу предположить, что причина может быть в неправильном порядке вызова хуков. Вот демка с модифицированным сниппетом FormItSaveForm, пробуйте пока она жива: s1509.h3.modhost.pro/manager/ s1509 / 721QTQutryPt Готовые решения / Сохранение полей формы в новой версии FormIt 2.2.2 30 +1
06 апреля 2015, 13:44 Если применить изменения, то можно будет использовать в шаблоне письма плейсхолдеры [[+savedForm.*]] с полями сохраненной формы (например, [[+savedForm.id]] для ID заявки). Готовые решения / Сохранение полей формы в новой версии FormIt 2.2.2 30 +1
04 апреля 2015, 14:53 Повторюсь еще раз — эти правки всего лишь заменяют фатальную ошибку нефатальной, всегда необходимо находить безошибочное решение :) Готовые решения / Сохранение полей формы в новой версии FormIt 2.2.2 30 0
02 апреля 2015, 14:02 Осталось только удалить issue чтобы не шокировать разработчиков FormIt :) Готовые решения / Сохранение полей формы в новой версии FormIt 2.2.2 30 0
02 апреля 2015, 11:05 Да, все верно. Готовые решения / Сохранение полей формы в новой версии FormIt 2.2.2 30 0
02 апреля 2015, 03:16 Правки FormItSaveForm похоже были первоапрельской шуткой — хорошая попытка заменить Fatal error на Notice (Trying to get property of non-object). Чтобы все работало правильно, AjaxForm должен подменять $modx->resource, иначе не будут нормально (правильно) работать любые хуки FormIt, которые зависят от текущей страницы ($modx->resource), на которой находится форма. Готовые решения / Сохранение полей формы в новой версии FormIt 2.2.2 30 +1
29 сентября 2014, 16:34 Я это и подразумевал — если удалить связь с соцсетью, то это никак не повлияет на дальнейшую авторизацию. Поэтому если, допустим, добавить поле blocked в haUserService, то можно будет запретить авторизацию для конкретного аккаунта из соцсети, который ранее был авторизован. Но вопрос в том — нужен ли такой функционал? :) Новые дополнения и их версии / [HybridAuth] Версия 0.9.0 с таблицей провайдеров 10 0
29 сентября 2014, 15:47 Я думал насчет этого тоже, но мне кажется просто удаление здесь не подойдет. Может есть смысл добавить возможность блокировать учетную запись, чтобы пользователь больше не мог авторизироваться через заблокированный соц. аккаунт? Новые дополнения и их версии / [HybridAuth] Версия 0.9.0 с таблицей провайдеров 10 0
05 июля 2014, 00:41 Это JS методы, которые отвечают за установку/чтение значений из адресной строки: github.com/bezumkin/mSearch2/blob/master/assets/components/msearch2/js/web/default.js#L475 Поисковый запрос на сервер и так отправляется методом POST. Или что вы имеете в виду? Вопросы / mFilter2 - как изменить урл? 8 +1
16 июня 2014, 12:29 Копать надо в сторону модификации mSearch2.Hash.get/mSearch2.Hash.set. Вопросы / mFilter2 - как изменить урл? 8 0
15 июня 2014, 16:14 Чтобы открыть окно, надо на ссылки авторизации повесить обработчик такого вида: $('.ha-icon').on('click', function () { window.open(this.href, 'Auth', 'width=600,height=600'); return false; });Единственный момент — после авторизации (или отказа от авторизации) произойдет редирект и целевая страница откроется в этом новом окне. Чтобы предотвратить это, необходимо в код компонента добавить второй режим работы (или воспользоваться другими способами), который будет выводить на странице код: window.close(); window.opener.location.reload();Этот код закроет попап и обновит страницу, на которой находился пользователь. Вопросы / Авторизация HybridAuth во всплывающем окне 7 +1
04 июня 2014, 17:35 Да, там не настроены методы для оплаты online, по идее редирект будет отрабатывать как надо. Вопросы / Переход на оплату мимо корзины 5 0
04 июня 2014, 17:07 Набросал схематический вариант, посмотреть можно здесь: s5885.test.modx.pro/index.php?id=5 (доступ s5885/VPdm-g7Y6zKf), плагин QuickOrder. Код плагина: <?php $context = $modx->context->get('key'); if ($context == 'mgr' || empty($_POST['quick_order']) || empty($_POST['id']) || empty($_POST['customer'])) { return; } /** * @var miniShop2 $miniShop2 */ $miniShop2 = $modx->getService('minishop2'); $miniShop2->initialize($context, array( 'json_response' => false, )); if (!($miniShop2 instanceof miniShop2)) { return; } $_POST['customer'] = array_merge(array( 'delivery' => 1, 'payment' => 1, ), $_POST['customer']); foreach (array('email', 'phone', 'delivery', 'payment') as $field) { $response = $miniShop2->order->add($field, $modx->getOption($field, $_POST['customer'], '')); if (empty($response['success'])) { return; } } $response = $miniShop2->cart->clean(); if (empty($response['success'])) { return; } $response = $miniShop2->cart->add($_POST['id'], $modx->getOption('count', $_POST, 1), $modx->getOption('options', $_POST, array())); if (empty($response['success'])) { return; } $miniShop2->order->submit(); $modx->sendRedirect($modx->makeUrl($modx->resource->get('id'))); Вопросы / Переход на оплату мимо корзины 5 0 1
04 июня 2014, 00:32 Теоретически это возможно, только для осуществления заказа обязательно нужен email, соответственно для неавторизированных пользователей необходимо придумать, чем его заменить :) Вопросы / Переход на оплату мимо корзины 5 0
03 июня 2014, 18:02 В родительском окне создать функцию, допустим showProduct. В iframe к ней можно будет получить доступ через window.parent.showProduct(), в функцию можно будет передать все нужные данные о товаре. Вопросы / Передать данные из iframe в родительское окно 3 0
03 июня 2014, 17:57 Скрипты называются CSS Inliner. Есть разные библиотеки, например такая. Вопросы / Автоматическая обертка тегов в css 2 +1
Возможно ли реализовать возможность предоплаты за доставку на сайте? Так ради этого мне и нужно это все, чтобы клиент платил сразу при оформлении заказа, чтобы избавить себя от мусорных заявок (когда человек оставляет заявку, а предоплату делать не ...
Редизайн сообщества На больших экранах основной текст статьи я бы сделал 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... Да, планируется. Даже чуть больше, чем просто бонусная система)
В коде AjaxForm меняем логику генерации хеша:
и потом добавляем новую запись в базу если такого хеша еще нет. При обработке запроса AjaxForm берем данные по хешу из базы а не из сессии.
вместо
s1509.h3.modhost.pro/manager/
s1509 / 721QTQutryPt
Поисковый запрос на сервер и так отправляется методом POST. Или что вы имеете в виду?
Единственный момент — после авторизации (или отказа от авторизации) произойдет редирект и целевая страница откроется в этом новом окне. Чтобы предотвратить это, необходимо в код компонента добавить второй режим работы (или воспользоваться другими способами), который будет выводить на странице код:
Этот код закроет попап и обновит страницу, на которой находился пользователь.
Код плагина: