Евгений Шеронов
С нами с 20 мая 2015; Место в рейтинге пользователей: #30- Заметки 90
- Комментарии 51
3 часа назад
За поддержку php 7.4 все ж спасибо! Как я писал в комментарии к прошлой заметке, я запустил mmxDatabase в связке с сайтом на modx 2.8.5, что оказалось...
mmxDatabase 1.2.0 1
Сегодня в 00:40
Если посетитель выбирает опции в фильтре и переходит в товар — все отрабатывает отлично. Но если затем он переходит между товарами через те же «похожи...
Как вывести похожие товары по списку опций? 13
Вчера в 23:01
я делаю связи и задача не в товаре а просто в каталоге вывести точки с цветом (hex) и я не понимаю как применить то что написали выше. Если не сложно,...
Множественный список цветов 9
Вчера в 17:14
Сразу же вводит в заблуждение выбор курьером/в пункт как в форме минишопа, так и на карте параллельно.
так не юзерфрендли ни разу
[msCdekWidget] Альтернативный калькулятор доставки СДЭК 20
Вчера в 14:11
Установил, наконец-то)) Все работает спасибо.
Новый тип дополнений: mmxDatabase и mmxForms 38
Вчера в 09:18
Примерно тоже самое, только при помощи mmxDatabase:
$id = $modx->getOption('id', $scriptProperties);
$category = $modx->getOption('category'...
Получение всех TV полей ресурса из конкретной категории и вывод в чанк 2
Вчера в 08:48
Собственно пока писал пост, пришла идея костыльного решения, отдельным выводом записать в плейсхолдер id отобранных товаров и их передать в фильтр и т...
mFilter2: Не работает фильтрация при нескольких значения where 1
04 мая 2024, 13:29
Здравствуйте. Статус заказа меняется на «Оплачено» после того как покупатель оплатил товар и произошёл редирект обратно сайт. Появились случаи когда п...
[mspSberbank] Оплата заказов miniShop2 через процессинг Сбербанка 108
03 мая 2024, 11:45
Всем привет! Подскажите пожалуйста а можно ли сделать фильтр в 2 уровня и как это сделать? Т.е. например мне нужно сделать: домен/бренд-из-сео-фильтра...
Анонс SeoFilter - ЧПУ+SEO для mFilter2 и не только 120
Все верно. Из-за этого и была проблема. Дело в том, что $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.