最近更新的页面
Adding metadata and screenshots to a Theme
You can add various pieces of metadata to a theme. Some are stored in the about.json file, and s...
Migrate Discourse theme settings
Introduction As of Discourse version 3.2.0.beta3, Discourse themes/components can leverage a migr...
Objects type for theme setting
We are introducing a new type: objects to the supported types for theme settings which can be us...
Split up theme SCSS into multiple files
Themes and theme components are becoming steadily more powerful, and developers are getting more ...
Split up theme Javascript into multiple files
Complex theme javascript can be split into multiple files, to keep things nicely organised. To us...
Theme Developer Quick Reference Guide
As themes grow more powerful, there's more to remember about how they work. We have loads of deta...
Developing Discourse Themes & Theme Components
Discourse Themes and Theme Components can be used to customize the look, feel and functionality o...
Structuring a plugin for Rails autoloading
Many plugins include lots of class definitions inside plugin.rb, or use require_relative to loa...
Repackaging a markdown-it extension as a Discourse plugin
markdown.it the CommonMark engine used by Discourse has a wide array of plugins Header anchors, d...
Add a new provider to discourse-chat-integration
discourse-chat-integration abstracts away the boilerplate for integrating Discourse with external...
Add a new locale from plugin
Usually the best way to add a new language to Discourse is by creating a pull request as describe...
Developing Discourse Plugins - Part 7 - Publish your plugin
Previous tutorial: https://meta.discourse.org/t/developing-discourse-plugins-part-6-add-acceptanc...
Developing Discourse Plugins - Part 3 - Add custom site settings
Previous tutorial: https://meta.discourse.org/t/developing-discourse-plugins-part-2-connect-to-a-...
Developing Discourse Plugins - Part 2 - Connect to a plugin outlet
Previous tutorial: https://meta.discourse.org/t/developing-discourse-plugins-part-1-create-a-basi...
Private modules and the `-internals` convention
What -internals means A folder named -internals holds code that is not public API. It may be re...
Bundle splitting for plugins
By default, every javascript module in a plugin is loaded when Discourse boots. This guide descri...
Drag, resize, and gesture primitives
ui-kit ships the input-driven gesture primitives: dragging a payload onto a target, resizing a re...
Designing for Responsive Widths (Breakpoints, Viewport & Containers)
This document outlines the APIs used to adapt Discourse's user interface to different widths — bo...
Designing for Different Devices (Touch & Hover)
This document outlines the APIs used to adapt Discourse's user interface for different devices. T...
JavaScript type hinting & validation (typescript)
Discourse ships type information for its JavaScript code. This can provide inline documentation, ...