logologo
Start
Dokumentacja
Deweloperzy
Wtyczki
API
English
简体中文
日本語
한국어
Deutsch
Français
Español
Português
Русский
Italiano
Türkçe
Українська
Tiếng Việt
Bahasa Indonesia
ไทย
Polski
Nederlands
Čeština
العربية
עברית
हिन्दी
Svenska
Start
Dokumentacja
Deweloperzy
Wtyczki
API
logologo

Szybki start

Wprowadzenie
Tworzenie wtyczki bloku
Previous PageWprowadzenie
TIP

Ten dokument został przetłumaczony przez AI. W przypadku niedokładności, proszę odnieść się do wersji angielskiej

#Tworzenie pierwszej wtyczki bloku

Zanim zaczniemy, zalecamy zapoznanie się z artykułem „Tworzenie pierwszej wtyczki”, aby dowiedzieć się, jak szybko stworzyć podstawową wtyczkę. Następnie, rozszerzymy ją o prostą funkcjonalność bloku.

#Krok 1: Tworzenie pliku modelu bloku

Proszę utworzyć nowy plik w katalogu wtyczki: client/models/SimpleBlockModel.tsx

#Krok 2: Tworzenie zawartości modelu

W pliku proszę zdefiniować i zaimplementować podstawowy model bloku, włączając w to logikę jego renderowania:

import { BlockModel } from '@nocobase/client';
import React from 'react';
import { tExpr } from '../utils';

export class SimpleBlockModel extends BlockModel {
  renderComponent() {
    return (
      <div>
        <h1>Hello, NocoBase!</h1>
        <p>This is a simple block rendered by SimpleBlockModel.</p>
      </div>
    );
  }
}

SimpleBlockModel.define({
  label: tExpr('Hello block'),
});

#Krok 3: Rejestracja modelu bloku

Proszę wyeksportować nowo utworzony model w pliku client/models/index.ts:

import { ModelConstructor } from '@nocobase/flow-engine';
import { SimpleBlockModel } from './SimpleBlockModel';

export default {
  SimpleBlockModel,
} as Record<string, ModelConstructor>;

#Krok 4: Aktywacja i testowanie bloku

Po włączeniu wtyczki, w rozwijanym menu „Dodaj blok” zobaczą Państwo nową opcję bloku: Hello block.

Demonstracja działania:

20251102223200_rec_

#Krok 5: Dodawanie możliwości konfiguracji do bloku

Następnie, dodamy do bloku konfigurowalną funkcjonalność za pomocą Flow (przepływu pracy), co umożliwi użytkownikom edycję zawartości bloku bezpośrednio w interfejsie.

Proszę kontynuować edycję pliku SimpleBlockModel.tsx:

import { BlockModel } from '@nocobase/client';
import React from 'react';
import { tExpr } from '../locale';

export class SimpleBlockModel extends BlockModel {
  renderComponent() {
    return <div dangerouslySetInnerHTML={{ __html: this.props.html }} />;
  }
}

SimpleBlockModel.define({
  label: tExpr('Simple block'),
});

SimpleBlockModel.registerFlow({
  key: 'flow1',
  title: tExpr('Simple Block Flow'),
  on: 'beforeRender',
  steps: {
    editHtml: {
      title: tExpr('Edit HTML Content'),
      uiSchema: {
        html: {
          type: 'string',
          title: tExpr('HTML Content'),
          'x-decorator': 'FormItem',
          'x-component': 'Input.TextArea',
        },
      },
      defaultParams: {
        html: `<h3>This is a simple block</h3>
<p>You can edit the HTML content.</p>`,
      },
      handler(ctx, params) {
        ctx.model.props.html = params.html;
      },
    },
  },
});

Demonstracja działania:

20251102222856_rec_

#Podsumowanie

W tym artykule przedstawiliśmy, jak stworzyć prostą wtyczkę bloku, w tym:

  • Jak zdefiniować i zaimplementować model bloku
  • Jak zarejestrować model bloku
  • Jak dodać konfigurowalną funkcjonalność do bloku za pomocą Flow (przepływu pracy)

Pełny kod źródłowy znajdą Państwo w przykładzie: Przykład prostego bloku