Mike
С нами с 13 октября 2016; Место в рейтинге пользователей: #1482MyFavorites
MyFavorites – компонент, который позволяет добавить на сайт списки избранного. Основной упор сделан на работу с анонимными пользователями, аналитикой и защитой от ботов.
Основные возможности компонента
Основные возможности компонента
- Создание различных списков избранного.
- Работа как с анонимными пользователями, так и только с зарегистрированными.
- Пользовательские списки избранного (пользователь может сам создавать/переименовывать и удалять свои списки).
- Очистка сессий сайта и удаление кук пользователем не влияют на список избранного у анонимных пользователей.
- Идентификация анонимного пользователя и, как следствие, его списка избранного, посетившего сайт с разных браузеров (метод не срабатывает во всех 100% случаев. На сайте должна быть подключена Google Analytics или Яндекс.Метрика).
- Привязка списка избранного анонимного пользователя к зарегистрированному пользователю при его авторизации или создании заказа на сайте.
- Синхронизация избранного на разных устройствах/браузерах, если ранее не было определено, что они принадлежат одному и тому же пользователю.
- Передача данных о событиях добавления/удаления и очистки списка избранного в Google Analytics и Яндекс.Метрика.
- Черные списки IP.
- Защита от CSRF-атаки.
- Защита с помощью reCAPTCHA 3.
- Лимит на запросы для анонимных и зарегистрированных пользователей.
- Уведомление на Email о подозрительной активности пользователя.
- Доступ в админке сайта к информации о пользователях, их списках избранного и активности.
- Экспорт информации о пользователях и избранном в CSV, XLSX и ODS.
- Корректная работа с Cloudflare.
- Быстрая кастомизация стилей через CSS переменные.
- Возможность подписываться на JS события компонента для кастомизации его работы.
- Нативный JavaScript.
[FetchIt] - Форма с валидацией номера телефона и выбором страны
Привет форум!
Решил раскрыть такой кейс, как форма с полем ввода номера телефона, ведь с такой задачей разработчик сталкивается частенько. Она далеко непростая и имеет подводные камни. Так давайте же нырнём и первое, что нужно сделать — это разбить её на подзадачи.

Решил раскрыть такой кейс, как форма с полем ввода номера телефона, ведь с такой задачей разработчик сталкивается частенько. Она далеко непростая и имеет подводные камни. Так давайте же нырнём и первое, что нужно сделать — это разбить её на подзадачи.
- Валидация: Тут пока всё понятно, нам по хорошему нужно валидировать номер телефона.
- Форматирование: А с этим пунктом веселее, т.к. пользователи могут писать номер телефона в разных форматах: 8 *** *** ** **, +7 ***-***-**-** +7 (***) *******, 8 (***) *** **-** и еще 100500 вариантов.
- Разные страны: А теперь всё серьезнее, дело в том, что разные страны это разное форматирование и соответственно разная валидация.

LocateMap - местоположение пользователя и его адрес
Компонент автоматически определяет координаты пользователя по API браузера, и если координаты не определены, то получает координаты из сервиса DaData.
Демонстрация (в правом углу появиться ваш адрес)
Или, если запретили определения местоположения, можете самостоятельно выбрать точку на карте.
Desktop

Демонстрация (в правом углу появиться ваш адрес)
Или, если запретили определения местоположения, можете самостоятельно выбрать точку на карте.
Desktop

