Jerarquía tradicional multinivel frente a jerarquía de discurso plana

Estoy teniendo dificultades para convencer a nuestra organización de que no retrocedamos a un foro tradicional con múltiples niveles de jerarquía, los cuales suelen terminar en una tortura de hacer clic y ejecutar, como se explica en Es hora de hablar sobre las etiquetas. Necesito argumentos que demuestren que es fácilmente viable usar solo etiquetas, sin necesidad de escribir nada en el cuadro de búsqueda.

Sería genial si se pudieran responder las siguientes preguntas:

Tenemos una red de apoyo de nodos locales que crecerá a nivel global, comparable a la categoría “Grupos locales” en https://discuss.okfn.org. Allí, todas las ubicaciones están cubiertas por subcategorías. Esa es la solución correcta si no se desciende al nivel de ciudad, como tenemos que hacer nosotros.

Tengo en mente una estructura como la siguiente:

  1. Categoría: nodos locales
  2. Etiqueta: continente (debe discutirse si tiene sentido)
  3. Subcategoría: nación (la nación debe visualizarse bien, por eso el continente es una etiqueta)
  4. Etiqueta: ciudad

¿Existe alguna posibilidad de navegar únicamente mediante etiquetas, aprovechando la jerarquía de los grupos de etiquetas, como por ejemplo:

  1. Navegando desde Asia hasta Japón
    1. Continentes
    2. Naciones
  2. Navegando desde Europa hasta Roma
    1. Continentes
    2. Naciones
    3. Ciudades

Aún no he encontrado una manera de cubrir esto mediante la barra de campos de navegación. Tampoco he encontrado una forma de que los temas se etiqueten automáticamente con el nombre de su subcategoría y de la categoría padre de dicha subcategoría para que esto funcione.

Soy consciente de:

Además (para empezar :slight_smile:) :

  1. ¿Cómo se hace / cuándo aparece “Buscar” en la búsqueda de etiquetas?

  2. Integrar la búsqueda de etiquetas en la búsqueda de categorías (sé que hay un cuadro de búsqueda en la parte superior derecha, pero también lista temas)

Al final, me gustaría mostrar un mapa mundial en la categoría “nodos locales”, que permita hacer zoom hasta la ubicación de interés.

Espero poder aprovechar el mapa que se ve en Locations Plugin 🌍, el plugin Data Explorer Discourse Data Explorer y Custom Layouts Plugin, posiblemente integrados en Discourse Category Banners.

Actualmente solo conozco:

Debería verse más o menos así:

Lo he pensado un poco. Anteriormente he experimentado con un sistema de categorías de tres niveles y diferentes sistemas de navegación basados en etiquetas.

categoría: nodos locales
etiqueta: continente (hay que discutir si tiene sentido)
subcategoría: nación (la nación debe visualizarse bien, por eso el continente es una etiqueta)
etiqueta: ciudad

Creo que, en esencia, necesitas un menú desplegable de etiquetas específico para un tag_group, donde el tag_group se determine según el contexto de la categoría (para acomodar diferentes grupos de ciudades en las subcategorías de nación).

En cuanto a tener mapas en lugares distintos a una lista de temas o incrustados en una publicación, el plugin Locations tiene un mapa componible que se puede insertar en una página de categoría.

Podrías lograr ambas cosas mediante un componente de tema. Si necesitas ayuda para construir dicho componente, puedo darte algunas indicaciones si prefieres intentarlo tú mismo, o podrías contratar a Pavilion para que lo haga por ti.

Muchas gracias por los comentarios positivos. Así que, aparte del mapa, todo lo demás podría hacerlo nosotros mismos :smiley:, pero tendremos que programar un poco para personalizar el tema a nuestro gusto.

