Documentación sobre cómo extender Discourse con plugins, temas y componentes de tema, trabajar con el código principal y utilizar la API de Discourse.
Introducción
- Introducción: Introducción al desarrollo de Discourse
Entornos de desarrollo
- Contenedor de desarrollo (Dev Container): Desarrollar Discourse usando un Contenedor de Desarrollo
- GitHub Codespaces: Desarrollar Discourse en GitHub Codespaces
- Configuración de Docker: Instalar Discourse para desarrollo usando Docker
- Configuración de macOS: Instalar Discourse en macOS para desarrollo
- Configuración de Ubuntu/Debian: Instalar Discourse en Ubuntu o Debian para desarrollo
- Configuración de Windows: Instalar Discourse en Windows para desarrollo
- Plugins sin Docker: Instalar plugins en su entorno de desarrollo sin Docker
- Configuración local: ¿Configurar un entorno de desarrollo local de Discourse?
- Configuración multisitio: Configurar un entorno de desarrollo multisitio
- Configuración de Fedora: Configurar Discourse para desarrollo en Fedora Linux
Código e Internos
- Componentes Ember: Añadir componentes Ember a Discourse
- Lint y formato: Aplicar lint y formato automáticamente al código antes de los commits
- Pruebas de aceptación: Escribir pruebas de aceptación y pruebas de componentes para código Ember en Discourse
- Ejecutar conjuntos de pruebas: Cómo ejecutar los conjuntos de pruebas QUnit de Discourse core, plugins y temas
- Compatibilidad de versiones: Fijar versiones de plugins y temas para instalaciones antiguas de Discourse (.discourse-compatibility)
- Propiedad de objetos Ember: Propiedad de objetos Ember (getOwner, inyecciones de servicio, etc.)
- Rendimiento de JS: Usar ‘tachometer’ de Google para medir cambios en el rendimiento de JS en Discourse
- CI con GitHub Actions: Configurar Integración Continua usando GitHub Actions
- Extensiones de Markdown: Guía del desarrollador para extensiones de Markdown
- Conversión de modales: Convertir modales de controladores heredados a la nueva API de componentes DModal
- API DModal: Usar la API DModal para renderizar ventanas modales (también conocidas como popups/diálogos) en Discourse
- API de JS: Usar la API de JS
- Conectores de ‘Plugin outlet’: Usar conectores de ‘Plugin Outlet’ desde un tema o plugin
- modifyClass: Usar modifyClass para cambiar el comportamiento del núcleo
- Creación de rutas: Crear rutas en Discourse y mostrar datos
- Método de autenticación: Añadir un nuevo método de autenticación ‘gestionado’ a Discourse
- Serialización accidental de modelos ActiveRecord: Prevenir la serialización accidental de modelos ActiveRecord
- Sobrescribir plantillas: (no recomendado) Sobrescribir plantillas de Discourse desde un tema o plugin
- Objetos de servicio: Usar objetos de servicio en Discourse
- Especificaciones del sistema: Escribir especificaciones de sistema de extremo a extremo para la interfaz de usuario de Discourse
- FormKit: Conjunto de herramientas de Discourse para renderizar formularios.
- Activaciones de AppEvents: Referencia de activaciones de AppEvents
- Transformers: Usar Transformers para personalizar valores y comportamiento del lado del cliente
- Personalización de la lista de temas: Personalizar la lista de temas
- Pautas de CSS: Pautas para clases CSS usando BEM
- Diseño para dispositivos: Diseño para diferentes dispositivos (tamaño de viewport, táctil/hover, etc.)
Plugins
- Plugin básico: Desarrollo de Plugins de Discourse - Parte 1 - Crear un plugin básico
- Plugin outlet: Desarrollo de Plugins de Discourse - Parte 2 - Conectarse a un ‘plugin outlet’
- Configuración del sitio: Desarrollo de Plugins de Discourse - Parte 3 - Añadir configuración personalizada del sitio
- Configuración de Git: Desarrollo de Plugins de Discourse - Parte 4 - Configurar git
- Interfaz de administración: Desarrollo de Plugins de Discourse - Parte 5 - Añadir una interfaz de administración
- Pruebas de aceptación: Desarrollo de Plugins de Discourse - Parte 6 - Añadir pruebas de aceptación
- Publicar su plugin: Desarrollo de Plugins de Discourse - Parte 7 - Publicar su plugin
- Nuevas localizaciones: Añadir una nueva localización desde un plugin
- Integración de chat: Añadir un nuevo proveedor a discourse-chat-integration
- Extensión markdown-it: Reempaquetar una extensión markdown-it como un plugin de Discourse
- Autocarga de Rails: Estructurar un plugin para la autocarga de Rails
Temas y Componentes de Tema
- Desarrollo de Temas: Desarrollo de Temas y Componentes de Tema de Discourse
- Referencia rápida: Guía de referencia rápida para desarrolladores de temas
- Guía de diseñadores: Guía para diseñadores sobre cómo empezar con temas en Discourse
- Theme Creator: Comenzar con Theme Creator y el Theme CLI
- Theme CLI: Instalar la aplicación de consola Theme CLI de Discourse para ayudarle a construir temas
- Estructura del tema: Estructura de temas y componentes de tema
- Múltiples archivos JS: Dividir el Javascript del tema en múltiples archivos
- Múltiples archivos SCSS: Dividir el SCSS del tema en múltiples archivos
- Configuración del tema: Añadir configuración a su tema de Discourse
- Objetos para configuración de tema: Tipo de objeto para la configuración del tema
- Migrar configuración: Migrar configuración de temas de Discourse
- Metadatos del tema: Añadir metadatos y capturas de pantalla a un tema
- Variables principales: Usar variables principales de Discourse en su tema
- Cadenas localizables: Añadir cadenas localizables a temas y componentes de tema
- Pruebas E2E: Pruebas de sistema de extremo a extremo para temas y componentes de tema
- Minimizar mantenimiento: Minimizar el mantenimiento en personalizaciones de temas
- Tamaños de fuente: Cambiar tamaños de fuente en sus temas
- Incluir activos: Incluir activos (ej. imágenes, fuentes) en temas y componentes
- Iconos personalizados: Reemplazar los iconos SVG predeterminados de Discourse con iconos personalizados en un tema
- Modo oscuro: Actualizar temas y plugins para soportar el modo oscuro automático
- Modificadores de tema: Modificadores de tema: Una breve introducción
- Pseudo-elementos: Insertar texto o imágenes en cualquier lugar de su sitio usando pseudo-elementos CSS
- Componente de fuente: Crear y compartir un componente de tema de fuente
- Lenguaje Highlight.JS: Instalar un nuevo lenguaje para Highlight.JS a través de un componente de tema
- Contenido de la página de inicio: Añadir contenido personalizado que solo aparece en su página de inicio
- Formato de mensaje: Soporte de formato de mensaje para localización
- Cambios globales de iconos: Cambiar iconos globalmente
- Iconos alternativos: Iconos alternativos
- Estilo de publicación wiki: Cambiar el estilo de una publicación wiki
- Esquema de color: Crear y compartir un esquema de color
- Menú de navegación: Usar el parámetro de consulta
navigation_menupara previsualizar la barra lateral u otras opciones - Estilos de contenido de publicación: Personalizar el contenido de las publicaciones con sus propios estilos
- Capturas de pantalla del tema: Añadir capturas de pantalla de previsualización a los temas de Discourse
- Configuraciones del sitio temables: Controlar la configuración del sitio con temas
Guías Generales
- Etiquetado de aplicaciones móviles: Cosas a considerar antes de decidir etiquetar las aplicaciones móviles de Discourse
- Automatizaciones personalizadas: Crear automatizaciones personalizadas
- Volcado de datos públicos: Volcado de datos públicos de Discourse
- Evaluaciones de IA: Ejecutar evaluaciones de IA de Discourse
Tutorial para desarrolladores de temas
- 1 - Introducción: Tutorial para desarrolladores de temas: 1. Introducción
- 2 - Tema remoto: Tutorial para desarrolladores de temas: 2. Creación de un tema remoto
- 3 - CSS: Tutorial para desarrolladores de temas: 3. CSS en temas
- 4 - Outlets: Tutorial para desarrolladores de temas: 4. Uso de ‘Outlets’ para insertar y reemplazar contenido
- 5 - Componentes: Tutorial para desarrolladores de temas: 5. Construcción y uso de componentes
- 6 - API de JS: Tutorial para desarrolladores de temas: 6. Uso de la API de JS
- 7 - Conclusión: Tutorial para desarrolladores de temas: 7. Conclusión