Путешествия /

Поездка в Швейцарию

Давненько ничего не писал в этот раздел, но тут появился серьёзный повод.

В феврале 2024 слетал в Швейцарию на MODX Snowup #5, который почти ежегодно проводится компанией Pixmill, а я в ней работаю.

Летал, понятное дело, не ради MODX, а чтобы потусить со старыми друзьями.

Идея поехать возникла спонтанно, после получения рассылки от Sterc 15 декабря 2023.

Я отправил эту картинку Fabian Christen из Pixmill и пожаловался, мол, было бы круто там побывать, но это очень дорого и сложно. На моё удивление, он предложил оплатить мне перелёт, нужно было только получить визу.

Читать далее
Проекты /

Vesp 3.0

Совершенно неожиданно вышла новая версия Vesp - 3.0.

Как известно, Vesp состоит из Vue, Eloquent, Slim и Phinx. 3 части названия состовляет PHP бэкенд (пакет vesp/core), оставшаяся 1 часть - это фронтенд на Vue (пакет @vesp/frontend).

В новой версии обновлены они оба, но фронтенду досталось сильно больше из-за перехода на Vue 3.

Читать далее
Личный блог /

День рождения 41

Продолжаем традицию ежегодных заметок.

Самое важное событие этого года - я разобрался с финансами и могу работать по найму только половину дня, другую половину посвящая семье и отдыху. И своим проектам, конечно.

Про личное писать нечего, там всё стабильно хорошо - домашние сыты, довольны, шёрстка лоснится. А рассказать хочется про новый личный проект.

Называется он Орбита и будет self-hosted системой для публикации своего творчества и получения денег от подписчиков. Да-да, как Boosty или Patreon, только свой личный, на собственном сервере.

Читать далее
Переезд с miniShop2 на Vesp /

Запуск в продакшн с помощью Docker

С тех пор, как я перешёл на разработку в Docker, моя программистская жизнь не будет прежней. Настолько это оказалось удобно, что словами не передать!

Любые версии PHP, любые версии Node, локальная отладка отправленных писем и т.д. Подключить можно какие угодно службы, для всяких разных нужд.

Естественно, мне захотелось перенести этот опыт и в боевой режим на сервере, чтобы мои контейнеры так же замечательно работали в продакшене.

Как оказалось, сделать это совсем несложно. Нужен только VPS, куда вы сможете установить Docker.

Читать далее
Переезд с miniShop2 на Vesp /

Личный кабинет пользователя

Товары есть, заказы есть, оплата есть... Осталось только вывести пользователю историю его заказов со статусом оплаты.

Заодно можно и отобразить оплату в админке. На этом, полагаю, с основным функционалом мы закончим.

В этой заметке не будет практически никакой новой информации, потому что всё это мы уже делали много раз: создадим контроллеры, пропишем маршруты, сделаем странички на сайте и выведем нужные данные.

Но, тем не менее, коротенько расскажу про создание личного кабинета для пользователя.

Читать далее
Переезд с miniShop2 на Vesp /

Оплата заказа

Оформление заказа у нас уже есть, пора добавить оплату.

Здесь мы заложим общие правила работы оплаты, причём сразу двумя способами: через редирект, и через вывод QR кода для сканирования.

Напишем интерфейс для платёжных провайдеров с общими методами, которые они должны будут реализовывать.

За оплату с редиректом у нас отдувается Yookassa, а за приём платежей через СБП банк Raiffeisen.

Читать далее
Переезд с miniShop2 на Vesp /

Оформление заказа

Сегодня пишем оформление заказа, пока без оплаты.

Тут не очень много изменений, по сравнению с прошлой версией. В основном, работа с пользователями и их адресами.

Например, мне хочется дать возможность юзерам авторизоваться прямо в корзине, а потом выбрать свой адрес доставки из истории заказов.

Читать далее
Переезд с miniShop2 на Vesp /

Регистрация с авторизацией и сбросом пароля

Мы вплотную подошли к оформлению заказов, но тут есть загвоздка - нам нужно регистрировать покупателя, потому что адрес доставки привязывается к его модели.