Para tener una idea de la hoja de ruta para lograr esto, ¿podrías confirmar, corregir, ampliar o responder a lo siguiente?

  1. :question: Asegurarnos de que podamos crear menús desplegables de etiquetas infinitos (limitados solo por el tamaño de la página), con selección de etiquetas basada en el menú desplegable anterior.
    @angus, ¿puedes confirmar que esto es posible en principio?
  2. :question: ¿Se pueden fusionar la búsqueda por categoría y por etiqueta como se solicitó en el punto 2 de la última (tercera) lista?
  3. :factory: Establecer una jerarquía de etiquetas comparable a la mostrada en la publicación original. Esto es fundamental; sin ello, este proyecto está condenado al fracaso.
  4. :factory: Introducir el etiquetado automático.
    1. :question: :arrow_forward: :factory: ¿Esto solo puede hacerse mediante un plugin, como se indica en Etiquetado automático de temas?
      :arrow_right: Ver Etiquetas: restricciones por categoría, grupos de etiquetas, relaciones.
  5. :factory: Implementar la versión mejorada de Locations Plugin 🌍 - #429 :star_struck:

Si seguimos por este camino, definitivamente responderé a tu generosa oferta.

Eso es poco probable en este momento, ya que nuestra comunidad está a punto de dar su primer paso y los ingresos estarán en un nivel muy bajo; además, somos una organización sin fines de lucro.

Eso se responde en Set up structured tagging with tag groups and category tag restrictions

Todo es posible en principio.

Por ejemplo, anteriormente creé una jerarquía de categorías de 3 niveles que también soporta intersecciones múltiples de etiquetas a nivel de categoría.

Estructura de rutas para jerarquía de categorías de 3 niveles con intersecciones múltiples de etiquetas
scope "/multi" do
  constraints(tag_id: /[^\/]+?/, format: /json|rss/) do
     get '/c/:category/t/:tag_id/*tags' => 'tags#show', as: 'tags_category_show'
     get '/c/:parent_category/:category/t/:tag_id/*tags' => 'tags#show', as: 'tags_parent_category_category_show'
     get '/c/:grandparent_category/:parent_category/:category/t/:tag_id/*tags' => 'tags#show', as: 'tags_grandparent_category_category_show'

     Discourse.filters.each do |filter|
       get "/c/:category/t/:tag_id/*tags/l/#{filter}" => "tags#show_#{filter}", as: "tags_category_show_#{filter}"
       get "/c/:parent_category/:category/t/:tag_id/*tags/l/#{filter}" => "tags#show_#{filter}", as: "tags_parent_category_category_show_#{filter}"
       get "/c/:grandparent_category/:parent_category/:category/t/:tag_id/*tags/l/#{filter}" => "tags#show_#{filter}", as: "tags_grandparent_category_category_show_#{filter}"
     end
   end
end

Esto es más complejo de lo que creo que deseas hacer, pero no es sostenible a menos que estés dispuesto a invertir mucho tiempo o recursos en su mantenimiento. Es probable que se rompa en algún momento cuando Discourse actualice sus versiones estándar.

Con ese contexto, hay dos cosas que debes entender sobre la estructura de rutas de categorías y etiquetas en Discourse estándar:

  1. Las intersecciones múltiples de etiquetas solo son posibles a nivel del sitio completo, no a nivel de categoría. Es decir, en Discourse estándar no existen rutas para mostrar una lista de temas que pertenezcan a una categoría específica y que tengan más de una etiqueta específica. Si quisieras esto, tendrías que agregar la ruta manualmente.

  2. Las intersecciones de categorías no son posibles. Es decir, no existe una ruta en Discourse para mostrar temas de dos categorías en el mismo nivel (por ejemplo, dos categorías padre o dos categorías hijas).

Aún así, puedes lograr un sistema de cuatro niveles (que parece ser tu objetivo) sin realizar adiciones significativas en el lado del servidor.

Por ejemplo, podrías usar exclusivamente etiquetas para representar los cuatro niveles. https://thepavilion.io/tags/intersection/events/bug/to-do/high representa la intersección entre las etiquetas events, bug, to-do y high en Pavilion. Podrías tener 4 menús desplegables, uno para cada grupo de etiquetas del que se extraen esas etiquetas, por ejemplo:

