Crear un bloque de presentación personalizado
En NocoBase, un bloque es un área de contenido en la página. Este ejemplo muestra cómo crear, con BlockModel, el bloque personalizado más sencillo: permite editar contenido HTML desde la interfaz, de modo que el usuario pueda modificar lo que se muestra a través del panel de configuración.
Es el primer ejemplo que utiliza FlowEngine; trabajará con BlockModel, renderComponent, registerFlow y uiSchema.
Se recomienda revisar antes los siguientes contenidos:
- Crear el primer plugin: creación del plugin y estructura de directorios.
- Plugin: entrada del plugin y ciclo de vida de
load(). - Visión general de FlowEngine: uso básico de FlowModel,
renderComponentyregisterFlow. - Internacionalización (i18n): archivos de traducción y
tExpr().
Resultado final
Vamos a crear un bloque "Simple block" que:
- Aparece en el menú "Añadir bloque".
- Renderiza el HTML que el usuario configure.
- Permite editar el HTML desde un panel de configuración (registerFlow + uiSchema).
Código fuente completo en @nocobase-example/plugin-simple-block. Para ejecutarlo en local:
A continuación se construye el plugin paso a paso.
Paso 1: crear el esqueleto del plugin
Desde la raíz del repositorio:
Esto genera la estructura básica en packages/plugins/@my-project/plugin-simple-block. Para más detalles, consulte Crear el primer plugin.
Paso 2: crear el modelo del bloque
Cree src/client-v2/models/SimpleBlockModel.tsx. Es el núcleo del plugin: define cómo se renderiza y cómo se configura el bloque.
Puntos clave:
renderComponent(): renderiza la UI del bloque y lee el HTML desdethis.props.html.define(): nombre del bloque en el menú "Añadir bloque".tExpr()se utiliza para traducción diferida porquedefine()se ejecuta al cargar el módulo, momento en el que i18n aún no está inicializado.registerFlow(): añade el panel de configuración.uiSchemadescribe el formulario (sintaxis: UI Schema);handlertraslada lo que el usuario escribe actx.model.props, donderenderComponent()lo lee.
Paso 3: añadir los archivos de traducción
Edite los archivos en src/locale/ y añada las traducciones de las claves usadas en tExpr():
La primera vez que añada un archivo de idioma debe reiniciar la aplicación para que surta efecto.
Para más detalles sobre los archivos de traducción y tExpr(), consulte Internacionalización (i18n).
Paso 4: registrar en el plugin
Edite src/client-v2/plugin.tsx y use registerModelLoaders para carga bajo demanda:
registerModelLoaders utiliza importación dinámica: el código del modelo se carga solo cuando realmente se necesita. Es la forma de registro recomendada.
Paso 5: activar el plugin
Una vez activado, cree una página y haga clic en "Añadir bloque": verá "Simple block" disponible. Al añadirlo, el botón de configuración del bloque permite editar el HTML.
Código fuente completo
- @nocobase-example/plugin-simple-block: bloque de presentación personalizado.
Resumen
Capacidades utilizadas en este ejemplo:
Enlaces relacionados
- Crear el primer plugin: crear el esqueleto desde cero.
- Visión general de FlowEngine: uso básico de FlowModel y
registerFlow. - FlowEngine → Extensión de bloques: BlockModel, DataBlockModel, CollectionBlockModel.
- UI Schema: referencia de la sintaxis de
uiSchema. - Component vs FlowModel: cuándo usar FlowModel.
- Plugin: entrada del plugin y ciclo de vida.
- Internacionalización (i18n): archivos de traducción y
tExpr. - Documentación completa de FlowEngine: referencia completa.

