Sin embargo, tengo problemas para crear varios campos personalizados. ¿Alguien tiene un ejemplo de código que funcione y que esté dispuesto a venderme o compartir conmigo? Puedo modificarlo para que se ajuste a mis necesidades, pero solo necesito un poco de ayuda para empezar. Los 2 nuevos campos que necesitaría serían precio (cadena) y url (cadena). También me encantaría añadir un campo de carga de imágenes al tema, pero aún no he visto nada parecido.
Hola,
Estaré encantado de ayudarte. Recientemente creé un plugin donde utilicé campos personalizados de temas (Discourse Chain Topics Plugin).
En mi plugin creé dos campos adicionales para cada tema de tipo entero. De manera similar, podrías agregar tantos campos como quieras. Al final, los campos personalizados de temas/usuarios son un objeto JSON donde cada campo que agregues será una clave/valor en el objeto JSON. donde la clave es el nombre del campo y el valor es el valor.
El ejemplo que mencionaste anteriormente (que también me ayudó) está diseñado para que agregues un campo adicional en el panel de administración, donde eliges su tipo y nombre. Sin embargo, no necesariamente tienes que relacionar los campos adicionales con el panel de administración. De manera similar, podrías agregar tantos campos como quieras (no estoy seguro de cómo esto podría afectar el rendimiento).
Por último, no dudes en contactarme/enviarme un mensaje si necesitas ayuda. También puedes encontrar mis datos de contacto en https://ghassan.blog
Te deseo la mejor de las suertes.
Hola, yo tenía el mismo problema… ahora descubrí cómo lograrlo con varios campos personalizados.
Además de configurar el plugin.rb, también necesitarás tener archivos individuales (inicializador de js y las plantillas .hbs y .hbr) para cada campo.
El plugin discourse-topic-custom-fields tiene una carpeta llamada:
en esta carpeta tienes un archivo llamado: topic-custom-field-initializer.js.es6
para un solo campo puedes editar este archivo, pero para múltiples campos deberías tener otros archivos como este:
topic-custom-field-url-initializer.js.es6 y topic-custom-field-price-initializer.js.es6
dentro de cada archivo tendrás 3 líneas con una variable api llamando a un método registerConnectorClass, necesitas cambiar el segundo parámetro y agregar un sufijo para tener un nombre exclusivo para cada clase de campo en cada una de las 3 líneas.
no olvides cambiar el nombre de las exportaciones en cada archivo (justo después de “exports default {…}”).
además, para los archivos hbs y hbr, también necesitarás crear archivos separados para cada campo, solo necesitas copiar y pegar los mismos archivos y agregar un sufijo a cada nombre de archivo, por ejemplo: