Pavel Zarubin

Pavel Zarubin

С нами с 07 сентября 2016; Место в рейтинге пользователей: #14
Отправить деньги

MODX на Golang

365 1
Всем привет! Заранее извиняюсь за выбор раздела для данной заметки, но в разделе «Вопросы» я врятли бы получил бы достойный фидбек.

Предисловие


Я наблюдаю за движением modx и cms в уже больше пяти лет, и так получилось, что за последние годы веб-разработка разделилась на две вселенные которые не видят друг друга: программисты на фреймворках использующие весь арсенал современного разработчика и разработчики на CMS, которым этот инструментарий не доступен, но нужда в нем все больше, отчего вторые перетекают в лагерь первых.
Pavel Zarubin
13 сентября 2022, 13:59
modx.pro
1 206
+5

Билдер SQL запросов для modx, minishop2 и TV

Всем привет, просили меня недавно сделать выгрузку со старого сайта на modx с более чем 200к товаров, т.к. я уже давно не работал с modx, абсолютно забыв методы API, а также помня, насколько медленно и ресурсозатратно оно работает было решено писать SQL напрямую и все бы ничего, пока я не увидел структуру tv полей. Руками писать SQL с выборкой необходимых TV было адским адом, и было решено за часик накидать мини билдер SQL запросов

Получился примерно такой в использовании билдер, по мне покрывает 100% моих задач в формировании SQL для выгрузок из modx & ms2:
$builder = new SimpleBuilder();
$builder->addResourceFields('id', 'pagetitle', 'longtitle')
    ->addMs2Fields('article', 'price')
    ->addTvFields('price_opt', 'product_time', 'valute', 'remains', 'product_tax')
    ->where('deleted', '=', false)
    ->where('published', '=', true)
    ->where('class_key', '=', 'msProduct')
    ->where('remains', '!=', 0)
    ->whereNotNull('remains')
    ->whereIn('id', [18559, 18560])
    ->limit(1)
    ->offset(1)
;
$sql = $builder->sql();

$products = $modx->query($sql)->fetchAll(PDO::FETCH_ASSOC);
Под катом код и результат SQL который формирует билдер
Если хочется сразу к коду
Pavel Zarubin
24 февраля 2022, 02:10
modx.pro
4
762
+10

[MODX/Laravel] DevDocker - удобная разработка под Linux

Всем приветики, в общем ни для кого не секрет что докер — это шикарная магическая штука и где то там его активно используют но не в modx конечно, где код до сих пор пишут в браузере. В общем 4 года я был в поиске оптимального решения как правильно и удобно вести разработку проектов (раньше на MODX, сейчас на фреймворках) и в итоге могу точно заявить, что я нашел идеальное решение! Под катом я расскажу все что я пробовал за 4 года и минусы каждого решения, ну а не терпеливые могут просто посмотреть видео сборки, которая решает их все или перейти сразу к гитхабу:

Видео

GitHub

Pavel Zarubin
21 апреля 2020, 02:12
modx.pro
7
1 526
+27

[multiSite] - Мультисайт на MODX

Привет! Компонент реализует собственно мультисайт на modx. Что он делает по факту? В зависимости от города он ищет во всей странице ключи в соответствии вашего паттерна и заменяет их на содержимое конкретно этого города.


Pavel Zarubin
10 декабря 2019, 03:17
modx.pro
12
1 250
+23

[DoubleCheck] - Поиск и исправление дублей

И снова всем привет! Эта заметка будет еще короче предыдущей :). В общем все мы знаем и по своему боремся с проблемой после парсинга и/или импорта из говноисточников дублей товаров, компонент ищет дубли по названию товаров (pagetitle) и удаляет эти дубли. Но не просто удаляет, первому вхождению он дает все виртуальные категории удаленных товаров (проще говоря отмечает категории на вкладке товара «Категории»).



Pavel Zarubin
03 декабря 2019, 20:37
modx.pro
3
1 593
+17

[SelectFilters] - выбор фильтров для mFilter2



