Что-то этот год у меня очень ударный. Сначала в феврале прокатился в Швейцарию на 8 дней, а теперь впервые побывал в Сербии, 3 дня.
Поводом стал очередная встреча разработчиков MODX, на которой я представлял и свой доклад. Да-да, получается, что вернулся к работе с MODX, но об этом позже.
Пока есть свободное время, решил попробовать себя в качестве разработчика модулей для Nuxt 3.
Понятное дело, что один модуль я уже написал - но это для Vesp, и большой популярности у него не будет. А вот подключение Font Awesome к текущей версии Nuxt всё еще является проблемой.
Официального модуля нет, есть только куча инструкций на разных сайтах, как это сделать своим плагином. Да вот беда, такой способ не работает с серверным рендером.
И вот я решил это исправить!
Давненько ничего не писал в этот раздел, но тут появился серьёзный повод.
В феврале 2024 слетал в Швейцарию на MODX Snowup #5, который почти ежегодно проводится компанией Pixmill, а я в ней работаю.
Летал, понятное дело, не ради MODX, а чтобы потусить со старыми друзьями.
Идея поехать возникла спонтанно, после получения рассылки от Sterc 15 декабря 2023.
Я отправил эту картинку Fabian Christen из Pixmill и пожаловался, мол, было бы круто там побывать, но это очень дорого и сложно. На моё удивление, он предложил оплатить мне перелёт, нужно было только получить визу.
Совершенно неожиданно вышла новая версия Vesp - 3.0.
Как известно, Vesp состоит из Vue, Eloquent, Slim и Phinx. 3 части названия состовляет PHP бэкенд (пакет vesp/core), оставшаяся 1 часть - это фронтенд на Vue (пакет @vesp/frontend).
В новой версии обновлены они оба, но фронтенду досталось сильно больше из-за перехода на Vue 3.
Продолжаем традицию ежегодных заметок.
Самое важное событие этого года - я разобрался с финансами и могу работать по найму только половину дня, другую половину посвящая семье и отдыху. И своим проектам, конечно.
Про личное писать нечего, там всё стабильно хорошо - домашние сыты, довольны, шёрстка лоснится. А рассказать хочется про новый личный проект.
Называется он Орбита и будет self-hosted системой для публикации своего творчества и получения денег от подписчиков. Да-да, как Boosty или Patreon, только свой личный, на собственном сервере.
С тех пор, как я перешёл на разработку в Docker, моя программистская жизнь не будет прежней. Настолько это оказалось удобно, что словами не передать!
Любые версии PHP, любые версии Node, локальная отладка отправленных писем и т.д. Подключить можно какие угодно службы, для всяких разных нужд.
Естественно, мне захотелось перенести этот опыт и в боевой режим на сервере, чтобы мои контейнеры так же замечательно работали в продакшене.
Как оказалось, сделать это совсем несложно. Нужен только VPS, куда вы сможете установить Docker.
Товары есть, заказы есть, оплата есть... Осталось только вывести пользователю историю его заказов со статусом оплаты.
Заодно можно и отобразить оплату в админке. На этом, полагаю, с основным функционалом мы закончим.
В этой заметке не будет практически никакой новой информации, потому что всё это мы уже делали много раз: создадим контроллеры, пропишем маршруты, сделаем странички на сайте и выведем нужные данные.
Но, тем не менее, коротенько расскажу про создание личного кабинета для пользователя.
Оформление заказа у нас уже есть, пора добавить оплату.
Здесь мы заложим общие правила работы оплаты, причём сразу двумя способами: через редирект, и через вывод QR кода для сканирования.
Напишем интерфейс для платёжных провайдеров с общими методами, которые они должны будут реализовывать.
За оплату с редиректом у нас отдувается Yookassa, а за приём платежей через СБП банк Raiffeisen.
Сегодня пишем оформление заказа, пока без оплаты.
Тут не очень много изменений, по сравнению с прошлой версией. В основном, работа с пользователями и их адресами.
Например, мне хочется дать возможность юзерам авторизоваться прямо в корзине, а потом выбрать свой адрес доставки из истории заказов.
Мы вплотную подошли к оформлению заказов, но тут есть загвоздка - нам нужно регистрировать покупателя, потому что адрес доставки привязывается к его модели.
Следовательно, нам необходимо сделать на публичном сайте нормальную регистрацию с авторизацией и сбросом пароля.
Чем сегодня и займёмся.
С каталогом товаров мы пока закончили, пора переделать работу с корзиной. В прошлой версии магазина она хранилась в localStorage
браузера, теперь же будет храниться в БД.
На публичном сайте пока нет авторизации, да и не каждому магазину она нужна, поэтому доступ к корзине пользователя будет по уникальному идендификатору uuid
.
Теперь в localStorage
останется только идентификатор, а добавленые товары переедут в базу данных.
Пишем новую миграцию.
Сегодня вы узнаете как сделать свой собственный фасетный фильтр и не поехать кукухой.
Когда-то я провёл очень много времени изобретая подобные фильтры для MODX под названием mFilter. Честно говоря, я и не знал, что это именно фасетные фильтры.
Решение моё стало популярным, и теперь кажется, что ни один магазин без подобных фильтров существовать не может.
mFilter очень сильно завязан на MODX, поэтому для Vesp я использую замечательный пакет от российского автора k-samuel/faceted-search.