Incluir assets (ej. imágenes, fuentes) en temas y componentes

Los temas y los componentes de tema le permiten gestionar los recursos subidos, como imágenes y fuentes. Puede controlar qué recursos acepta su tema utilizando la configuración del sitio: extensiones autorizadas del tema

Incluir recursos en temas y componentes

Para temas remotos

Los temas remotos incluyen:

  • Temas y componentes instalados desde la lista de temas Popular
  • Temas y componentes instalados usando el método Desde un repositorio git

Para subir recursos a un tema o componente remoto, consulte Create and share a font theme component para obtener un ejemplo detallado.

Subir recursos a temas y componentes locales

Los temas locales incluyen:

  • Los temas predeterminados Claro y Oscuro que vienen con cada instancia de Discourse
  • Temas y componentes creados usando el método de instalación + Crear Nuevo
  • Temas y componentes que se subieron desde su computadora local usando el método de instalación Desde su dispositivo.

Para subir recursos a un tema o componente local, navegue a su tema o componente y seleccione + Añadir en la sección Recursos subidos:

En el modal Añadir subida, elija un archivo e introduzca un nombre de variable SCSS para usarlo con sus personalizaciones de CSS, javascript y/o handlebars

Una vez subido, el recurso aparecerá en la lista de Recursos subidos:

:warning: Nota importante: No añada recursos subidos a temas y componentes a través de la interfaz de administración si el componente se instaló de forma remota desde un repositorio git. Las actualizaciones del componente eliminarán cualquier recurso subido que no estuviera incluido en el repositorio git.

Cómo utilizar los recursos

SCSS

@font-face {
  font-family: Amazing;
  src: url($Comic-Sans) format("woff2");
}

body {
  font-family: Amazing;
  font-size: 15px;
}

.d-header {
  background-image: url($texture);
}

:information*source: _Al usar fuentes ttf u otf, asegúrese de usar el formato opentype._

Javascript

// {theme}/javascripts/discourse/api-initializers/init-theme.gjs

import { apiInitializer } from "discourse/lib/api";

export default apiInitializer((api) => {
  console.log(settings.theme_uploads.balloons);
});

HTML

No puede añadir directamente un recurso de tema al HTML simple (como en las secciones de encabezado o después del encabezado del panel de administración de personalizar). Tiene que usar una plantilla handlebars o la API de plugins (más sobre esto en Developing Discourse Themes & Theme Components).

Una solución alternativa es cargar su recurso como una imagen de fondo usando SCSS (como en el ejemplo anterior). Así que en la sección de encabezado de su tema podría añadir:

<div class="my-custom-div">
  <a href="/"></a>
</div>

y luego en su CSS:

.my-custom-div a {
  height: 50px;
  width: 100px;
  background-image: url($asset-name);
}

Acceder a los recursos subidos del tema como configuraciones

También puede tratar theme_uploads como configuraciones en JavaScript (commit relacionado).

Esto permite a los temas y componentes acceder a los recursos del tema.

Dentro del js del tema ahora puede obtener la URL de un recurso con:

settings.theme_uploads.name

Información adicional


Este documento tiene control de versiones: sugiera cambios en github.

30 Me gusta

He creado un directorio de assets con 5 archivos svg para iconos de redes sociales. Los he añadido todos a about.json como se indica en Create and Share a font theme component. Los uso en mi CSS en body_tag.html.

Esperado: Los iconos deberían cargarse.

Real: Los iconos no se muestran. La barra de herramientas de desarrollo muestra que el navegador tiene algún concepto de que estos existen como Imágenes registradas… pero no hay datos en ellas.

¿Qué me falta? ¿Hay algún paso de compilación o algo?

1 me gusta