Всем привет, написал простенькое дополнение которое решает одну очень надоевшую проблему — клиент не может выбирать какие опции miniShop2 попадут в фильтр товаров mFilter2. В общем дополнение добавляет чекбокс в окно создания и редактирования опций, в комплекте также сниппет подготовки поля 'filter'
Pavel Zarubin
03 декабря 2019, 18:58
modx.pro
6
1 523
+15

1 плагин - 3 лайвхака

Всем привет, порой работа менеджеров в админке modx — сущий ад. Сегодня поступил заказ с просьбой решить несколько проблем.

Проблема №1:
В tinyMCE все изображения которые вставляются имеют атрибуты width и height, и не имеют нужных классов

Проблема №2:
При загрузки файлов в каталог, где уже есть такое имя, файлы переписывают друг друга, необходимо было сделать добавление префикса для файлов с одинаковым именем

Проблема №3:
Иногда менеджеры грузят неприлично большие изображения, что непосредственно влияет и на скорость загрузки страницы и на общий размер файлов

Что делает плагин:
  1. Транслитерация файлов при загрузке, добавление префикса если файл дублируется
  2. Уменьшает загружаемое изображение до 1200px по ширине
  3. Из поля content достает все img, вырезает у них атрибуты width и height, вместо них подставляет класс img-thumbnail
Под катом — код с комментариями.
Pavel Zarubin
26 ноября 2018, 17:42
modx.pro
38
3 161
+19

Халява, сэр

Добрый день, коллеги, я к вам с приятной, но коротенькой новостью. Т.к. некоторые мои платные дополнения не взыскали популярности, я решил сделать их бесплатными! Потому что с той тишиной в поддержке по этим дополнениям я уже и забыл что там в исходниках. Далее последуют ссылки и коротенькое описание этих дополнений:

  1. ms2DeliveryCost — замечательное дополнение, которое позволяет делать предварительный расчет стоимости всех способов доставки. К сожалению демо-сайт сейчас отсутствует, но в принципе по скринам все понятно, в ближайшем будущем подниму демо сайт. Наверное
  2. msGdePosilka — Довольно хорошее и полезное дополнение если преодалеть сложности по получению доступа к api, отслеживает перемещения ваших отправлений, показывает эти перемещения прямо в заказе, а также оповещает клиентов о новом пункте, который посетила их посылка
  3. msOrderDiscount — гипер полезное дополнение для маленьких магазинов, реализовывает очень простую систему скидок пока разговаривал с покупателем по телефону, зашел в заказ, ввел скидку, готово!
Pavel Zarubin
02 августа 2018, 03:11
modx.pro
4
1 598
+25

Изменяем форму заказа minishop2

За год работы с минишопом я понял одну вещь — никто не знает как просто и быстро кастомизировать стандартную форму заказов. Для меня это довольно частая задача, по этому соберу тут несколько приемов которыми сам пользуюсь:


Pavel Zarubin
22 апреля 2018, 02:16
modx.pro
96
6 456
+41

[ms2DeliveryCost] - получение стоимости доставки для каждого пункта доставки


И так задача:
Получать цену доставки каждого пункта доставки до его выбора не зависимо от того, какой handler стоит у пункта доставки и какие службы доставки установлены вообще. Забегая немного вперед у каждого объекта msDelivery есть метод getCost, на нем и основан компонент, речь о котором пойдет дальше.

Проблемы:
1) В большинстве своем службы доставки взаимодействуют с API других сервисов и не все из них быстрые, другая проблема это то, что служб доставки может быть не один десяток, я думаю вы понимаете что расчет десятка разных служб доставки дело не быстрое и заставлять пользователя ждать по 1-10 секунд чтобы загрузить страницу оформления заказа дело не благодарное.
2) Стоимость доставки может зависеть от множества полей пользователя, хорошо бы чтобы цена всех пунктов изменялась динамически

Решение:
Условно бесплатный компонент ms2DeliveryCost!
Pavel Zarubin
08 апреля 2018, 17:21
modx.pro
2 085
+3