A medida que los temas se vuelven más potentes, hay más cosas que recordar sobre cómo funcionan. Tenemos mucha documentación detallada en #howto / #themes, pero si solo necesita algo para refrescar su memoria, esta guía puede ayudarle.
Recursos Generales
Guía para principiantes
Guía para diseñadores
Guía para desarrolladores
Creador de Temas
Tema CLI
Directorio de Temas
Directorio de Componentes
Modificadores de Tema
Configuración del sitio tematizable
Estructura de Archivos/Carpetas leer más
about.json
settings.yml
common/, desktop/, mobile/
{common|desktop|mobile}.scss
head_tag.html
header.html
after_header.html
body_tag.html
footer.html
embedded.scss (solo common)
locales/
en.yml
...
assets/
(archivos nombrados arbitrariamente, referenciados en about.json)
stylesheets/
(archivos nombrados arbitrariamente, se pueden importar entre sí, y common/desktop/mobile.scss)
javascripts/
(archivos nombrados arbitrariamente. Soporta .js .hbs y .raw.hbs)
about.json información de estructura, metadatos disponibles
{
"name": "Mi Tema",
"component": false,
"license_url": null,
"about_url": null,
"authors": null,
"theme_version": null,
"minimum_discourse_version": null,
"maximum_discourse_version": null,
"assets": {
"variable-name": "assets/my-asset.jpg"
},
"color_schemes": {
"Mi Esquema de Color": {
"primary": "222222"
}
}
}
SCSS
Javascript leer más
// {theme}/javascripts/api-initializers/init-theme.gjs
import { apiInitializer } from "discourse/lib/api";
export default apiInitializer((api) => {
// Tu código
});
Javascript de Múltiples Archivos
Configuración leer más
settings.yml:
fruit:
default: apples|oranges
type: list
description: # Método antiguo. Es mejor definirlos en los archivos de localización (ver abajo)
en: English Description
fr: Description Française
Acceso desde JavaScript:
console.log(settings.fruit);
Acceso desde plantillas gjs:
<template>{{settings.fruit}}</template>
Acceso desde scss:
html {
font-size: #{$global-font-size}px;
background: $site-background;
}
Configuración del sitio tematizable leer más
about.json:
"theme_site_settings": {
"enable_welcome_banner": false
}
Acceso desde JavaScript:
@service siteSettings;
this.siteSettings.enable_welcome_banner;
Acceso desde plantillas gjs:
<template>{{this.siteSettings.enable_welcome_banner}}</template>
Traducciones leer más
locales/en.yml
en:
my_translation_key: "I love themes"
theme_metadata: # Estos se usan en el panel de administración. No se ponen a disposición de tus archivos js/hbs
description: Este tema te permite hacer cosas increíbles en tu Discourse
settings:
fruit: Una descripción de la configuración de whitelisted_fruits
Acceso desde JavaScript:
import { i18n } from "discourse-i18n";
i18n(themePrefix("my_translation_key"));
Acceso desde plantillas gjs:
import { i18n } from "discourse-i18n";
<template>
{{i18n (themePrefix "my_translation_key")}}
<DButton @label={{theme-prefix "my_translation_key"}} />
</template>
Este documento está controlado por versiones: sugiere cambios en github.