Владимир
С нами с 22 мая 2018; Место в рейтинге пользователей: #452- Заметки 0
- Комментарии 1
05 июня 2026, 09:38
Я не знаком с cityField. Смотрите, чем отличаются формы и запросы на сервер. Если разные контексты — то проверьте, как настроены источники файлов.
easyComm 1.11.0. Прикрепление файлов (фотографий) 30
04 июня 2026, 20:21
У кого нет юрлица, то можно использовать бота-прослойку: modx.pro/development/25531
Уведомления о заказах minishop в MAX 1
01 июня 2026, 18:39
После обновления на 5.2, в системных настройках FormIT все описания настроек стали повторять названия ключей, то есть описания затерлись
FormIt 5.2: нативный AJAX и reCAPTCHA v3 4
30 мая 2026, 08:05
Посмотрел на ваш скрин, там мыло указано тоже, что и в запросах на мой сайт были. Плагин (modx.pro/help/25277), отловил их у меня сегодня.
136 входящих заказов с пустыми полями в форме и без товаров. Как такое возможно? 5
29 мая 2026, 21:18
а, то есть, это влияет только на невозможность обновления компонента и отсутствие поддержки? а я думал если развернуть копию сайта с платным пакетом —...
Вопрос по платным пакетам на локальном/тестовом сайте 2
27 мая 2026, 10:50
Спасибо за оперативный ответ!
Уже проверил и пофиксил, плюс скачал пакет с GitHub дополнительно
Кто-то одаренный на основном домене переключил вер...
YaSmartCaptcha - защитите ваши формы от спама умной капчей от Яндекс 37
22 мая 2026, 21:53
Разумно. Все поля подряд не хочу добавлять в чанк. Практика показывает, что полей очень много, содержимое может быть объемным и появление подсказок мо...
mSearch - обновление до версии 1.3.0. 2
22 мая 2026, 18:30
Это changelog разросся. Не помещается в базе данных mariaDB (mysql почему то съедает и не морщится) Выпустил Версию. 1.11.1 с решением этой проблемы.
MiniShop3 1.11.0 8
22 мая 2026, 09:51
Твой бот стримит всё что происходит в терминале? И умеет выполнять слэш команды для агентов типа /status /btw? А ещё нет ли проблемы разрастания входя...
[aiAssist] Я же просто попросил его создать магазин, а он СДЕЛАЛ ЭТО! 16
Шаг 1.
Создается мультиселект-tv-поле (tv1) для страниц услуг, в котором выводятся все категории (в формате pagetitle==id)
Шаг 2.
Все страницы услуг создаются в едином разделе (во «всех услугах» или каком-то скрытом, например)
Шаг 3.
Создается тв-поле «id подходящих услуг» для категорий с услугами (tv2).
Это нужно для того, чтобы отображения списка подходящих услуг в категории происходила быстрее (не тратя время на where IN для каждой услуги).
Шаг 4.
Вешется плагин на создание/изменение страниц услуги, при котором в tv2 всех выбранных категории из tv1 переносился id сохраненной услуги.
Шаг 5.
Теперь нужно позаботимся о том, чтобы страницы услуг были доступны внутри любой из подходящих категорий. При помощи кастомной маршрутизации на событие OnPageNotFound вешаем подходящий вам паттерн.
Предположим, что все услуги имеют следующий вид ссылок:
Тогда логика будет примерно такая:
— срабатывает событие OnPageNotFound
— превращаем запрошенную ссылку в массив
— если длина массива == 3, а первый элемент в нем == 'services', то работаем дальше
— ищем страницу вида /services/(category_name)
— если находим, то ищем услугу с alias == (service_name)
— если находим и её, то из объекта найденной категории получаем значение tv2 и ищем в нем id услуги
— если есть совпадение, то делаем sendForward, иначе отпускаем плагин на 404.
Шаг 5.
Выводим список подходящих услуг в категории по принципу &resources=`[[*tv2]]`. В чанке вызова формируем ссылку на услуги примерно таким образом:
$_modx->resource.parent | url лучше сформировать вне вызова сниппета и передать готовый результат уже в него, чтобы не плодить кучу одинаковых запросов
Хлебные кроши.
Тут все просто, если у нас сгенерирована виртуальная страница через sendForward, то в плагине передаем в неё какой-либо свой плейсхолдер. Дальше от него в шаблоне формируются if-условия. В случае с хлебными крошками можно просто выводить их до «родителя» и дописывать текущую страницу в последнем пункте.
Карта сайта и СЕО
Тут у вас есть, условно, 2 важных момента:
1. Канонический url, во избежании дублей (link rel=«canonical»).
Можно указать или родной url ресурса (там, где они физически хранятся), или создать еще одно tv-поля для страниц услуги «основная категория» и формировать адрес в зависимости от неё.
В случае, если был выбран второй вариант, доступность услуг по «физическому» адресу нужно перекрыть (опять же, в шаблоне услуг можно проверять наличие плейсхолдера из плагина, и при его отсутствии создавать редирект).
2. Карта сайта.
Если с каноническим url был выбран вариант «физического адреса», то с картой не нужно проводить дополнительных манипуляций. В противном случае, физические адреса из вызова pdoSitemap-a нужно исключить и дополнительно сгенерировать виртуальные ссылки. (для минимализации времени генерации результата я бы разбил sitemap на 2 раздела (основные страницы и страницы услуг).