Membuat Block Tampilan Kustom
Di NocoBase, Block adalah area konten di halaman. Contoh ini menunjukkan cara membuat Block kustom yang paling sederhana dengan BlockModel — mendukung pengeditan konten HTML di antarmuka, di mana user dapat memodifikasi konten yang ditampilkan Block melalui panel konfigurasi.
Ini adalah contoh pertama yang melibatkan FlowEngine, akan menggunakan BlockModel, renderComponent, registerFlow, dan uiSchema.
Disarankan memahami konten berikut terlebih dahulu agar pengembangan lebih lancar:
- Menulis Plugin Pertama Anda — Pembuatan plugin dan struktur direktori
- Plugin — Entry point Plugin dan lifecycle
load() - Ikhtisar FlowEngine — Penggunaan dasar FlowModel, renderComponent, registerFlow
- i18n Internasionalisasi — Cara menulis file terjemahan dan penggunaan terjemahan tertunda
tExpr()
Hasil Akhir
Yang akan kita buat adalah Block "Simple block":
- Muncul di menu "Tambah Block"
- Merender konten HTML yang dikonfigurasi user
- Memungkinkan user mengedit HTML melalui panel konfigurasi (registerFlow + uiSchema)
Source code lengkap lihat @nocobase-example/plugin-simple-block. Jika Anda ingin langsung menjalankannya secara lokal untuk melihat hasilnya:
Berikutnya, mari kita bangun plugin ini dari nol, langkah demi langkah.
Langkah 1: Membuat Skeleton Plugin
Eksekusi di direktori root repository:
Ini akan menghasilkan struktur file dasar di packages/plugins/@my-project/plugin-simple-block. Untuk penjelasan detail lihat Menulis Plugin Pertama Anda.
Langkah 2: Membuat Model Block
Buat src/client-v2/models/SimpleBlockModel.tsx. Ini adalah inti dari seluruh plugin — mendefinisikan bagaimana Block dirender dan dikonfigurasi.
Beberapa poin penting:
renderComponent()— Merender UI Block, membaca konten HTML melaluithis.props.htmldefine()— Mengatur nama tampilan Block di menu "Tambah Block".tExpr()digunakan untuk terjemahan tertunda, karenadefine()dieksekusi pada saat module loading di mana i18n belum diinisialisasiregisterFlow()— Menambahkan panel konfigurasi.uiSchemamenggunakan JSON Schema untuk mendefinisikan form (referensi sintaks UI Schema),handlermenulis nilai yang diisi user kectx.model.props, danrenderComponent()dapat membacanya
Langkah 3: Menambahkan File Multibahasa
Edit file terjemahan di src/locale/ plugin, tambahkan terjemahan untuk semua key yang digunakan oleh tExpr():
Pertama kali menambahkan file bahasa perlu restart aplikasi agar berlaku.
Untuk cara penulisan file terjemahan dan penggunaan tExpr() lebih lanjut, lihat i18n Internasionalisasi.
Langkah 4: Mendaftarkan di Plugin
Edit src/client-v2/plugin.tsx, lazy loading model dengan registerModelLoaders:
registerModelLoaders menggunakan dynamic import, code model dimuat hanya ketika benar-benar digunakan untuk pertama kalinya — ini adalah cara registrasi yang direkomendasikan.
Langkah 5: Mengaktifkan Plugin
Setelah diaktifkan, buat halaman baru, klik "Tambah Block" dan Anda akan melihat "Simple block". Setelah ditambahkan, klik tombol konfigurasi Block untuk mengedit konten HTML.
Source Code Lengkap
- @nocobase-example/plugin-simple-block — Contoh lengkap Block tampilan kustom
Ringkasan
Kapabilitas yang digunakan dalam contoh ini:
Tautan Terkait
- Menulis Plugin Pertama Anda — Membuat skeleton plugin dari nol
- Ikhtisar FlowEngine — Penggunaan dasar FlowModel dan registerFlow
- FlowEngine → Ekstensi Block — BlockModel, DataBlockModel, CollectionBlockModel
- UI Schema — Referensi sintaks uiSchema
- Component vs FlowModel — Kapan menggunakan FlowModel
- Plugin — Entry point Plugin dan lifecycle load()
- i18n Internasionalisasi — Cara menulis file terjemahan dan penggunaan tExpr
- Dokumentasi FlowEngine Lengkap — Referensi lengkap FlowModel, Flow, Context