[plugin] [type] [status] [importance]

Una vez que hayas definido cómo quieres estructurar tu jerarquía dentro de la estructura de rutas existente de Discourse, el resto de los elementos que has mencionado son solo modificaciones del lado del cliente y son (relativamente) sencillos.

  1. Jerarquía de categorías de 3 niveles

    ¿Hay algún ejemplo? No tengo claro cómo se vería ni dónde se añade el código.
    ¿Dónde y cómo se introduce grandparent_category, ya que no hay herramientas predeterminadas para hacerlo mediante la interfaz de usuario?
    ¿Está relacionado de alguna manera con Pavilion? Supongo que no, ¿verdad? El código anterior alteraría la página de destino de las categorías, ¿no?

  2. Las intersecciones de múltiples etiquetas suenan bien, aunque

    eso podría requerir omitir las categorías como ruta principal de navegación y construir una página de destino personalizada basada en esas etiquetas, algo que pregunté en Display tags by tag group - #22 by PackElend
    ¿Eso requeriría un tema personalizado, verdad?

  3. solo etiquetas

    sí, esa es la idea de cómo empezar; cualquier otra cosa se puede cambiar en una etapa posterior.
    mientras nos aseguremos de un etiquetado adecuado, todo debería ser factible, dependiendo del tiempo y la tolerancia a la frustración :), ¿no?
    La jerarquía sería la siguiente:

    1. nivel: nodos locales
    2. nivel: continentes
    3. nivel: naciones
    4. nivel: ciudades

    Al principio, usaremos correctamente solo nodoss locales como categoría y una subcategoría por ciudad*. Tan pronto como haya demasiados nodos, cambiaremos a nodos locales y naciones, con la esperanza de crear nuestro propio tema para hacer la navegación basada en etiquetas más atractiva (por ejemplo, los mismos cuadros para etiquetas que para categorías, como se mencionó en el punto 2).
    Además, espero que podamos avanzar con mi próxima solicitud de función, discutida en Plugin de ubicaciones, ya que podría usarse en muchos grupos de categorías/etiquetas :angel:.

    Lo más importante es que pongamos en marcha Etiquetado automático de temas lo antes posible; de lo contrario, tendremos un desastre antes incluso de empezar a gran escala.
    Además, necesitamos introducir cuadros desplegables adicionales en la barra de navegación, que se rellenen con etiquetas según la selección. Espero que no sea gran problema mezclar subcategorías con cuadros desplegables definidos por etiquetas.
    ¿Es sencillo lograr algo como la disposición de abajo?

    1. Disposición con bajo número de nodos
      image
    2. Disposición con mayor número de nodos
      image
  4. fusionar cuadros
    Por último, pero no menos importante, podría ser útil: ¿puedes fusionar cuadros como:

image

Esto no funcionará porque viola una de las restricciones que mencioné.

No puedes filtrar por dos etiquetas dentro de una categoría.

image

No estoy seguro, pero creo que estás asumiendo que si estás en la categoría de nodos locales y filtras por ‘continentes’, también podrás filtrar por naciones y ciudades al mismo tiempo. Esto tampoco funcionará.

Creo que esta es tu mejor opción.

usar solo nodos locales como categoría y una subcategoría por ciudad

Creo que estás intentando incorporar demasiada planificación futura en tus necesidades actuales.

En cuanto haya demasiados nodos, cambiaremos a nodos locales y naciones

Entiendo el deseo de establecer la ‘estructura’ adecuada desde ahora, pero por bueno que sea tu servicio, pasará un tiempo antes de que esto se convierta en un problema para ti, es decir, años. En esa etapa, las suposiciones sobre las que estás operando tu comunidad habrán cambiado.

