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

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

Был в сети 29 июня 2026, 12:35
Заказы принимаю
1. Объект user просто определен выше по логике кода. Он не существует сам по себе. Читаем цикл for in
2. Переменные имеют область видимости. Она ограничена круглыми или фигурными скобками. Читаем область видимости. Попробуй вызови в консоли element за пределами ближайшей фигурной скобки
3. Как только область видимости заканчивается — сборщик мусора уничтожает переменную и ее можно объявить заново. В цикле можно заново объявлять переменные на каждой итерации. Читаем про сборщик мусора.
4. Есть такое правило ВСЕГДА использовать const при объявлении переменной. Это связано с тем что далее нельзя будет изменить ее тип и при объявлении четко понятно какого типа переменная. Исключение — если изначально понятно что переменная ниже будет перезаписана. И это объявление тоже служит сигналом для читающего код что где то ниже переменная будет перезаписана. Таким образом const и let это еще и информация о судьбе переменной. Будет ли ниже ее изменение.
Наверное вот такие вопросы и возникают потому что все на бегу а не основательно и по порядку.
Очень рекомендую уроки по JS Владилена Минина. У него превосходный канал на Ютубе с отличным контентом и есть полноценные курсы начиная от основ JS до всевозможных фреймворков. Ну и практика конечно.
Если уж корректируете код и используете феном — старайтесь корректировать его до конца
В чанках нужно использовать родной синтаксис фенома и вызывать плейсхолдеры через $
'tpl' => '@INLINE {$content}',
where должен использовать массив данных. для фенома это [ ]
так и запись проще получается без конкатенации и можно использовать многострочный ввод
'where' => [
"pagetitle" => $_modx->resource.brand
]
Итого получаем

{'pdoResources' | snippet : [
    'parents' => '1',
    'depth' => '0',
    'includeContent' => '1',
    'tpl' => '@INLINE {$content}',
    'where' => [
         "pagetitle" => $_modx->resource.brand
     ]
]}
Ну если на JS только hello world писать — то конечно это бессмысленое занятие.
А если в проекте половина на JS написана — это уже другой разговор.
А попробуйте разделять код проекта на логические модули, каждый из которых находится в отдельном файле.
А попробуйте еще библиотеки и инструменты для работы подключать из npm например.

Чтобы еще раз не отвечать зачем вообще все эти node_modules если можно любую нужную библиотеку локально скачать — сразу отвечу. Чтобы через полгода одной командой npm update обновить сразу все используемые библиотеки и зависимости.
Вы же наверное следите чтобы версия MODX свежей была на тех проектах, за которые отвечаете.
Так и за другими составными частями следить нужно. А использовать NPM это самый простой способ.

И еще позволю себе совет — вместо того чтобы в каждой ветке новые длиннющие рассуждения писать — было бы полезно тратить этот час в день на самообразование. Но это лишь мое мнение, которое я просто оставлю здесь. Спасибо. Пойду займусь самообразованием ))
Это ошибочное поспешное мнение.
Во первых webpack не обязательно создает хешированные имена файлов, а вполне себе способен перезаписывать один и тот же файл — достаточно при конфигурации имя указать.
Да собственно и все. Во-вторых писать не зачем.
Собираете фронт у себя на компьютере, выгружаете на сервер. Точно так же, как если бы работал с GULP сборщиком например.
А что тут копать. Писать код нужно.
1. Добавить одну дополнительную таблицу для хранения информации о прикрепленных файлах и создать ее модель
2. Добавить связь с этой таблицей других «соседних» моделей компонента
3. Чуть-чуть доработать сохранение комментария. Ну… просто добавить методы сохранения изображений.
4. Ну и на фронте сделать по вкусу загрузчик.

За день можно управиться.
Очнулся. Их уже года два как отменили. Можно поискать аналоги, предоставляющие API. Я думаю автор этого и аналогичных компонентов с удовольствием скажет спасибо за подборку и включит один из сервисов (если такие будут) в компонент.