Николай Савин

Николай Савин

Был в сети 29 июня 2026, 12:35
Заказы принимаю
это полноценный маркетплейс дополнений для CMS (тут просится MODX, но на самом деле не обязательно), со всеми сопутствующими сервисами вокруг него: управление пакетами, управлением ключами и лицензиями, техническая поддержка, арбитраж спорных вопросов, биллинг и многое другое, что обычно бывает скрыто под капотом
Лучше собрать чужой опыт в одном удобном руководстве, чем не размещать свое вообще нигде.
Мы все учимся на чужом. Я до сих пор подсматриваю какие то технические решения в чужом коде. И использую удачные решения. Плюсь правда все чаще с каждым годом, но это уже другая история.
Я бы зашел со стороны токена.
При авторизации юзера куку сохраняю как токен в базе. При выходе — затираю.
Соотвественно если нода имеет доступ к этой куке — достаточно простым запросом проверить есть ли юзер с таким токеном. Если есть — он залогинен. Если нет — значит не залогинен и куку можно зачистить.
Речь идет только о фронте. В админке пока ничего не меняется, ждет своей очереди.
В части ORM тоже. Хотя есть конечно фантазии переключиться на Eloquent
На VESP только один Василий пишет. Из нашей команды — никто не пользуется этим.
В этом году весь JS будет полностью переписан на современный стиль. Без jQuery зависимости, возможно в модульном решении, при котором нужные модули подключаются по мере необходимости. Выбросим галерею, которой все равно никто не пользуется. Появится JS API. Будут, думаю, нативные события, а не колбэки. Ну и так далее. Не вижу смысла переписывать или как то модифицировать то, что есть сейчас. Там все целиком пора выбрасывать.
Вы здесь наткнулись сразу на две проблемы

В этой строке не нужны фигурные скобки, запускающие феном, так как вы и так внутри феном конструкции
'where' => ['news-type:LIKE' => '%{$.get.news-type}%'],

Но если убрать фигурные скобки — то тоже ничего хорошего не получится
'where' => ['news-type:LIKE' => '%$.get.news-type%'],

Здесь уже другая проблема — нельзя писать феном конструкции внутри кавычек.
Здесь нужно соединить строки с % и get конструкцию через конкатенацию
Вот так
'where' => ['news-type:LIKE' => '%' ~ $.get.news-type ~ '%'],
И тут еще третья проблема, связанная с правилами именования переменных. Проблема с дефисом. В PHP нельзя использовать дефис в именах переменных. А вот в массиве ($.get это ведь массив) можно.
Пожалуй вот такая конструкция должна отработать корректно

'where' => ['news-type:LIKE' => '%' ~ $.get['news-type'] ~ '%'],
Проблема не в fenom.
Если уж начали переводить вызов сниппета на другой синтаксис — то очень желательно делать это полностью.
Избавляйтесь от JSON строк внутри, от вложенных MODX тэгов
Примерно вот так должна выглядеть ваша конструкция
{'!pdoPage' | snippet : [
   'parents' => $_modx->resource.id,
   'showHidden' => 1,
   'limit' => 8,
   'depth' => 1,
   'level' => 1,
   'showLog' => 1,
   'ajaxMode' => 'default',
   'sortby' => ['parent' => 'ASC', 'menuindex' => 'ASC'],
   'includeTVs' => 'img,news-type',
   'templates' => '7',
   'where' => ['news-type:LIKE' => '%industry%'],
   'tpl' => 'newsTpl',
]}
Я не проверял — но это корректная запись — это как минимум первый шаг к нормальной работе кода.

Вот такая конструкция пишется вот так
[[!#GET.news-type]]
{$.get.news-type}
И это выстрел себе в ногу — нельзя использовать нефильтрованные параметры в SQL запросах. Это прямая дорога к SQL инъекциям.
Александр, а чего бы вам, раз уж зашел разговор не написать развернутый материал на тему «101 способ защиты от спама в MODX». Собрать все что упоминалось, сделать какой-то обзор плюсов и минусов. Будет огромная польза для сообщества и вам для кармы