Excluir elementos html del modelo
Vaya, eso sería sorprendentemente sencillo. ¡Gracias! Lo probaré en los próximos días y veré cómo podemos integrarlo con nuestro flujo de trabajo.
Lee la respuesta completa abajo ↓Pregunta
Esta es una pregunta amplia, así que proporcionaré el caso de uso y algunas ideas en lugar de código propiamente dicho.
Descripción básica
Estamos usando grapesjs como parte de un módulo Drupal (https://github.com/artf/grapesjs/issues/1798#issuecomment-559498604) y estamos teniendo un problema por tener demasiados elementos html dentro del contenedor de uvas. Esto afecta al rendimiento de los usuarios.
La idea que seguimos con el módulo es mostrar toda la página dentro del iframe de uvas. Esto permite al usuario ver la página en su conjunto y nos permite utilizar los modos de vista de la tableta y móvil. Debido a los miles de elementos en el encabezado o pie registrados como componentes predeterminados no editables, el modelo de grapesjs se vuelve lento (js lag de varios segundos), a medida que las colecciones crecen más allá del número habitual o previsto.
Preparación
Un ejemplo de nuestra configuración en html:
<div id="uvas-contenedor">
<encabezado data-gjs-type="default">
<!-- elementos HTML, no editables, registrados como componentes predeterminados -->
<nav data-gjs-type="default">
<ul data-gjs-type="default">
<li data-gjs-type="default">
</li>
</ul>
</nav>
</header>
<section id="editable-container">
<!-- elementos HTML, editables, registrados como componentes personalizados -->
<div data-gjs-type="component1"> <!-- componente personalizado -->
<div data-gjs-type="default">Algunos textos</div> <!-- rasgo -->
</div>
</section>
<footer>
<!-- elementos HTML, no editables, registrados como componentes predeterminados -->
</footer>
</div>
Configuramos la bandera editable en componente(s) por defecto(s) como falsos y usamos nuestros componentes personalizados para implementar la edición usando los traits.
Un ejemplo visual de nuestra configuración: ! diseñador de páginas-ejemplo-estructura
Pregunta
¿Es posible incluir HTML en el contenedor de uvas pero excluirlo del modelo? Por ejemplo, que el HTML en la cabecera no se registre con uvas, ya que es inerte en el contexto de la edición de una página.
Posibles aproximaciones
Probamos diferentes enfoques, pero no conseguimos que funcionara:
- Establecer un componente inexistente a los elementos no editables
- Eliminar el tipo de componente predeterminado antes de la inicialización
- Alterar el modelo tras la inicialización
Estoy encantado de dar más detalles. Actualmente no estoy seguro, sin embargo, de qué tipo de información sería útil.
Respuestas (2)
Vaya, eso sería sorprendentemente sencillo. ¡Gracias! Lo probaré en los próximos días y veré cómo podemos integrarlo con nuestro flujo de trabajo.
¿Te refieres a algo así? '''js encabezado const = '<div style="relleno: 100px">Mi encabezado</div>'; editor.getWrapper().getEl().insertAdjacentHTML('beforeBegin', encabezado);
Esto añadirá un HTML sin estar realmente relacionado con GrapesJS Components
Preguntas y respuestas relacionadas
Continúa investigando con debates sobre temas similares.
Issue #2581
[Error]: Cómo usar componentes
Usando GrapesJS 0.15.10 no consigo que los componentes funcionen como pretendía. Probablemente sea cosa mía, así que si es una pregunta, no...
Issue #3239
[Pregunta] ¿Cómo actualizar atributos o propiedades dinámicamente desde Component Script?
Tenemos un caso de uso en el que queremos insertar gráficos dinámicamente usando Highcharts Editor. He creado un componente que, al arrastr...
Issue #1516
CKEDITOR 5 [Mejora]
Hola @artf, Como se describe en la siguiente tarea, hice una compilación del ckeditor 5 que funciona con GrapesJS, aunque algunas funcional...
Issue #1905
[PREGUNTA] Bloque no editable después de la plantilla de importación
Tengo el mismo problema que en 1408. Dijiste que JSON debería importarse en lugar del HTML. ¿Podrías decirme, por favor, cómo importar la p...
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.