设置未出现

大家好,我刚开始为 Discourse 开发东西,并且正在开发一个主题组件。
链接:GitHub - NateDhaliwal/discourse-persistent-banner: A theme component for Discourse that cannot be closed by the user.

在将其放入 Theme Creator 时,设置没有出现,尽管我有一个 settings.yml。有什么想法吗?

1 个赞

在主题创建者那里看到任何错误消息了吗?

我认为您必须在开头和结尾使用相同的引号。

这可能也是一个问题。我建议尝试 default: ""

也许您想在选项中添加“block”。否则,您必须使用还原按钮再次选择它。

2 个赞

哎呀,我刚意识到我点的是“创建新”而不是导入……
但是现在,当我尝试使用 URL 时,它说 about.json 无效或不存在,并询问我它是否是一个主题。
About.json:

有什么问题吗?

许可证 URL 后缺少逗号。

4 个赞

:roll_eyes:
@merefield 版本会在 \"\" 中吗?

1 个赞

可能也是。看看例子就行了。

1 个赞

谢谢!最后一个问题,我似乎无法显示该变量。
https://github.com/NateDhaliwal/discourse-persistent-banner/blob/main/common/header.html

是因为我没有正确初始化它吗?我试着按照指南操作……

  1. 请不要使用“header.html”,请使用一个合适的组件(最好是 .gjs 文件,但 .hbs 文件也可能够用)。
  2. 在从设置或变量输出 HTML 时,请始终使用 html-safe 辅助函数。
2 个赞

那我需要使用

import Component from "@glimmer/component";

export default class PracticeComponent extends Component {
  get bannerLinks() {
    return JSON.parse(settings.banner_links);
  }
}

然后吗?

1 个赞

看看这数十亿的例子 :stuck_out_tongue_winking_eye:

1 个赞

只有在需要使用 JavaScript 处理内容时,才需要使用 gjs 文件,否则 hbs 模板文件可能就足够了。请自行尝试。

1 个赞

我不确定我是否走在正确的方向上。
我创建了 javascripts/persistent-banner.hbs,内容如下:
https://github.com/NateDhaliwal/discourse-persistent-banner/blob/main/javascripts/persistent-banner.hbs

但什么也没显示。尝试将其放在不同的位置,仍然无效。

尝试查看示例,但许多似乎没有帮助。
有什么建议吗?

1 个赞

您想在哪个插件插槽中放置您的横幅?
请参阅 Using Plugin Outlet Connectors from a Theme or Plugin

您可以参考 https://meta.discourse.org/t/add-a-featured-topic-list-to-your-discourse-homepage/132949?u=moin 作为示例

您可以使用 (deprecated) Plugin outlet locations theme component 来查找插件插槽的名称和位置。“above-main-container” 例如是主题列表上方最上面的一个,但不在侧边栏上方。

查看添加了类似功能的 Theme component 的代码也是学习的好方法。

2 个赞

您不需要也不应该在 hbs 文件中放置 script 标签。它们应该仅限于模板的内容。

不要凭空猜测,请阅读指南:

3 个赞

所以……我设法在不使用 hbs 文件的情况下使其正常工作,而是使用了带有 handlebars 的 <script> 标签,现在它奏效了。
我现在这样使用它,但我会继续尝试改用 hbs 文件。

1 个赞

我已经为你创建了一个快速的拉取请求,以便你能看到正确拆分文件的方。请随意合并或查看分支

6 个赞

非常感谢!现在可以用了!

1 个赞

没关系,内特。继续进行实验、阅读和查看其他示例。很快你就会比我更擅长这方面的开发工作 :smiley: :raised_hands:

2 个赞

谢谢你的鼓励!

1 个赞

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.