Issue #2434💬 RespondidoAbierto el 29 de noviembre de 2019por pvbergenReacciones 1

Excluir elementos html del modelo

Respuesta rápidapor pvbergen1

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)

pvbergen30 de noviembre de 2019

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.

artf30 de noviembre de 2019

¿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.

Plugins de pago que cumplen con este problema

Seleccionado por temas clave y relevancia de etiquetas para ayudarte a enviar más rápido.

Ver todos los plugins

Cargando recomendaciones de plugins de pago...

Opción gratuita

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 →
Opción premium

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.