¿Crear subtemas?

I would like to make some topics sub-topics of others.

Say I have “Topic A”. On the Topic A page, I will put a button to “create sub topic”. That will allow the user to create a new topic, “topic b”. topic b would be a child of Topic A.

What this means, from the user experience, is:

I could also have a button on the Topic A page to “view all the child topics of Topic A”, and this would go to a list of Topic A’s child topics, such as topic b and any other topics that are children of Topic A.

What’s the best way to do this? (I’m assuming I’ll have to do it in a plugin, which is fine.)

Note I’d only be looking for one level of subtopic down, not several.

Here’s some detail on the possibilities I think could do it:

Categories (though this probably is not the best way to go)

Categories would provide similar functionality to what I have in mind, but that could get too heavy once there are a decent number of topics with subtopics (it seems like overkill to basically have a new category for each parent topic).

or

Tags

The best I can think of right now is using tagging. So that when you click “create sub topic” on Topic A, it opens up a new topic, and I programmatically add a hidden tag, like “Topic-A”, that links to Topic A. Then when you click “view all sub topics” of Topic A, it does a search for the tag “Topic-A”.

This seems pretty clean, other than the fact that there will be a lot of tags (basically one tag for each main topic, which could end up being a lot).

or

Custom Fields for Topics

Another possibility I’ve considered is to create a custom field for topics, which would be an array of the ids of that topic’s sub-topics. This also could work, but would probably be slightly more complicated to code.

For example, I’d have to update the main topic’s custom field only after a subtopic is created; and, I’d have to create a new kind of search–searching for all the topics within the main topic’s custom field array–instead of just using the pre-built tag search functionality.

Is there another solution I’m missing?

2 Me gusta

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.

1 me gusta

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

1 me gusta

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!

1 me gusta