¡Eso es fantástico, @angus! Muchas gracias.
Un video siempre es agradable; estoy totalmente a favor de hacer las cosas lo más sencillas posible, pero no creo que sea necesario para obtener el valor clave de estos recursos que @angus ha recopilado. Estos recursos proporcionan el código que necesitas para lograr el objetivo específico del recurso (tener un campo personalizado de tema o un campo personalizado de categoría funcionando). Un video probablemente solo consistiría en que @angus o alguien más explicara cómo implementar el recurso, pero eso es sencillo y probablemente podamos simplemente explicarlo aquí.
Para aclarar, estos recursos no son plugins que simplemente agregas a tu sitio como una solución lista para usar que personaliza tu foro. Más bien, te proporcionan de manera eficiente la comprensión necesaria para codificar tus propios campos personalizados en tu plugin.
Así es como he utilizado estos recursos:
Deberás agregar el nombre y el tipo de campo que deseas en config/settings. El código en estos recursos utiliza variables que se definen allí. Por lo tanto, en realidad no necesitas hacer mucha personalización del código para que funcione en tu propio plugin después de eso; las variables en plugin.rb y en otros lugares hacen referencia a config/settings y luego deberían funcionar.
Después de actualizar config/settings, puedes simplemente seguir el código y agregarlo a tu plugin:
-
Comienza con el código en plugin.rb y agrégalo al plugin.rb de tu propio plugin para crear el campo personalizado.
-
Luego, ve al inicializador (en assets/javascripts/discourse/[custom-field-initializer]) para obtener el código que inicializará el campo personalizado y te permitirá guardarlo en el servidor.
-
Luego, crea el formulario en la capa de vista que será donde el usuario (o tu aplicación, si la aplicación agrega el campo automáticamente) pueda ingresar el valor para el campo personalizado, aquí (assets/discourse/connectors/[plugin-outlet-name]/[tu plantilla especial].hbs).
-
@angus ha configurado esto para que agregues los formularios para los campos personalizados en un outlet de plugin que se insertará en la plantilla de Discourse. La configuración para este formulario está aquí (assets/javascripts/discourse/lib/[nombre-del-campo-personalizado].js.es6), por lo que probablemente también quieras personalizarla para que el formulario funcione.
@angus, siéntete libre de corregir cualquier cosa que haya dicho aquí.
Una vez que entendí cómo configurar el campo personalizado siguiendo los pasos anteriores, comencé a personalizar las cosas un poco más (por ejemplo, siendo más creativo con el funcionamiento del formulario), pero esto fue un punto de partida extremadamente útil que me ahorró horas de trabajo.
Después de revisarlo, tuve algunas preguntas (como pregunté antes), pero obtener respuestas en Dev parece ser la forma más útil de proceder a partir de ahí.