Следовательно, нам необходимо сделать на публичном сайте нормальную регистрацию с авторизацией и сбросом пароля.

Чем сегодня и займёмся.

Читать далее
Переезд с miniShop2 на Vesp /

Хранение корзины в базе данных

С каталогом товаров мы пока закончили, пора переделать работу с корзиной. В прошлой версии магазина она хранилась в localStorage браузера, теперь же будет храниться в БД.

На публичном сайте пока нет авторизации, да и не каждому магазину она нужна, поэтому доступ к корзине пользователя будет по уникальному идендификатору uuid.

Теперь в localStorage останется только идентификатор, а добавленые товары переедут в базу данных.

Пишем новую миграцию.

Читать далее
Переезд с miniShop2 на Vesp /

Фасетные фильтры

Сегодня вы узнаете как сделать свой собственный фасетный фильтр и не поехать кукухой.

Когда-то я провёл очень много времени изобретая подобные фильтры для MODX под названием mFilter. Честно говоря, я и не знал, что это именно фасетные фильтры.

Решение моё стало популярным, и теперь кажется, что ни один магазин без подобных фильтров существовать не может.

mFilter очень сильно завязан на MODX, поэтому для Vesp я использую замечательный пакет от российского автора k-samuel/faceted-search.

Читать далее
Переезд с miniShop2 на Vesp /

Хлебные крошки и мультикатегории

Сегодня продолжаем работать с выводом товаров на сайте - у нас осталась пара незаконченых дел.

Во-первых, у нас нет вывода товаров, вложенных в дочерние категории. И поддержки товаров, привязанных через ProductCategory тоже нет. Через это, например, большая категория /products/tabak выводится пустой.

Во-вторых, хлебные крошки умеют выводить только непосредственно родительскую категорию товара, без цепочки остальных категорий до корня сайта.

Надо это исправить.

Читать далее
Переезд с miniShop2 на Vesp /

Вывод товаров по uri

Сегодня мы обновляем публичный сайт с выводом товаров.

Нам нужно добавить работу с переводами, утилиты для вывода переводов и цен, а также научиться выводить товары по адресам с неизвестной глубиной вложения.

В предыдущей версии у нас вообще не было вложенных категорий, поэтому структура сайта была чётко прописана: категория и в ней товар. Сейчас же может быть категория\категория\категория\товар - и поэтому вывод товаров должен стать гораздо гибче.

Для начала просто починим вывод текущего каталога, который сломался из-за отсутствия колонки title - она теперь в отдельной таблице. Мы можем или присоединять таблицу переводов в контроллере, чтобы сохранить сортировку, или поменять её на дату публикации.

Я выбираю второй вариант, потому что сейчас нам нужно только починить вывод, а дальше мы его доработаем.

Меняем title на created_at в следующих файлах:

  • site/pages/index.vue
  • site/components/list-products-actions.vue

И вывод товаров уже работает:

Читать далее
inetlover
Александр Наумов
01.03.2024 21:15
Василий, добрый день! можешь прописать свои Укажи, пожалуйста, где это сделать? Я только один файл ....
bezumkin
Василий Наумкин
22.02.2024 09:23
На здоровье! Держи лайк =)
inetlover
Александр Наумов
27.01.2024 00:06
Василий, спасибо! Извини, тупанул.
bezumkin
Василий Наумкин
22.01.2024 04:43
Давай-давай!
bezumkin
Василий Наумкин
24.12.2023 11:26
Спасибо!
bezumkin
Василий Наумкин
27.11.2023 02:43
Ура!
bezumkin
Василий Наумкин
25.11.2023 08:30
Vesp тянет 2 зависимости: vesp-frontent для фронта и vesp-core для бэкенда. Их можно обновлять, но э...
bezumkin
Василий Наумкин
22.11.2023 08:09
Отлично, поздравляю!
bezumkin
Василий Наумкин
04.11.2023 10:31
На здоровье!
bezumkin
Василий Наумкин
30.10.2023 01:21
Спасибо!