Además, el problema que enfrentarás será mayormente de organización, más que de jerarquía. Por ejemplo, podrías simplemente agrupar las subcategorías de ciudades en una barra de navegación modificada según la nación, si lo deseas. Si quisieras tener discusiones a nivel ‘nacional’ (pregunta si eso tendría sentido de todos modos), podrías simplemente tener una subcategoría separada para eso.

No necesariamente necesitas una estructura jerárquica en tu foro de discusión que coincida estrictamente con la jerarquía administrativa de los lugares alrededor de los cuales ocurre la discusión. Necesitas una jerarquía que permita a tus usuarios encontrar el contenido relevante para ellos. Entiendo que estás conectando esos dos conceptos, pero no estoy seguro de si eso está justificado. Centrarse demasiado en esa conexión está sobrecomplicando tu pensamiento sobre la estructura del foro.

Básicamente, creo que estás invirtiendo demasiado en hacer que esto sea estructuralmente similar a cómo ves el estado ideal de tu servicio desde una perspectiva de 10.000 pies, es decir, operando a una escala tan grande que sea necesario dividir las ciudades por naciones y continentes. Cuando y si llegas a ese punto, toda la naturaleza de esta decisión será diferente.

tienes razón, fue un error mío; anoche me perdí en los detalles.

[1] ¿No sería posible añadir cuadros desplegables adicionales?
Eso simularía de alguna manera una búsqueda avanzada.

estoy de acuerdo. Estoy tratando de unir el pensamiento profundo y estructurado de lo antiguo con el enfoque de Discourse.

pero aún así, como dijiste,

no estoy seguro de que solo haya

dado que hay un enfoque en proyectos en áreas geográficas muy limitadas. Por supuesto, ciertos temas tendrán importancia nacional o global. Cómo moderar eso, poner todo en el contexto adecuado y hacerlo disponible en el rincón correcto de Discourse es probablemente algo donde aplica el aprendizaje mediante la práctica.

Si decidimos confiar solo en etiquetas, tu enfoque de intersección de etiquetas podría ayudar enormemente. Antes de dar ese paso, necesitamos personalizar la página de destino de etiquetas y intersección para que se vea de alguna manera igual que la página de destino de categorías. ¿Es eso factible?
Imagino hacer que el diseño de https://se23.life/tags utilice cuadros llenos de «subetiquetas», como se sugiere en Higher level of granularity for category & subcategory styling - #7 by PackElend (allí pedía mejorar los cuadros para subcategorías).
Además, en cuanto hagas clic en un cuadro o etiqueta dentro de un cuadro, se activará la consulta https://thepavilion.io/tags/intersection/tag1/tag2/tag3/.... El resultado se renderizará y mostrará de la misma manera que el estilo de cuadro (o lo que consideremos apropiado).

Como ves, sigo atrapado en la ruta de múltiples niveles, ya que es la misma analogía: cuando haces zoom desde la escala global hasta la local. Para cualquier usuario nuevo, esa es la ruta de navegación más natural para llegar a su nodo local.
Espero que tengas razón y

pero podría haber preocupaciones de que un nivel se sature con demasiadas etiquetas. Por ejemplo, tener todas las ciudades de EE. UU. o China en las subcategorías China y EE. UU., respectivamente, puede volverse desordenado.

estoy de acuerdo, aunque probablemente estoy

:grin:. Esa afirmación ayudará a desemocionalizar el enfoque de nivel profundo.

¿puedes explicarlo con más detalle o hay algún ejemplo al respecto?
¿Esta personalización de la barra de navegación es de alguna manera lo mismo que se preguntó al principio de este post, marcado como [1]?

Creé unos bocetos que visualizan una posible hoja de ruta, postulando que los niveles de nación y ciudades no pueden coexistir lado a lado, haciendo que cada uno sea una subcategoría de nodos locales.

  1. La página de destino son las categorías.

  2. La página de destino son las categorías, pero los nodos locales aparecen como champiñones.

  3. La página de destino son las etiquetas; un tema personalizado se encarga de que las categorías tengan un diseño similar.