Evita editar algunos componentes
Sí, @MichaelKlemersson ahora mismo tienes que configurarlos manualmente en cualquier elemento. Otro truco sería actualizar a todos los niños mediante el modelo '''js const updateAll = model => { model.set({editable: false, ...}); model.get('components').each(model => updateAll(model)); } updateAll(component); ¿Qué opi...
Lee la respuesta completa abajo ↓Pregunta
Me gustaría evitar que los usuarios editen los componentes internos de componentes específicos.
Es decir, digamos que tengo un elemento llamado Drupal-Block
<bloque de datos div>
... HTML dentro de ..
</div>
Quiero evitar que los usuarios editen el ... HTML inside... bit
Respuestas (3)
Sí, @MichaelKlemersson ahora mismo tienes que configurarlos manualmente en cualquier elemento. Otro truco sería actualizar a todos los niños mediante el modelo '''js const updateAll = model => { model.set({editable: false, ...}); model.get('components').each(model => updateAll(model)); } updateAll(component);
Pero lo que creo que sería mejor es algún tipo de propiedad que 'propague' (se aceptan sugerencias para un término mejor) propiedades del progenitor a sus hijos, por ejemplo.
'''html
<div data-gjs-editable="false" data-gjs-propagate="['editable', ...]">
<!-- esto tampoco será editable y lo mismo para sus hijos — >
<div>...</div>
<!-- posibilidad de sobrescribir y 'romper' la cadena — >
<div data-gjs-editable="true" data-gjs-propagate=""></div>
</div>
¿Qué opinas?
Sí, creo que la idea de la propagación es genial. Para que quede claro, la razón por la que busco esto es que estoy desarrollando un módulo para Drupal 8 que permita crear temas a través de la herramienta GrapeJS. En Drupal tienes elementos llamados Bloques, y mi idea era bloquear la edición de esos en el editor principal y, en su lugar, poner un editor emergente para editarlos y permitir reutilizarlos en varias páginas.
Esto se debe a cómo Drupal renderiza el contenido vía PHP y, por tanto, necesito convertir el html a variables php al almacenar la plantilla en un archivo twig.
Un ejemplo que puedes usar en la demo
- Seleccionar un elemento (por ejemplo, alguna sección)
- Ejecuta esto en consola '''js editor.getSelected().append('
Preguntas y respuestas relacionadas
Continúa investigando con debates sobre temas similares.
Issue #490
Evitar modificar componentes específicos de la imagen
Tengo un caso de uso en el que me gustaría bloquear completamente algunos componentes específicos (es decir, no redimensionables, no arrast...
Issue #916
[Pregunta] ¿Por qué las capas no tienen nombre de etiqueta de elemento?
Estoy trasteando con los componentes internos de las uvas porque me gustaría contribuir en el futuro. La mayor parte de mi interés es que v...
Issue #2595
[Pregunta] Problemas para arrastrar HTML externo con draggable="true"
Quiero hacer que un elemento html externo se pueda arrastrar a GrapesJS, como cuando puedes arrastrar un bloque y que añada algo. Tengo una...
Issue #1787
[Pregunta] Cambiar el HTML de los botones del panel de span a botón
He creado algunos paneles y me gustaría cambiar el elemento de los botones del panel de 'span' a 'botón', ya que es más apropiado y se ve m...
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 →Tutoriales relacionados
Guías detalladas sobre el mismo tema.
Explorar categorías de plugins
Ve directamente a las páginas de categorías de plugins en el marketplace.