Еще немного про сессии MODX, компонент smartSessions
Всем привет!
Небольшая предыстория
Когда я на свой VPS сервер закинул очередной более-менее крупный сайт (в базе около 25 тыс. товаров), у меня начались проблемы с нехваткой памяти, mysql ее нещадно отъедал.
В процессе оптимизации я начал понимать, что у половины сайтов в базе большую часть объема занимает пресловутая таблица modx_sessions, где, как известно, лежат сессии посетителей.
Но… почему? У сайта посещаемость 150-200 человек в сутки, сессии хранятся 7 дней (да, я проверил, они действительно очищаются), но в таблице почему-то 200000 записей, хотя по логике вещей должно быть 200*7=1400+. Реальность расходится с теорией не на 5-10%, а в десятки раз!
В итоге таблица весит полгигабайта, сайтов штук 10, каждому дай памяти, вот VPS и падает периодически… непорядок!
Небольшая предыстория
Когда я на свой VPS сервер закинул очередной более-менее крупный сайт (в базе около 25 тыс. товаров), у меня начались проблемы с нехваткой памяти, mysql ее нещадно отъедал.
В процессе оптимизации я начал понимать, что у половины сайтов в базе большую часть объема занимает пресловутая таблица modx_sessions, где, как известно, лежат сессии посетителей.
Но… почему? У сайта посещаемость 150-200 человек в сутки, сессии хранятся 7 дней (да, я проверил, они действительно очищаются), но в таблице почему-то 200000 записей, хотя по логике вещей должно быть 200*7=1400+. Реальность расходится с теорией не на 5-10%, а в десятки раз!
В итоге таблица весит полгигабайта, сайтов штук 10, каждому дай памяти, вот VPS и падает периодически… непорядок!
[miniShop2] Группируем поля на вкладке "Свойства товара"
Всем привет, небольшая инструкция про кастомизацию вкладки «Свойства товара» у miniShop2.
Делаем стоимость доставки у заказа в админке редактируемым полем
Всем привет!
Возникла задача, сделать поле стоимости доставки у заказа в админке редактируемым вручную.
Я, честно говоря, до сих пор не понимаю почему это не сделано из коробки — просто нет никакой возможности поменять стоимость доставки уже сделанного заказа из админки. Я не говорю про авто-пересчет через все нужные классы доставки, понятно, что трудно повторить их логику в рамках админки, но просто сделать поле вручную редактируемым не такая уж сложная задача.
Проблема следующая: если клиент при согласовании заказа решил сменить способ доставки, например с «Курьером» на «Самовывоз», как выставить стоимость доставки в 0 и пересчитать стоимость заказа? Вот и начинаются танцы с бубном, менеджеру надо пойти сделать ещё один заказ через фронт сайта, ну в общем, думаю, знакомая тема многим.
Возникла задача, сделать поле стоимости доставки у заказа в админке редактируемым вручную.
Я, честно говоря, до сих пор не понимаю почему это не сделано из коробки — просто нет никакой возможности поменять стоимость доставки уже сделанного заказа из админки. Я не говорю про авто-пересчет через все нужные классы доставки, понятно, что трудно повторить их логику в рамках админки, но просто сделать поле вручную редактируемым не такая уж сложная задача.
Проблема следующая: если клиент при согласовании заказа решил сменить способ доставки, например с «Курьером» на «Самовывоз», как выставить стоимость доставки в 0 и пересчитать стоимость заказа? Вот и начинаются танцы с бубном, менеджеру надо пойти сделать ещё один заказ через фронт сайта, ну в общем, думаю, знакомая тема многим.
[СДЕЛАЙ САМ] mFilter2 фильтрация по диапазону дат.
Приветствую, к сожалению не нашёл приемлемого для себя решения данной задачи поэтому «написал» своё, в кавычках потому что немного подправил. На мой взгляд очевидно, что дата это число, а в mFilter2 есть фильтрация по диапазону чисел, значит нужно превратить дату в число. Чтобы при обновлении компонента ничего не сломалось, создадим свой класс фильтрации customfilter.class.php в папке core/components/msearch2/custom/filters/, потом прописываем в системную настройку mse2_filters_handler_class = CustomFiltersHandler
[СДЕЛАЙ САМ] Личный кабинет своими руками. Редактирование персональных данных.
После того как авторизация и регистрация сделаны нужно дать возможность пользователям редактировать свои персональные данные. Для этого создаем ресурс Редактирование данных, в котором вызываем AjaxForm
Теги для товаров по категориям
Добрый день!
Возникла необходимость в реализации тегов товара по категориям. Сами теги я вывел, но они выводятся все, т.е. облако тегов. А как их отфильтровать по категориям не пойму. Возможно кто-то уже делал, поделитесь пожалуйста решением. Есть категория, в ней товары. У этих товаров определенные теги. И так в каждой категории. Необходима фильтрация товаров по тегам в пределах этой категории. Надеюсь, понятно написал. Спасибо.
P.S. Вопрос в том, как вывести теги товаров из категории в которой находишься!
Возникла необходимость в реализации тегов товара по категориям. Сами теги я вывел, но они выводятся все, т.е. облако тегов. А как их отфильтровать по категориям не пойму. Возможно кто-то уже делал, поделитесь пожалуйста решением. Есть категория, в ней товары. У этих товаров определенные теги. И так в каждой категории. Необходима фильтрация товаров по тегам в пределах этой категории. Надеюсь, понятно написал. Спасибо.
P.S. Вопрос в том, как вывести теги товаров из категории в которой находишься!
msOptionsPrice2 и уникальная ссылка
Всем здравствуйте!
Есть miniShop2, страница товара с 2 видами характеристик:
1. Цвет (синий, красный, зеленый);
2. Размер (М, L, S).
Есть компонент msOptionsPrice2, в нем созданы «модификации» товара (к примеру M, синий).
Можно ли генерировать уникальные ссылки на «модификации»?
К примеру:
— модификация 1 (L, зеленый) — site.ru/product111?mod1 или site.ru/product111/mod1
— модификация 2 (М, красный) — site.ru/product111?mod3 или site.ru/product111/mod3
PS — обратиться в ТП не могу, тк клиент (владелец сайта) к своей учетке modstore доступ не дает.
Спасибо!
Есть miniShop2, страница товара с 2 видами характеристик:
1. Цвет (синий, красный, зеленый);
2. Размер (М, L, S).
Есть компонент msOptionsPrice2, в нем созданы «модификации» товара (к примеру M, синий).
Можно ли генерировать уникальные ссылки на «модификации»?
К примеру:
— модификация 1 (L, зеленый) — site.ru/product111?mod1 или site.ru/product111/mod1
— модификация 2 (М, красный) — site.ru/product111?mod3 или site.ru/product111/mod3
PS — обратиться в ТП не могу, тк клиент (владелец сайта) к своей учетке modstore доступ не дает.
Спасибо!