This query provides a comprehensive view of all themes in your Discourse instance along with their installed components, and can be helpful for admins who manage multiple themes and need to quickly identify which components are installed on each theme.
-- [params]
-- null text :theme_name
-- Query to list all themes and their associated installed components
WITH parent_themes AS (
SELECT id, name
FROM themes
WHERE component = false
AND (:theme_name IS NULL OR name ILIKE '%' || :theme_name || '%')
)
SELECT
pt.name AS theme_name,
ct.name AS component_name,
ct.enabled AS component_enabled
FROM parent_themes pt
LEFT JOIN child_themes child ON child.parent_theme_id = pt.id
LEFT JOIN themes ct ON ct.id = child.child_theme_id
ORDER BY pt.name, ct.name
Parameters
- theme_name: (Optional) Filter results to show only themes containing this text. The default view shows all themes and their components
Results
- theme_name: The name of each theme
- component_name: The name of components installed on the theme
- component_enabled: Whether the component is enabled (true) or disabled (false)
Themes that have no components will appear with NULL values for component fields. Results are ordered alphabetically by theme name and then component name
Example Results
theme_name | component_name | component_enabled |
---|---|---|
Default | discourse-adplugin | true |
Default | discourse-chat | true |
Default | discourse-signatures | false |
Corporate | discourse-header-search | true |
Corporate | discourse-tooltips | true |