CMS Catalog - Ecommerce

1784747667640.png1784747748403.png
Добавлена иконка сброса параметров (RotateCcw) в заголовок блока Характеристики:
  • Динамическое отображение: Кнопка сброса параметров появляется в заголовке блока «Характеристики» только когда выбран хотя бы один параметр из характеристик (activeSpecsFiltersCount > 0).
  • Функционал: Нажатие на иконку мгновенно сбрасывает все выбранные фильтры в блоке характеристик.

В модальном окне "Фильтр по характеристикам" , тоже все необходимое реализовано, по сбросу выбранных параметров.

Функционал выбора количества колонок успешно реализован!​

Что было сделано:​

  1. Выбор колонок для десктопа (экран от 640px и выше):
    • Добавлены переключатели 2, 3, 4 и 5 колонок (catalog_cols_desktop).
    • Настройки доступны как прямо в панели управления каталогом, так и в раскрывающемся меню «Настройки».
  2. Выбор колонок для мобильных устройств:
    • На узких экранах автоматически отображается выбор 1 или 2 колонок (catalog_cols_mobile).
  3. Сохранение в браузере (localStorage):
    • Выбор количества колонок как гостем, так и авторизованным пользователем мгновенно сохраняется на устройстве и сохраняется при повторных визитах или обновлении страницы.
  • Выпадающий список выбора колонок:
    • Добавил опцию «Авто (по умолчанию)», которая использует оптимальную адаптивную сетку в зависимости от переключения боковой панели.
    • Оформил аккуратный стильный <select> с плавной фокусной подсветкой и компактными отступами.
    • Уменьшил размер подписи «Колонки:» (text-[9px] sm:text-[10px]).
    • Выбор колонок сохраняется в браузерном хранилище (localStorage).

1784752074887.png

Выполнена интеграция метаданных и функционала продления (Renew) на странице профиля в разделе «Product Listings».​

1784756871313.png

Реализованные изменения:​

  1. Компонент сведений о товаре (ListingItemDetails.tsx):
    • Категория товара: Отображение наименования категории с соответствующим иконка-тегом.
    • Артикул (SKU): Вывод артикула товара (SKU) или отметки N/A.
    • Дата добавления / обновления: Динамический вывод даты создания («Добавлено: [дата]») или даты последнего редактирования («Обновлено: [дата]»).
    • Рейтинг объявления: Расчет и отображение среднего рейтинга на основе проверенных отзывов.
    • Количество отзывов: Отображение суммарного числа отзывов к объявлению.
    • Срок окончания показа: Вывод даты истечения срока размещения с цветовым индицированием статуса («Истекает», «Истёк», «Бессрочно»).
  2. Модальное окно продления объявления (RenewListingModal.tsx):
    • Добавлена интерактивная кнопка «Продлить» (Renew) прямо в блоке срока размещения и в панели действий.
    • Выбор из предустановленных системой вариантов продления: 7 дней, 14 дней, 30 дней, 90 дней и 365 дней (1 год).
    • Предпросмотр текущего срока и мгновенный расчёт нового срока окончания показа.
    • Автоматическая реактивация завершённых/черновиковых объявлений при продлении.
  3. Обновление REST API и серверов:
    • В server/routes/products.ts и public/php_rest_api/controllers/ProductController.php обновлен эндпоинт POST /api/products/:id/renew, обеспечивающий точный расчёт expires_at, сброс флага черновика и обновление updated_at.
  4. Локализация (translations.ts):
    • Зарегистрированы и добавлены фразы для русской и английской локализаций.

Реализовал расширенный функционал стран, городов, координат, приоритетов сортировки и внешних API сервисов для импорта географических данных:​


  • База данных и схема:
    • Таблица стран пополнена эмодзи-флагами (emoji) и порядком сортировки (sort_order).
    • Таблица городов расширена точными географическими координатами (latitude, longitude) и порядком сортировки (sort_order).
    • Обновлён database.sql и скрипты автоматической миграции при старте приложения.
  • Внешние API Сервисы:
    • REST Countries API: Интегрирован эндпоинт /api/locations/external/rest-countries для загрузки реестра стран с официальными кодами ISO и эмодзи-флагами.
    • OpenStreetMap Nominatim & GeoNames: Интегрирован эндпоинт /api/locations/external/import-cities для импорта крупных городов выбранной страны со встроенным геокодингом (широта и долгота).
  • Панель управления (Админка) :
    • Обновлён интерфейс LocationManagement.tsx с удобной навигацией по вкладкам «Страны», «Города» и «Импорт из REST API».
    • Добавлена возможность редактирования флагов эмодзи, порядка сортировки (приоритета), а также кликабельные ссылки координат городов на картах OpenStreetMap.
  • Профиль пользователя:
    • Выбор страны в профиле отображает наглядные эмодзи-флаги рядом с названием.

Реализована поддержка выбора режима и объёма импорта городов для любой выбранной страны с гарантированной защитой от дубликатов:​


  • Переключатель режима импорта в интерфейсе:
    • Все города и населенные пункты (Полный импорт) — опрашивает гео-базы GeoNames и OpenStreetMap Nominatim с расширенным лимитом (до 250–300+ населенных пунктов за раз, включая города, крупные поселки и муниципалитеты).
    • Только топовые / крупные города — загружает выборку ключевых областных центров и мегаполисов.
    • Поисковый запрос — опциональный фильтр для подгрузки конкретных регионов или городов.
  • Интеллектуальное исключение дубликатов: перед вставкой в базу данных сервис сверяет названия городов на русском и английском языках с уже существующими записями для этой страны в MySQL, добавляя только уникальные новые локации.
 
Последнее редактирование:
я бы купил бы такой CMS тыс эдак за 5к руб
Спасибо большое за ваш интерес, за предложение и оценку :rolleyes:
На данный момент проект еще делаю, нужно максимально закрыть все баг репорты.
Пока что лучше примите участие в тестировании проекта. Буду очень благодарен.
 
Последнее редактирование:
Назад
Сверху