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

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

Был в сети 29 июня 2026, 12:35
Заказы принимаю
Привет. Вся работа в открытом доступе здесь github.com/modx-pro/MiniShop3
Дистрибутива готового нет, но если умеешь скачивать и устанавливать компоненты из исходников — то там все так же.

Уже работает админка, управление категориями и товарами, настройками. Уже готова работа с корзиной.
Сейчас работа на стадии оформления заказа и всем что с заказом связано.

В целом есть что смотреть и тестировать.
Это ни в коем случае не минус. PHP — медленный язык. Он не способен быстро обработать миллионы записей и выдать нужный результат. Все поисковые движки написаны либо на плюсах, либо на Java. Тут хочешь не хочешь нужно подстраиваться. Хочешь быстрый качественный поиск (с морфологией, учетом синонимов и однокоренных слов, с исправлением ошибок) — используй отдельные поисковые движки. Которые само-собой фиг поставишь на шаред хостинг.

Справедливости ради — все поисковые движки предоставляют свои облака, для обработки данных и выдачи поисковых результатов. Некоторые даже бесплатно. Так что не обязательно разворачивать их у себя не сервере.
Нет. Автор немного схитрил и не указал в коде саму отправку SMS. Он просто оставил комментарий // ОТПРАВКА КОДА В СЕРВИС РАССЫЛКИ СМС

По факту там будет подключение к оператору и отправка SMS
Позволю себе несколько замечаний.

1. Если заказов много — такой сниппет не сможет выполнить свою работу. Лучше вешать задачу на
планировщик

2. Использование getCollection. Это не лучший вариант. Этот метод загружает в ОЗУ сразу всю коллекцию объектов заказа, что не лучшим образом отражается на производительности и ресурсах. Лучше использовать итератор через метод getIterator. Такой метод загружает в память только список объектов, при переборе по очереди достает из базы информацию. Этот метод существенно быстрее работает и кушает меньше ресурсов. К слову итератор это не изобретение MODX. Это паттерн PHP. Да и не только PHP — он почти во всех языках используется.

3. Это что за странная конструкция такая?
$modx->getOption('table_prefix')."ms2_order_addresses
Зачем так? Почему? Есть же гораздо более корректный метод обращения к таблице
$modx->getTableName('msOrderAddress');
Так-то люди вполне могут переименовать таблицу, просто указав нужное имя в модельке. И приведенный метод гарантировано выдаст нужную таблицу.

4. Использовать getChunk я бы рекомендовал так:

$pdoTools = $modx->getService('pdoTools');
$pdoTools->getChunk('name', $params);
Этот вариант, в отличие от $modx->getChunk обработает конструкции и MODX и феном.

5. Не ошибка. Даже не предупреждение. Скорее глаз режет.
Использование прямых SQL конструкций.

Мы же в MODX работаем. Желательно использовать конструктор запроса. newQuery — его не просто так придумали. Помимо универсальности запроса, не привязанного к конкретной СУБД — это еще и выглядит красиво, аккуратно, профессионально. Сразу видно, что человек знает свое рабочее место.