Plugin personalizado con rasgos
Tienes que iniciar el campo de contenido. Probablemente para sobrescribir al método HTML. Depende de qué no funcione
Lee la respuesta completa abajo ↓Pregunta
'''js grapesjs.plugins.add('social-icons-component', (editor, opts = {}) => {
Sea c = opts;
Sea defaults = { bloques: 'iconos sociales',
Estilo por defecto defaultStyle: cierto,
Hora de inicio por defecto, por ejemplo, '2018-01-25 00:00' Hora de inicio: '',
};
Valores predeterminados de carga para (dejemos nombre en los valores predeterminados) { si (!( nombre en c)) c[name] = defaults[name]; }
// Añadir componentes loadComponents (editor, c);
// Añadir componentes loadBlocks(editor, c);
const domc = editor. DomComponents; const defaultType = domc.getType('default'); const textType = domc.getType('text'); const defaultModel = defaultType.model; const defaultView = defaultType.view; const textModel = textType.model; const textView = textType.view; const pfx = c.countdownClsPfx;
domc.addType('social-icons', {
model: defaultModel.extend({ defaults: Object.assign({}, defaultModel.prototype.defaults, { empieza de: c.inicioTiempo, finTexto: c.finTexto, Droppable: falso, Rasgos: [ Las cadenas se convierten automáticamente en tipos de texto
'nombre', 'marcador de posición', { tipo: 'select', etiqueta: 'Tipo', Nombre: 'Tipo', Opciones: [ {valor: 'Facebook', Nombre: 'Facebook'}, {valor: 'linkedin', nombre: 'Linkedin'}, {valor: 'youtube', nombre: 'Youtube'}, {valor: 'twitter', nombre: 'Twitter'}, ] }, { Tipo: 'entrada', Etiqueta: 'Facebook', Nombre: 'Facebook', },{ Tipo: 'entrada', etiqueta: 'LinkedIn', Nombre: 'LinkedIn', },{ Tipo: 'entrada', Etiqueta: 'YouTube', Nombre: 'YouTube', },{ Tipo: 'entrada', etiqueta: 'twitter', Nombre: 'Twitter', }], script: function() {
} }), }, { isComponent(el) {
if(el.getAttribute && el.getAttribute('data-gjs-type') == 'social-icons') { return { Tipo: 'Iconos sociales' }; } }, }), view: defaultView.extend({ init() {
console.log('en vistaaaa'); this.listenTo(this.model, 'change:type', this.updateScript); const comps = this.model.get('components');
Añade una plantilla básica de cuenta atrás si aún no está inicializada if (!comps.length) { comps.reset(); comps.add(' <span data-js="countdown" class="-cont"> <div class="${pfx}-block"> <div data-js="countdown-day" class="${pfx}-digit"></div> <div class="${pfx}-label">${c.labelDays}</div> </div> <div class="${pfx}-block"> <div data-js="countdown-hour" class="${pfx}-digit"></div> <div class="${pfx}-label">${c.labelHours}</div> </div> <div class="${pfx}-block"> <div data-js="countdown-minute" class="${pfx}-digit"></div> <div class="${pfx}-label">${c.labelMinutes}</div> </div> <div class="${pfx}-block"> <div data-js="countdown-second" class="${pfx}-digit"></div> <div class="${pfx}-label">${c.labelSeconds}</div> </div> </span> <span data-js="countdown-endtext" class="${pfx}-endtext"></span> `); } } }), }); });
He creado un plugin personalizado con trates, pero no funciona
¿Podrías explicarme cómo funcionará? ¿Cuál es el problema de esto?
Respuestas (3)
Tienes que iniciar el campo de contenido. Probablemente para sobrescribir al método HTML. Depende de qué no funcione
@kuldeepcis no muestras cómo usas el componente, por favor proporciona un ejemplo en vivo vía jsfiddle
Hola @artf,
Este es el violín para ello https://jsfiddle.net/apaoa5o2/14/
En la sección extra está el bloque para icono social Los problemas con esto son:
- Cuando arrastras y soltas, tienes que seleccionar padre para ver la sección de configuración a la derecha. En la configuración verás la URL de Facebook y aparecerás en Facebbok.
- Cuando editas la URL en Facebook y marcas la casilla, verás el reflejo a la izquierda. Quiero que esta casilla esté preseleccionada al cargar la página.
- cuando lo exportas, el icono de Facebook no tiene la URL que hemos configurado. Por favor, dime cómo podemos hacerlo.
Preguntas y respuestas relacionadas
Continúa investigando con debates sobre temas similares.
Issue #1378
Pestañas personalizadas
Hola, Solo quería saber si es posible añadir una nueva pestaña al editor de uvas desde un plugin. Por ejemplo, los Bloques, Estilo o Rasgos...
Issue #1893
[PREGUNTA] Por definición, todos los bloques tienen que tener el mismo estilo
Estamos usando blockManager, como puedes ver en el ejemplo publicado en codesandbox, siguiendo la documentación relacionada con el renderiz...
Issue #930
[Pregunta] Actualizar el redimensionador tras el cambio del recurso
¡Hola! Estoy intentando cambiar el gestor de activos por defecto con nuestro gestor personalizado. Al hacer doble clic, la imagen seleccion...
Issue #1620
[Pregunta] No se puede editar texto en bloque
Escribí un plugin que define un nuevo bloque para un titular simple. Sin embargo, cuando arrastro y suelto este bloque en el lienzo, aparec...
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.