Eso es muy útil en cuanto a temas vs. plugins y también respecto al ejemplo específico que mencioné. Gracias.
Hasta ahora, mi enfoque para introducir cambios ha sido revisar los detalles del código de Discourse (¿dónde se define este objeto?, ¿qué controla esta plantilla?, ¿dónde está la lógica que maneja esta acción?, etc.). Pero eso ha sido un proceso lento.
Pienso que probablemente una ruta más eficiente sería centrarse en la API. De esa manera, no necesito revisar todos los detalles del código maduro de Discourse y puedo enfocarme en construir un tema en lugar de un plugin, o quizás simplemente introducir cambios en el panel de “personalización”.
Básicamente, entender cómo funciona la API parece mucho más manejable que entender la base de código de Discourse.
Para seguir con el ejemplo que mencioné: si el usuario es moderador de una categoría, permitir que ese usuario fije temas en la página de la categoría.
¿Podría hacerlo sin un plugin? Déjame ver si puedo esbozarlo:
1. ¿Es un usuario moderador de una categoría?
Actualmente no veo nada en la API que me indique si un usuario es moderador de una categoría. Esperaría encontrarlo en una llamada GET para obtener una categoría, pero no veo tal llamada allí. O quizás en la llamada GET para obtener un usuario, pero allí no veo una lista de categorías de las que el usuario es moderador.
¿Podría agregar estas cosas?
O, alternativamente, quizás podría crear un campo personalizado en el usuario o en la categoría para identificar que es moderador, y luego hacer una llamada a la API a ese campo personalizado cuando se cargue la página de la categoría.
2. Si el usuario es moderador, mostrar el botón de fijar.
Si puedo responder a (1), entonces asumo que puedo simplemente agregar este botón con JavaScript y CSS del lado del cliente, mostrándolo si el usuario es moderador.
3. El usuario (que es moderador) hace clic en el botón y eso fija el tema.
En la API, los temas parecen tener una característica “fijado” (un booleano). Asumo que esto se correlaciona con si están fijados en su categoría, ya que parece que cada tema solo tiene una categoría.
Así que aquí, cuando el moderador hace clic en el botón “fijar”, probablemente podría actualizar el estado “fijado” del tema a Verdadero. Si eso no funciona, los campos personalizados también podrían ser una solución aquí (aunque no veo cómo agregar campos personalizados a un tema).
Con eso, o algo similar, parece que podría lograr esta tarea con la API que, si lo hiciera con un plugin, requeriría mucho tiempo revisando los archivos de la base de código de Discourse.
¿Suena bien?