主题和主题组件允许您处理上传的资源,例如图像和字体。您可以使用站点设置来控制主题接受哪些资源:theme authorized extensions(主题授权扩展名)
在主题和组件中包含资源
对于远程主题
远程主题包括:
- 从主题的“Popular”(热门)列表中安装的主题和组件
- 使用“From a git repository”(从 git 仓库)方法安装的主题和组件
要向远程主题或主题组件上传资源,请参阅 Create and share a font theme component 以获取详细示例。
上传资源到本地主题和组件
本地主题包括:
- 每个 Discourse 实例自带的默认 Light(浅色)和 Dark(深色)主题
- 使用“+ Create New”(+ 创建新主题)安装方法创建的主题和组件
- 使用“From your device”(从您的设备)安装方法从本地计算机上传的主题和组件。
要向本地主题或主题组件上传资源,请导航到您的主题或组件,然后在“Uploads”(上传)部分选择“+ Add”(+ 添加):
在“Add Upload”(添加上传)模态框中,选择一个文件并输入一个 SCSS 变量名称,以便与您的 CSS、javascript 和/或 handlebars 自定义一起使用
上传后,资源将显示在“Uploads”列表中:
重要提示:如果组件是从 git 仓库远程安装的,请勿通过管理界面向主题和组件添加上传内容。组件的更新将清除未包含在 git 仓库中的任何上传内容。
如何使用资源
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: _使用
ttf或otf字体时,请确保使用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
您不能直接将主题资源添加到纯 HTML 中(例如在自定义管理面板的页眉或页眉后部分)。您必须使用 handlebars 模板或插件 API(更多信息请参阅 https://meta.discourse.org/t/developer-s-guide-to-discourse-themes/93648)。
一种解决方法是将您的资源作为背景图像使用 SCSS 加载(如上例所示)。因此,在主题的页眉部分,您可以添加:
<div class="my-custom-div">
<a href="/"></a>
</div>
然后在您的 CSS 中:
.my-custom-div a {
height: 50px;
width: 100px;
background-image: url($asset-name);
}
将主题上传作为设置访问
您也可以在 JavaScript 中将 theme_uploads 视为设置(相关提交)。
这允许主题和组件访问主题资源。
在主题 js 内部,您现在可以使用以下方式获取资源的 URL:
settings.theme_uploads.name
附加信息
此文档是版本控制的 - 在 github 上 建议更改。



