Quiero cambiar algo de HTML básico en un plugin con el que estoy experimentando (sería conveniente tener todos los cambios en un solo plugin). Se trataría de HTML que pondría en la sección header del personalizador de temas en el panel de administración, si estuviera usando ese panel en lugar de un plugin.
En un tema, tendrías simplemente una carpeta directa llamada common, que contendría los diferentes archivos, como header.html.
Sé que las hojas de estilo comunes para un plugin pueden ir en plugin/assets/stylesheets/common. ¿Dónde pondría este archivo header.html en un plugin?
Los scripts normalmente irían en un inicializador o se activarían mediante un evento en un componente.
Las llamadas a la API del plugin irían en el inicializador.
Los cambios en las plantillas probablemente se adjuntarían a un conector de plugin (o, si es desesperado, solo: anúlalos en la carpeta de plantillas).
También podrías decorar o volver a abrir widgets en el inicializador.
No deberías necesitar poner ‘html desnudo’ en ningún lugar, después de todo, ¿lo que realmente estás modificando es una aplicación web, no una página web?
En cualquier caso, no habrá ningún daño particular en ejecutar múltiples plugins y TCs uno al lado del otro…
Añadimos nuevo html todo el tiempo en temas y en el personalizador. Quiero añadir esto a mi plugin (en lugar de a un tema) para tener una única base de código.
¿Dónde se coloca el html en un plugin que, si estuvieras creando un tema, pondrías en el “encabezado” de la carpeta común?
Para CSS, el equivalente en un plugin es [plugin]/assets/stylesheets/common/[file.scss]
Siguiendo este formato, he intentado agregar un archivo en [plugin]/assets/views/layouts/common/header.html, pero no funcionó (hacer solo views/header.html tampoco funcionó).
Puedo cambiar las plantillas, pero para cambios simples de HTML como los que hacemos en los temas, sería agradable poder hacer un cambio simple de HTML en header.html (o su equivalente). Por ejemplo, ¿dónde colocarías lo siguiente en un plugin (que ya está haciendo cosas complejas del lado del servidor, de ahí la necesidad de un plugin):
También me confunde la diferencia en cómo hacer cosas así en un plugin versus en un tema. Podrías optar por usar un componente del tema para eso, pero parece que buscas la mejor solución en lugar de la más rápida (aunque hay algunas ventajas en tener ese código separado para un mantenimiento independiente).
Creo que necesitas agregar una línea al archivo plugin.rb que incluya el archivo que deseas. Lo que yo hago es clonar algo del repositorio de Discourse en GitHub llamado all-the-plugins y buscar allí un ejemplo con grep.
Genial. Gracias. Sí, he estado pensando que quizás la situación es que, de hecho, actualmente no hay una forma sencilla de hacer cambios en HTML en un plugin como lo harías en un tema: para hacer cambios en HTML, tienes que ir a las plantillas/conectores de un plugin (no es demasiado complicado, pero es diferente a la mentalidad más simple de los temas, como common/header.html).
Miraré plugin.rb para ver si eso es actualmente más fácil que simplemente seguir la ruta normal de plantillas/componentes.
No está donde dije, pero lo colocas en el árbol de activos con el nombre correcto. Es imposible de entender hasta que lo comprendes, y luego es totalmente obvio.
Edición: Hola @JQ331. Acabo de darme cuenta de que creo que hice lo que necesitas en un plugin ayer, pero soy tan malo en esto que no me di cuenta de que eso era lo que buscabas. Ver GitHub - literatecomputing/discourse-max-topics-per-month · GitHub. Es muy sencillo, así que no hay mucho que dificulte encontrar el ejemplo.