PREGUNTA: ¿Cómo mantener las secciones predeterminadas en el lienzo sin la posibilidad de que el usuario las elimine?
Por defecto, todos los componentes son extraíbles, así que eso ya está cubierto. En cuanto a no permitir que ciertos componentes se eliminen, puedes echar un vistazo a la API de componentes: https://grapesjs.com/docs/api/component.html#component Tendrías que configurar 'removible':false para tus tres contenedores. '''...
Lee la respuesta completa abajo ↓Pregunta
Quiero generar una herramienta PDF que tenga tres secciones principales: MÁS ALTO, CUERPO y PIE de página. Las tres secciones deben estar siempre ahí y quiero desactivar la posibilidad de que los usuarios puedan eliminar esas secciones. El resto de los componentes como imágenes, texto, columnas, etc., deben ser editables, es decir, eliminarlos si el usuario quiere hacerlo.
<img width="1888" alt="Captura de Pantalla 2020-09-24 a la(s) 8 01 30 a m" src="https://user-images.githubusercontent.com/10049157/94148536-5a052180-fe3c-11ea-90af-f94d2a395ebb.png">Respuestas (2)
Por defecto, todos los componentes son extraíbles, así que eso ya está cubierto. En cuanto a no permitir que ciertos componentes se eliminen, puedes echar un vistazo a la API de componentes: https://grapesjs.com/docs/api/component.html#component
Tendrías que configurar 'removible':false para tus tres contenedores. '''js editor. DomComponents.addType('Header', { modelo: { Predeterminados: { etiquetaNombre: 'div', El componente no se podrá quitar removible:false } }, Vista: { etiquetaNombre: 'div', onRender() {
} } });
Añadir componentes durante la inicialización:
'''js
const requiredComps = [{
tipo: 'Cabeza',
...
},{
tipo: 'Cuerpo',
...
},{
tipo: 'Pie de página',
...
}];
const editor = grapesjs.init({
componentes: requiredComps
});
Otro enfoque: si estás creando un nuevo 'PDF', siempre añade esos tres componentes https://grapesjs.com/docs/api/editor.html#setcomponents '''js editor.setComponents([{ tipo: 'Cabeza', ... },{ tipo: 'Cuerpo', ... },{ tipo: 'Pie de página', ... }]);
Si tienes un evento para crear un nuevo PDF en tu app personalizada, esa es una buena forma de adjuntar esta lógica; si no, podrías añadirla después de cargar el editor y comprobar si hay un proyecto 'vacío'.
Eventos: https://grapesjs.com/docs/api/editor.html#available-events
'''js
Corre después de que el editor esté publicado
editor.on('load', (some, argument) => {
No hay componentes (PDF vacío), así que añade los contenedores necesarios
if(editor.getComponents().models.length === 0){
editor.setComponents({
tipo: 'Cabeza',
...
},{
tipo: 'Cuerpo',
...
},{
tipo: 'Pie de página',
...
});
}
});
Por defecto todos los componentes son extraíbles, así que eso ya está cubierto. En cuanto a no permitir que ciertos componentes se eliminen, puedes echar un vistazo a la API de componentes: https://grapesjs.com/docs/api/component.html#component
Tendrías que configurar 'removible':false para tus tres contenedores.
'''js editor. DomComponents.addType('Header', { modelo: { predeterminados: { etiquetaNombre: 'div', // El componente no se podrá quitar removible:falso } }, opinión: { etiquetaNombre: 'div', onRender() {
}} });
Añadir componentes durante la inicialización: '''js const requiredComps = [{ tipo: 'Cabecera', ... },{ tipo: 'Cuerpo', ... },{ tipo: 'Pie de página', ... }]; const editor = grapesjs.init({ componentes: requiredComps });Otro enfoque: si estás creando un nuevo 'PDF', añade siempre esos tres componentes https://grapesjs.com/docs/api/editor.html#setcomponents
'''js editor.setComponents([{ tipo: 'Cabecera', ... },{ tipo: 'Cuerpo', ... },{ tipo: 'Pie de página', ... }]);
Si tienes un evento para crear un nuevo PDF en tu app personalizada, esa es una buena forma de añadir esta lógica; si no, podrías añadirla después de cargar el editor y comprobar si hay un proyecto 'vacío'. Eventos: https://grapesjs.com/docs/api/editor.html#available-events '''js // Correr después de que el editor esté laodeado editor.on('load', (some, argument) => { // No hay componentes (PDF vacío), así que añade los contenedores necesarios if(editor.getComponents().models.length === 0){ editor.setComponents({ tipo: 'Cabecera', ... },{ tipo: 'Cuerpo', ... },{ tipo: 'Pie de página', ... }); } });
¡Funciona como por arte de magia! ¡Gracias por vuestra ayuda @MartinPutz ! Lo agradezco mucho.
Preguntas y respuestas relacionadas
Continúa investigando con debates sobre temas similares.
Issue #1844
Eliminar la opción de subir imagen y desactivar el icono (x) para las imágenes predeterminadas
Quiero eliminar la sección "Dejar archivos aquí o hacer clic para subir" y también desactivar el icono de cruz (x) junto a las imágenes pre...
Issue #1096
[SOLICITUD DE FUNCIÓN] Soportar diseños de renderizado que no forman parte del contenido editable
Básicamente, mi caso de uso es que quiero mostrar toda una página —con cabecera, menú(s) y pie de página— en el lienzo del editor, pero sol...
Issue #1876
[PREGUNTA] exportar a pdf
Hola a todos, 1) ¿Puedo usar este framework para generar un archivo pdf después de editar la página HTML? ¿Y cómo puedo hacerlo? 2) ¿Puedo...
Issue #2462
[PREGUNTA] ¿Es posible guardar el encabezado, el pie de página y el cuerpo por separado para varias páginas?
Hola, Estoy intentando implementar varias páginas. Con varias páginas, me gustaría compartir el encabezado y el pie de página entre todas l...
Plugins de pago que cumplen con este problema
Seleccionado por temas clave y relevancia de etiquetas para ayudarte a enviar más rápido.
Cargando recomendaciones de plugins de pago...
Consulta los plugins de código abierto de GrapesJS en GitHub O haz una búsqueda rápida en nuestro catálogo gratuito.
Explora plugins gratuitos →Los plugins premium incluyen soporte, actualizaciones regulares y funciones listas para producción — ahorrando días de trabajo de integración.
Explora plugins premium →Explorar categorías de plugins
Ve directamente a las páginas de categorías de plugins en el marketplace.