Настройка Vendure Admin UI

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

Разработка и обслуживание любых видов сайтов:

Информационные сайты или веб-приложения
Сайты визитки, landing page, корпоративные сайты, онлайн каталоги, квиз, промо-сайты, блоги, новостные ресурсы, информационные порталы, форумы, агрегаторы
Сайты или веб-приложения электронной коммерции
Интернет-магазины, B2B-порталы, маркетплейсы, онлайн-обменники, кэшбэк-сайты, биржи, дропшиппинг-платформы, парсеры товаров
Веб-приложения для управления бизнес-процессами
CRM-системы, ERP-системы, корпоративные порталы, системы управления производством, парсеры информации
Сайты или веб-приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, конструкторы сайтов, порталы предоставления электронных услуг, видеохостинги, тематические порталы

Это лишь некоторые из технических типов сайтов, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента

Предлагаемые услуги
Показано 1 из 1 услугВсе 2065 услуг
Настройка Vendure Admin UI
Простая
от 1 рабочего дня до 3 рабочих дней
Часто задаваемые вопросы

Наши компетенции:

Этапы разработки

Последние работы

  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1262
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1171
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    874
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1094
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    831
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    851

Настройка Vendure Admin UI

Vendure Admin UI — Angular-приложение, которое поставляется как отдельный пакет и компилируется с расширениями плагинов. Это не webcomponents и не iframe-подход: расширения встраиваются во время сборки через Angular Lazy Modules, что даёт полноценный доступ к роутингу, компонентам и переводам.

Деплой из коробки

Самый быстрый вариант — AdminUiPlugin без кастомизации:

// vendure-config.ts
import { AdminUiPlugin } from "@vendure/admin-ui-plugin";

export const config: VendureConfig = {
  plugins: [
    AdminUiPlugin.init({
      route: "admin",
      port: 3002,
    }),
  ],
};

Admin UI будет доступен на http://localhost:3002/admin. В production рекомендуется скомпилировать UI заранее (см. ниже) и отдавать как статику через Nginx.

Предварительная компиляция (production)

// compile-admin-ui.ts
import { compileUiExtensions } from "@vendure/ui-devkit/compiler";
import path from "path";

compileUiExtensions({
  outputPath: path.join(__dirname, "../admin-ui"),
  extensions: [
    // Кастомные расширения плагинов (если есть)
    LoyaltyPlugin.uiExtensions,
    B2bPricingPlugin.uiExtensions,
  ],
  devMode: false,
}).compile?.();
npx ts-node compile-admin-ui.ts

Результат — директория admin-ui/dist со статическими файлами. Теперь указываем путь к ней:

AdminUiPlugin.init({
  route: "admin",
  port: 3002,
  app: {
    path: path.join(__dirname, "../admin-ui/dist"),
  },
}),

Брендирование

AdminUiPlugin.init({
  route: "admin",
  port: 3002,
  adminUiConfig: {
    brand: "My Shop Admin",
    hideVendureBranding: true,
    hideVersion: false,
    defaultLanguage: LanguageCode.ru,
    defaultLocale: "ru",
    availableLanguages: [LanguageCode.ru, LanguageCode.en],
  },
}),

Логотип и цвета меняются через расширение темы Angular:

// admin-ui-extension/theme.ts
export default {
  primaryColor: "#1a56db",
  accentColor: "#7c3aed",
  logo: "/assets/logo.svg",
};

Расширение Admin UI из плагина

Каждый плагин может добавить свою вкладку, страницу или поле в существующий раздел:

// loyalty.plugin.ts
@VendurePlugin({
  // ...
  configuration: (config) => config,
})
export class LoyaltyPlugin {
  static uiExtensions: AdminUiExtension = {
    id: "loyalty-ui",
    extensionPath: path.join(__dirname, "loyalty-ui"),
    routes: [
      {
        route: "loyalty",
        filePath: "routes.ts",
      },
    ],
    providers: ["providers.ts"],
  };
}
// loyalty-ui/routes.ts
import { Route } from "@angular/router";
import { marker as _ } from "@biesbjerg/ngx-translate-extract-marker";

export default [
  {
    path: "",
    component: LoyaltyListComponent,
    data: { breadcrumb: _("Программа лояльности") },
  },
  {
    path: ":id",
    component: LoyaltyDetailComponent,
    data: { breadcrumb: _("Аккаунт лояльности") },
  },
] satisfies Route[];
// loyalty-ui/providers.ts
import { addNavMenuItem } from "@vendure/admin-ui/core";

export default [
  addNavMenuItem(
    {
      id: "loyalty",
      label: "Лояльность",
      routerLink: ["/extensions/loyalty"],
      icon: "star",
    },
    "customers" // раздел меню, куда добавить пункт
  ),
];

Добавление кастомного поля в существующую страницу

Если плагин добавляет customFields к стандартной сущности, Admin UI автоматически отобразит их в форме. Для нестандартного рендеринга — кастомный компонент:

// Регистрация кастомного компонента для поля
addActionBarItem({
  id: "view-loyalty",
  label: "Баллы лояльности",
  locationId: "customer-detail",
  routerLink: (data) => ["/extensions/loyalty", data.entity?.id],
  icon: "star",
});

Переводы

Vendure Admin UI поддерживает i18n через ngx-translate. Добавить русский перевод для расширения:

// loyalty-ui/providers.ts
import { registerFormInputComponent } from "@vendure/admin-ui/core";

export default [
  // ...
  {
    provide: VENDURE_UI_CONFIG,
    useValue: {
      translations: {
        ru: {
          "loyalty.title": "Программа лояльности",
          "loyalty.points": "Баллы",
          "loyalty.transactions": "История операций",
        },
      },
    },
  },
];

Nginx для Admin UI в production

location /admin/ {
    root /var/www/vendure/admin-ui/dist;
    try_files $uri $uri/ /admin/index.html;

    location ~* \.(js|css|woff2|png|ico)$ {
        expires 1y;
        add_header Cache-Control "public, immutable";
    }
}

При этом AdminUiPlugin из Vendure-сервера отключается (или остаётся только для прокси Admin API).

Частые проблемы

Проблема Причина Решение
UI не обновляется после изменения плагина Старый скомпилированный dist Перезапустить compile-admin-ui.ts
Пункт меню не появляется Не передан uiExtensions в compileUiExtensions Добавить расширение в массив extensions
Angular compilation error Несовместимые версии @vendure/ui-devkit Синхронизировать с версией @vendure/core
Перевод не применяется Неверный ключ languageCode Проверить регистр: ru (не RU)