Tutorial anterior: Developing Discourse Plugins - Part 1 - Create a basic plugin
Introducción: Plantillas Handlebars
La aplicación cliente de Discourse está escrita usando el framework Javascript Ember.js. Ember utiliza Handlebars para todas las plantillas HTML. Hay una excelente introducción al lenguaje de plantillas en ese enlace, así que asegúrate de leerlo detenidamente.
El Problema: Añadir elementos a la Interfaz de Usuario de Discourse
Muchos plugins necesitan añadir y extender la interfaz web de Discourse. Proporcionamos un mecanismo para hacer esto llamado plugin outlets (salidas de plugin) en las plantillas Handlebars.
Si navegas por las plantillas Handlebars de Discourse, a menudo verás el siguiente marcado:
<PluginOutlet @name="edit-topic" />
Esto declara una salida de plugin llamada “edit-topic”. Es un punto de extensión en la plantilla que los autores de plugins pueden aprovechar para añadir su propio marcado Handlebars.
Al crear tu plugin, busca en las plantillas Handlebars de Discourse (en archivos .hbs) donde deseas realizar cambios un <PluginOutlet />. Si no hay uno, ¡simplemente pídenos que lo extendamos! Estaremos encantados de añadirlos si tienes un buen caso de uso. Si quieres facilitarnos y acelerarnos el hacerlo, ¡por favor, envía una solicitud de extracción (pull request) en github!
Si quieres ver algunos de los lugares donde existen las salidas de plugin, puedes ejecutar el siguiente comando si estás en OSX o Linux:
git grep "<PluginOutlet" -- "*.hbs"
También puedes mostrar las salidas de plugin en un sitio de Discourse activando la Barra de Herramientas de Desarrollador de Discourse. Simplemente escribe enableDevTools() en la consola del navegador en un foro de Discourse y haz clic en el icono del enchufe que aparece en el lado izquierdo de la página.
Conexión a una Salida de Plugin
Una vez que hayas encontrado la salida de plugin a la que quieres añadir contenido, tienes que escribir un connector (conector) para ella. Un conector es realmente solo una plantilla Handlebars cuyo nombre de archivo incluye connectors/<nombre de la salida> en él.
Por ejemplo, si la plantilla Handlebars de Discourse tiene:
<PluginOutlet @name="evil-trout" />
Entonces cualquier archivo Handlebars que crees en el directorio connectors/evil-trout se adjuntará automáticamente. Así que si crearas el archivo:
plugins/hello/assets/javascripts/discourse/connectors/evil-trout/hello.hbs
Con el contenido:
<b>Hello World</b>
Discourse insertaría <b>Hello World</b> en ese punto de la plantilla.
Nota que llamamos al archivo hello.hbs – La parte final del nombre del archivo no importa, pero debe ser única en todos los plugins. Es útil nombrarlo algo descriptivo de lo que estás extendiendo. Esto facilitará la depuración en el futuro.
Solución de Problemas
- Comprueba dos veces el nombre del conector y asegúrate de que coincida perfectamente con el nombre del plugin.
Más información
Más en la serie
Parte 1: Conceptos Básicos de Plugins
Parte 2: Este tema
Parte 3: Configuración del Sitio
Parte 4: Configuración de git
Parte 5: Interfaces de Administración
Parte 6: Pruebas de Aceptación
Parte 7: Publica tu plugin
Este documento está controlado por versiones - sugiere cambios en github.



