Евгений Шеронов
С нами с 20 мая 2015; Место в рейтинге пользователей: #31- Заметки 90
- Комментарии 51
6 часов назад
вот этот сниппет
require_once MODX_CORE_PATH . 'model/modx/modx.class.php';
$modx = new modX();
$modx->initialize('web');
$modx->getService...
Проблемы с отправкой писем статус заказа из minishop2 5
Вчера в 20:15
Хотел проверить еще раз, теперь все работает. Спасибо.
MiniShop3 1.0.0-alpha.4 — Большое обновление админки 24
05 января 2026, 14:53
Тоже не понял зачем эти сложности, всегда этот скрипт юзал.
Почему в новых версиях MODX не работает сброс пароля через MD5 и как восстановить доступ в manager 4
30 декабря 2025, 22:52
Почему-то прочитал это голосом комментатора из Дома 2… Только про Minishop 3!) Спасибо всем за вклад в развитие и, достаточно неплохие итоги года)
Итоги 2025 года на MODX.pro 3
27 декабря 2025, 16:41
MODX, как и любой основанный на PHP фреймворк пишет 500 ошибки в error_log. Никаких специальных настроек в нем нет. Все зависит от настроек хостинга\с...
Отладка 500 ошибки MODX 1
26 декабря 2025, 18:00
ух ты крутяк!
resComments — многоуровневые комментарии с пагинацией для ресурсов MODX3 2
24 декабря 2025, 22:11
Есть поле mail_smtp_user введи туда логин, если не сработает введи email. И не забудь в emailsender корректный email прописать.
Modx 2.8.8 еще подходит отправки почты через smtp.yandex.ru? 3
24 декабря 2025, 00:23
Нет, лайки всегда были привязаны ко времени публикации, чтобы лайками старых постов рейтинг не накручивали.
MiniShop3 - новый релиз. 1.0.0-alpha.2 15
Все верно. Из-за этого и была проблема. Дело в том, что $modx->regClientStartupScript() и подобные методы работают со свойствами самого $modx, а вот при сохранении кеша используются свойства самого ресурса. А так, как в отработанных уже после процессинга тегах выполняется типа $modx->regClientStartupScript() (который устанавливает свойства для $modx, но не устанавливает их для $modx->resource), то при генерации кеша документа этих скриптов в кеше просто нет. joxi.ru/4Ak3wb9tMX8nGA
Решение: пишем плагин на событие OnBeforeSaveWebPageCache, простейший вид:
И тогда при генерации кеша документа будут сохранены все скрипты. joxi.ru/LmGVQx0uRJN1Xr
При чем это будет выполняться только при первом заходе на страницу. Когда документ уже закеширован будет, это не будет выполняться.
UPD: Может даже имеет смысл это в ядро запулить (то есть код кешманагера поправить), так как очень похоже на багу самого MODX-а. Какая-то глупость в двух отдельных сущностях хранить эти переменные и создавать/получать в разных местах на разных этапах.
Понимаю что as 440x586 в &select=` для второго изображения нужно заменить на что то типа as 440x586_2, как это задать в &leftJoin=` не понимаю.
В файле core/components/minishop2/model/minishop2/msproductdata.class.php 48 строку, вот эту:
меняем на
После чего в таблицу базы ms2_product_options прекращают сохранятся дополнительные поля с пустыми значениями. И соответственно пропадают пустые опции в админке.
Точно гарантировать, что это не сломает ничего другого я не могу, но пока по всем моим тестам работает так как надо. Да и чисто технически хранить для каждого товара все его пустые доп. поля как-то не логично…
Допустим, у вас есть сниппет pdoResources на странице вида site.ru/catalog. Ссылки с заранее определенными способами фильтрации будут выглядеть примерно вот так:
site.ru/catalog?sortby=rating&dir=ASC
site.ru/catalog?sortby=pagetitle&dir=DESC
… и так далее.
Все, что идет после site.ru/ — это get-параметр ссылки и его нам необходимо перехватывать, чтобы отдавать сниппету, выводящему ресурсы.
Мы можем создать простой сниппет GET со следующим содержанием:
И вместе с данным сниппетом преобразовывать вывод ресурсов на странице примерно таким образом:
[[!pdoResources? &sortby=`[[!GET:default=`pagetitle`? &get=`sortby`]]` &sortdir=`[[!GET:default=`DESC`? &get=`dir`]]`]]
Минус данного решения в том, что пользователь может вбить свое значение в адрес ссылки, допустим: site.ru/catalog?sortby=TEST&dir=BANAN, в результате чего на странице сниппет вернет ошибку.
Поэтому, напишем свой сниппет pdoResourcesWithSort:
Вызывается как-то так: [[!pdoResourcesWithSort? &sortbyGet=`sortby` &sortdirGet=`dir`]]
— При регистрации через Login нужно заносить пользователя в определенную группу (Users).
— Выставить группе анонимных пользователей права Load only на все контексты, где нужно запрашивать авторизацию
— Добавить в системной настройке unauthorized_page (403 ошибка) айди страницы с формой авторизации
После чего всех неавторизованных пользователей, при запросе на закрытую страницу, будет перебрасывать на страницу авторизации.
//Примечание: для альтернативы, если не нужна переадресация, можно создать простой сниппет (допустим, getAccess) и вызывать его на каждой странице.
Сниппет getAccess:
— соответственно, нужно создать чанк с формой авторизации и обозначить для сниппета параметр &content, в котором будет храниться html-код.
Пример:
(как альтернатива, можно переписать строчку сниппета «return $content» на «return $modx->getChunk($content);» — в таком случае, при вызове в поле &content нужно будет указывать название чанка, который отобразится авторизованному пользователю).
Из минусов такого метода — поисковые системы проиндексируют кучу дублей одинаковых страниц с формой авторизации.
2. modstore.pro/packages/ecommerce/payandsee — может быть, это вам поможет? В противном случае — придется настраивать свои сниппеты, завязанные на extend-полях пользователя.
Инициализация сервера: ansible, установка MODX: Gitify, импорт настроек: Teleport. Импорт уже подготовленных чанков, tpl-ек занимает минуты, нет необходимости заниматься «клавадрочерством» с Ctrl+Tab (переключиться на фронтенд-вкладку), Ctrl/Cmd+R (обновить страницу), чтобы просмотреть результат — всё уже оттестированно на этапе вёрстки. Остаётся только настроить магию сниппетов и оформить Custom Forms. Дальше — оверлокинг с XDebug, debugParser, BloodLine и Chrome DevTools.