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

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

С нами с 06 июня 2015; Место в рейтинге пользователей: #5
Николай Савин
11 ноября 2020, 22:06
+3
Предлагаю вынести PayPal в отдельный компонент, как это сделано для всех платежных систем. Никогда не понимал зачем он нужен в коробке.
Николай Савин
10 ноября 2020, 17:00
0
Так же как и в любом другом случае.
$msOrder = $modx->getObject('msOrder', array('id' => $id));
$msAddress = $msOrder->getOne('Address');
Судя по тому что вы знаете название классов вы в курсе как это делается.
Николай Савин
09 ноября 2020, 18:14
0
Полезнее создать issue на github.
Николай Савин
05 ноября 2020, 15:01
+1
Готов забрать bannerY, Jevix и HybridAuth
Николай Савин
01 ноября 2020, 10:49
+1
тупо без аргументации
Тебе уже два человека прямо на пальцах показали где проблема и к чему она может привести. Какая еще аргументация нужна.

Не хочешь слушать — ради бога.
Николай Савин
01 ноября 2020, 10:35
0
Так не в этом дело что можно не включать. Это мы участники дискуссии понимаем.
Проблема в том, что щас молодые неопытные увидят крутой компонент и без раздумья будут все подряд туда пихать.

А сидеть без ajax'a в 2к20
Сидеть на jquery в 2020 тоже так себе. Попахивает.

Нет тут никакой альтернативы. Потому что подход в принципе неверный, ведущий только к плохому.
ВСЕГДА на каждый необходимый функционал пишется свой отдельный запрос. Либо на коннектор, либо на плагин. И там уже вся логика, скрытая от посторонних глаз.
Николай Савин
01 ноября 2020, 10:20
0
Поставил минус — обязан объяснить.
Этот компонент действительно дыра в безопасности.
Доступ к, например, pdoResources позволяет получить любую информацию из любой таблицы, включая личные данные пользователей, заказы, промо-коды и любую другую коммерческую информацию. А также любые системные настройки, где часто хранятся логины-пароли к платежным системам, апишкам и т.п.

Ответственный программист конечно улыбнется и не будет использовать такой компонент, но найдутся десятки неопытных ребят, которым надо проще и быстрее. А потом начнется… MODX дырявый
Николай Савин
26 октября 2020, 20:21
0
Добрый день. Я так понимаю речь о неполадках внутри самой CRM?
Мой компонент не имеет к этому никакого отношения. Он работает ТОЛЬКО на сайте.
Николай Савин
25 октября 2020, 19:25
0
компонент оцененный специалистом по разработке компонентов в 120тр именно в моём исполнени основанном на моём 30ти летнем опыте программирования на разных языках
А можно поинтересоваться кто именно из специалистов по разработке компонентов оценил стоимость? Их немного в общем то.
Николай Савин
15 октября 2020, 20:27
0
а так хорошо
да наверное. Вообще на моем опыте в счетчиках всегда let используют. Здесь как раз срабатывает правило — показать читающему что эта переменная где то далее изменится. Здесь не техническая особенность а скорее общепринятое написание.

Ну скорее значение?

 Неа. Именно тип. Значение двух типов менять можно. Это массив и объект. Мы запросто можем манипулировать их внутренностями.
Николай Савин
15 октября 2020, 19:36
0
1. Объект user просто определен выше по логике кода. Он не существует сам по себе. Читаем цикл for in
2. Переменные имеют область видимости. Она ограничена круглыми или фигурными скобками. Читаем область видимости. Попробуй вызови в консоли element за пределами ближайшей фигурной скобки
3. Как только область видимости заканчивается — сборщик мусора уничтожает переменную и ее можно объявить заново. В цикле можно заново объявлять переменные на каждой итерации. Читаем про сборщик мусора.
4. Есть такое правило ВСЕГДА использовать const при объявлении переменной. Это связано с тем что далее нельзя будет изменить ее тип и при объявлении четко понятно какого типа переменная. Исключение — если изначально понятно что переменная ниже будет перезаписана. И это объявление тоже служит сигналом для читающего код что где то ниже переменная будет перезаписана. Таким образом const и let это еще и информация о судьбе переменной. Будет ли ниже ее изменение.
Николай Савин
12 октября 2020, 19:38
0
Наверное вот такие вопросы и возникают потому что все на бегу а не основательно и по порядку.
Очень рекомендую уроки по JS Владилена Минина. У него превосходный канал на Ютубе с отличным контентом и есть полноценные курсы начиная от основ JS до всевозможных фреймворков. Ну и практика конечно.
Николай Савин
10 октября 2020, 10:31
0
Для небольшого сайта вообще не имеет смысла использовать компоненты.
Наиболее полезно и безгеморно написать парочку плагинов своими силами и радоваться.
Николай Савин
07 октября 2020, 20:03
+2
Если уж корректируете код и используете феном — старайтесь корректировать его до конца
В чанках нужно использовать родной синтаксис фенома и вызывать плейсхолдеры через $
'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
     ]
]}
Николай Савин
02 октября 2020, 16:26
+1
Ну если на JS только hello world писать — то конечно это бессмысленое занятие.
А если в проекте половина на JS написана — это уже другой разговор.
А попробуйте разделять код проекта на логические модули, каждый из которых находится в отдельном файле.
А попробуйте еще библиотеки и инструменты для работы подключать из npm например.

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

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

За день можно управиться.
Николай Савин
24 сентября 2020, 07:02
0
Мне кажется шаблон вывода стоит вынести в отдельный параметр tpl
Нехорошо разметку посреди кода пихать.
Николай Савин
23 сентября 2020, 19:51
0
Можно. Чего ж нельзя то. Иван написал универсальный пример. Чуть чуть доработать под схему вашей CRM и будет счастье
Николай Савин
16 сентября 2020, 14:44
+1
Тот случай когда скрипт как скрипт, ничего необычного. Но все лайкнули пост, просто потому что Иван — красавчик!