Сергей Шлоков

Сергей Шлоков

Был в сети 06 ноября 2025, 19:54
Заказы не принимаю
Я бы создал коллекцию объектов (можно через pdoResources) таким запросом
select Res.* from `modx_site_content` as Parent
inner join `modx_site_content` as Res on Res.parent = Parent.id
where Parent.parent = 12
ORDER BY Res.parent ASC, Res.id DESC
А затем пробежался по массиву и сформировал требуемую коллекцию с одним дочерним ресурсом.
Итого всего один запрос к БД.
Ярко. Для полной красоты можно было бы добавить ещё красный треугольник. Единственный вопрос — где стрелочки, кружочки и квадратики, выделяющие событие OnBeforeDocFormSave? И где само это событие на картинке??? Хотя это уже второй вопрос.

П.С. Событие OnDocFormSave срабатывает после сохранения ресурса, а ошибка возникает при сохранении.
siteStatictics не является альтернативой Google.Analytics и и Яндекс.Метрики. Он ведёт:
— статистику посещений и просмотров ресурсов, которую можно использовать для сортировки ресурсов по популярности;
— статистику посещений пользователей.

Ещё он показывает пользователей, которые в текущий момент находятся на сайте. Вот ссылка на
полную документацию с описанием всех возможностей компонента.

И есть ли возможность вытащить эти данные и например вставить их в данные формы или заказа?
UTM-метки — это get параметры. Работать с ними можно как на уровне PHP, так и на уровне Fenom. siteStatistics не ведёт отдельный учёт по этим меткам. Для этого есть гугл и яндекс.
Для ясности… отдельно профиль удалить нельзя. Он удаляется автоматически при удалении пользователя. Собственно указанный процессор удаляет именно пользователя.

Каким образом процессор должен понять какого пользователя удалять? Ему нужно передать id пользователя. А форма ему передаёт uid.

Ну и наконец (насколько я помню) MODX не разрешает удалять текущего пользователя.

П.С. Если не нужны события плагинов, то можно удалить через
$user = $modx->getObject('modUser', (int) $_POST['uid']); 
$user->remove();
Внесу свои 5 копеек в оптимизацию кода.

1. Самая первая переменная называется $parent, а проверяется $parent_id. Явная опечатка.
2. Блок с Alt key непонятно зачем нужен. Достаточно просто указать ключ context вместо ctx и context_key. Думаю, программисту это будет не сложно.
3. В коде
if (!$parents = $modx->getParentIds($input, $height, $options)) {
    $parents = array();
}
можно сразу возвращать null. Зачем тратить время на дальнейшие операции.

П.С. Ещё желательно, чтобы переменная height была необязательная. Она явно ограничивает применение фильтра.