Issue #1135💬 RespondidoAbierto el 25 de mayo de 2018por JulyanoFReacciones 0

Dos etiquetas html como una sola (enlace/botón)

Respuesta rápidapor artf

Deberías crear un componente personalizado

Lee la respuesta completa abajo ↓

Pregunta

¿Es posible tener dos elementos (div e innik) y considerarlos como un solo? Por ejemplo: está el siguiente bloque de enlaces:

'<div class="row"><a class="btn" href="http://test.com">Enlace aquí</a></div>'

Y me gustaría que al hacer clic en 'div' o 'button' apareciera <a>el '' como elemento seleccionado en las vistas del editor, pero en el envoltorio, el div como seleccionado.

Respuestas (3)

JulyanoF1 de junio de 2018

@artf he intentado extender el componente original del enlace, pero parece que no funciona

var linkType = editor. DomComponents.getType('link');
domComps.addType('link', {
    model: linkType.model.extend({
        defaults: Object.assign({}, linkType.model.prototype.defaults, {
            Rasgos: [
                {
                    etiqueta: 'Enlace',
                    Nombre: 'Href',
                    Provisional: 'http://meusite.com.br'
                },
                {
                    etiqueta: 'Conteúdo',
                    tipo: 'input-conteudo',
                    marcador de posición: 'Botão'
                },
                {
                    etiqueta: 'Cor',
                    Tipo: 'color',
                    Nombre: 'Color de fondo'
                }
            ],
            toHTML: function() {
                devuelve '<div class="row"><a class="btn">Enlace aquí</a></div>';
            },
        }),
    })
});

No cambia nada...

Ya intenté desactivar el 'autorender' y renderizar después de todos los cambios.

Podría cambiar la configuración de solo contenido con una nueva, usando BlockManager:

bm.get('c85').set({ contenido: '<div class"row"><a class="btn">Enlace aquí</a></div>' }); Pero cuando hago clic en el botón, solo selecciona el botón (no div) y cuando hago clic en div, no selecciona mis ajustes personalizados de botones;

JulyanoF11 de junio de 2018

@artf como has dicho, intenté usar Components, pero no obtuve el resultado esperado. ¿Podrías ayudarme?

Mi bloque de enlaces imprime este contenido: '<div style="height:45px;margin:0 auto 10px auto;addding: 5px 5px 5px 5px 5px;width: 100%;text-align:center"><a class="btn btn-purple">Botón</a></div>"

También intento obtener el botón al hacer clic en div, o al hacer clic en el botón de entrar, seleccionar todas las div.

En componentes, probé:

domComps.addType('link', {
    model: linkType.model.extend({
        defaults: Object.assign({}, linkType.model.prototype.defaults, {
            Rasgos: [
                {
                    etiqueta: 'Enlace',
                    Nombre: 'Href',
                    Provisional: 'http://mywebsite.com'
                },
                {
                    etiqueta: 'Contenido',
                    Tipo: 'Contenido de entrada',
                    marcador de posición: 'Botón'
                }
            ]
        }),
    },{
        isComponent: function(el, sec) {
            if(el.tagName == 'A'){
                return {type: 'link'};
            }
            Ya intenté devolver siempre el enlace:
            return {type: 'link'};
        },
    })
});

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 →

Tutoriales relacionados

Guías detalladas sobre el mismo tema.

Todos los tutoriales →

Explorar categorías de plugins

Ve directamente a las páginas de categorías de plugins en el marketplace.