Tutorial anterior: Developing Discourse Plugins - Part 1 - Create a basic plugin
Primeros pasos: Plantillas
La aplicación cliente de Discourse está escrita utilizando el framework de JavaScript Ember.js. Ember utiliza Plantillas para generar HTML. Hay una excelente introducción al lenguaje de plantillas en ese enlace, así que asegúrate de leerlo detenidamente.
El problema: Agregar elementos a la interfaz de usuario de Discourse
Muchos plugins necesitan agregar y extender la interfaz web de Discourse. Proporcionamos un mecanismo para hacerlo llamado “salidas de plugin” (plugin outlets) en las plantillas de Handlebars.
Si navegas por las plantillas 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 agregar su propio marcado.
Al crear tu plugin, busca en las plantillas de Discourse (en archivos .gjs) que deseas modificar un <PluginOutlet />. Si no hay uno, ¡solo pídenos que lo extendamos! Estaremos encantados de agregarlos si tienes un caso de uso válido. Si quieres facilitarnos y acelerar el proceso, ¡envía una solicitud de extracción (pull request) en GitHub!
Si quieres ver algunos de los lugares donde existen salidas de plugin, puedes ejecutar el siguiente comando en una shell compatible con POSIX:
git grep -A 1 "<PluginOutlet" -- "*.gjs"
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.
Conectarse a una salida de plugin
Una vez que hayas encontrado la salida de plugin a la que deseas agregar contenido, debes escribir un conector para ella. Un conector es un componente .gjs cuyo nombre de archivo incluye connectors/<nombre de la salida> en su ruta.
Por ejemplo, si la plantilla de Discourse tiene:
<PluginOutlet @name="evil-trout" />
Entonces cualquier archivo .gjs que crees en el directorio connectors/evil-trout se agregará automáticamente. Así que si creas el archivo:
plugins/hello/assets/javascripts/discourse/connectors/evil-trout/hello.gjs
Con el contenido:
<template>
<b>Hola Mundo</b>
</template>
Discourse insertará <b>Hola Mundo</b> en ese punto de la plantilla.
Ten en cuenta que llamamos al archivo hello.gjs. El nombre del archivo (a diferencia del nombre del directorio) no importa, pero debe ser único en todos los plugins. Es útil nombrarlo de manera descriptiva en función de lo que estás extendiendo para que haga. Esto facilitará la depuración en el futuro.
Solución de problemas
- Verifica 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: Configuraciones 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.



