¿Crear subtemas?

Me gustaría hacer que algunos temas sean subtemas de otros.

Digamos que tengo “Tema A”. En la página del Tema A, pondré un botón para “crear subtema”. Esto permitirá al usuario crear un nuevo tema, “Tema B”. El Tema B sería un hijo del Tema A.

Esto significa, desde la experiencia del usuario, lo siguiente:

También podría tener un botón en la página del Tema A para “ver todos los subtemas del Tema A”, lo cual llevaría a una lista de los subtemas del Tema A, como el Tema B y cualquier otro tema que sea hijo del Tema A.

¿Cuál es la mejor manera de hacer esto? (Asumo que tendré que hacerlo en un plugin, lo cual está bien.)

Nota: Solo busco un nivel de subtema, no varios.

Aquí hay algunos detalles sobre las posibilidades que creo que podrían funcionar:

Categorías (aunque probablemente no sea la mejor opción)

Las categorías proporcionarían una funcionalidad similar a la que tengo en mente, pero esto podría volverse demasiado pesado una vez que haya una cantidad decente de temas con subtemas (parece excesivo tener básicamente una nueva categoría para cada tema principal).

o

Etiquetas

Lo mejor que se me ocurre por ahora es usar etiquetas. Así, al hacer clic en “crear subtema” en el Tema A, se abriría un nuevo tema y yo añadiría programáticamente una etiqueta oculta, como “Tema-A”, que enlazaría al Tema A. Luego, al hacer clic en “ver todos los subtemas” del Tema A, se realizaría una búsqueda por la etiqueta “Tema-A”.

Esto parece bastante limpio, aparte del hecho de que habrá muchas etiquetas (básicamente una etiqueta por cada tema principal, lo cual podría terminar siendo mucho).

o

Campos personalizados para temas

Otra posibilidad que he considerado es crear un campo personalizado para los temas, que sería un array con los IDs de los subtemas de ese tema. Esto también podría funcionar, pero probablemente sería ligeramente más complicado de programar.

Por ejemplo, tendría que actualizar el campo personalizado del tema principal solo después de crear un subtema; y tendría que crear un nuevo tipo de búsqueda: buscar todos los temas dentro del array del campo personalizado del tema principal, en lugar de simplemente usar la funcionalidad de búsqueda por etiquetas ya integrada.

¿Hay otra solución que me esté faltando?

Veo otra solución que podría funcionar, sin requerir mucho trabajo de código.

Con el plugin de asistente personalizado, puedes realizar múltiples acciones en un solo procedimiento. En ese caso, pedirías al usuario que escriba su subtema mediante un asistente que:

  • Cree un nuevo tema para el subtema.
  • Cree una respuesta en el tema principal enlazando al subtema.

Con algo de CSS personalizado para todas las publicaciones principales (puedes agregar una clase CSS para seleccionarlas por categoría o etiqueta), puedes modificar la apariencia de las respuestas para que se ajusten a lo que tienes en mente. También podrías encontrar una forma, usando el asistente, de agregar un parámetro a las respuestas que te permita seleccionar solo las respuestas automáticas.

Si no te gusta la solución de las respuestas, creo que el asistente personalizado también podría agregar la etiqueta al subtema creado.

No había pensado en eso. Gracias. La pieza clave que me falta es algo en el subtema que enlace de nuevo al tema principal. Por ejemplo, una etiqueta (“Tema-A”) asociada al subtema.¿Estás pensando que el asistente, al enviar, haría una llamada a la API para crear la etiqueta y vincularla al subtema? (No estoy muy familiarizado con el plugin del asistente.)También creo que una limitación del plugin del asistente es que abre su propia página, la cual no tiene el encabezado normal de mi sitio; en otras palabras, creo que cualquier página con el asistente se verá bastante diferente al resto de la aplicación, lo que podría confundir a los usuarios en este caso.

Estaba pensando que también me encantaría un nivel de subtemas. Esto podría lograr un nivel de anidamiento/jerarquía, al tiempo que mantiene la interfaz limpia para que no sea un montón de conversaciones anidadas.

Ejemplos de cómo podría usarlo:

  • Crear un tema para un episodio/publicación/artículo y hacer que las personas creen subtemas basados en sus reacciones.

  • Crear un tema de una pregunta y luego hacer que las personas creen subtemas con sus propias respuestas (bonificación por la opción de limitar un subtema por persona)

¿Ha habido algún avance en la creación de un plugin o en la forma de hacerlo con las funciones actuales de Discourse?

La única forma que se me ocurrió para hacerlo fue usando campos personalizados de temas. Por ejemplo, el subtema podría tener un campo personalizado que enlace de vuelta al tema principal. Luego, puedes buscar todos los temas que tengan ese tema principal como valor del campo personalizado. Todavía no tengo un plugin completamente implementado, pero pude hacerlo funcionar básicamente en desarrollo usando código como el que mencioné aquí: Retrieve Topics based on custom field? - #12 by JQ331

Ah sí, me imagino que si se creara un campo personalizado de tema como “tema-padre” o algo así, entonces podría haber muchas maneras de aprovecharlo. Le echaré un vistazo más de cerca al enlace que compartiste y, con suerte, aprenderé algo de Ruby en el camino. ¡Gracias!