是否可以应用相同的逻辑为标签添加自定义字段?
有人将此应用到群组了吗?如果有,能否分享一下你们是怎么做的?
我想这应该能解决问题。希望它仍然是最新的。
不可以,标签没有自定义字段。您想实现什么目标?
是的,该存储库应该可以工作。只需将所有 my_field 实例更改为您字段的名称。
我正在尝试创建一个插件:Creating a User - Tag relation plugin
关于如何自定义这些组字段是否有更多文档?它确实与这个样板代码一起运行得很好。但如何正确扩展它?
例如,我想添加一些输入字段,例如:
<div class="control-group">
<label class="control-label" for="map">Chapter coordinates</label>
<input name="chapter_coordinates" id="chapter_coordinates" class="ember-text-field ember-view input-xlarge" value={{group.custom_fields.group_coordinates}} placeholder="E.g. 52.3727598,4.8936041" type="text">
<div class="control-instructions">Fetch coordinates from https://nominatim.openstreetmap.org/</div>
</div>
但我只是在猜测该怎么做,然后添加其余的 Discourse 内容。上面的例子是使用一个字段来表示坐标。我打算使用 g.json 来根据组元数据创建一个地图。
我还打算添加一个复选框,用于通过电子邮件向该组发送电子邮件。
<div class="control-group">
<label class="control-label" for="map">Contact chapter by email</label>
{{input type="checkbox" checked=group.custom_fields.contact_group_by_email}}
<span>{{i18n 'admin.groups.contact_group_by_email.label'}}</span>
</div>
但是,这个字段最好放在交互选项卡中。如何知道该怎么做才能将其放在那里?我想变得更精通这一点。但我的感觉是,这些信息只是在代码中,并没有记录在某处。这可能没关系,但需要更多的时间和精力来找到我想要的东西。虽然我想添加的内容很小,只是为组添加几个字段 ![]()
是的,这可能很棘手,并且在开始浏览 Discourse 代码库时会有点不知所措。听起来您正在尝试使用 GeoJSON。您是否考虑过使用或扩展 Locations Plugin?它已经设置为在 Discourse 中使用 GeoJSON。
插件开发课程?
我一直在考虑开设一个免费的 Discourse 插件开发课程,这基本上就是您所需要的。我已经为主题开发课程编写了课程材料(见下文)。如果有人投票赞成插件开发课程,我将编写并(通过 Zoom)提供该课程。
- 编写并提供插件开发课程
- 不编写并提供插件开发课程
主题开发入门
- GitHub - pavilionedu/discourse-theme-introduction
- GitHub - pavilionedu/discourse-theme-css
- GitHub - pavilionedu/discourse-theme-colors
- GitHub - pavilionedu/discourse-theme-html-one
- GitHub - pavilionedu/discourse-theme-html-two
- GitHub - pavilionedu/discourse-theme-javascript-one
- GitHub - pavilionedu/discourse-theme-javascript-two
*ps 如果达到 30 人,请告诉我。
太棒了!我实际上将使用 这个 Fairphone 社区地图 的一个分支。他们使用主题的原始 YAML 输出。我已经修改了我的分支,使用 g.json 中的数据在地图上绘制标记。我只缺少一些字段,例如坐标和一个用于在地图中使用电子邮件地址的布尔值。也许还有一些,但我首先需要了解它是如何工作的。谢谢你的链接!我这周会看看,看看我能进展到什么程度。一门课程也很棒!我现在掌握的是 JS/Ruby 技能。主要是 Python/Bash 和一些其他语言的零碎知识。
是否可以将自定义字段添加到帖子中?最好是从帖子撰写器中添加。
使用此插件需要最低哪个 Discourse 版本?
(discourse-topic-custom-fields)
GitHub - pavilionedu/discourse-group-custom-fields 这个是否仍然是最新的?
我之所以这样问,是因为我尝试实现一个新的自定义组字段,但在点击保存后,它似乎没有保存/保留我输入到输入字段中的值。
这是我所做的所有更改的提交(我认为我正确遵循了 edu 存储库的结构):add discord_role_id field to groups · aloha-pk/discourse-discord-sync@fd3eef1 · GitHub
是的,我刚测试过,它运行正常。
{{input type="text" checked=group.custom_fields.discord_role_id}}
您的问题是您将输入类型更改为 text,但将值输入保留为 checked。您需要将 checked 更改为 value。
好吧,这样就行了
谢谢你的帮助!![]()
我刚用这个更改重新构建,但不幸的是仍然看到同样的问题。我输入的值在保存并重新加载页面后会被清除。
还有其他建议吗 @angus?
你还更改了示例中的其他任何内容吗?示例可以正常工作。尝试从示例本身开始。如果它在你的环境中也失败了,那么就是其他地方出了问题。如果示例在你的环境中有效,那么逐步检查你所做的更改,直到找到导致问题的更改。
您好 @angus 使用此插件添加了一个自定义字段,现在运行正常。如何才能在类别页面上将此字段显示在类别名称下方?
以下是找出方法:
-
查找 discourse/discourse 中渲染分类页面的模板(在页面上搜索 HTML 元素)
-
在其中一个模板中找到一个插件插口 (plugin-outlet)
-
按照此处的说明使用插件插口
Using Plugin Outlet Connectors from a Theme or Plugin
写了这段代码但它仍然不起作用,你能告诉我问题出在哪里吗?
<script type="text/discourse-plugin" version="0.8">
const { getOwner } = require("discourse-common/lib/get-owner");
const { htmlSafe } = require("@ember/string");
api.decorateWidget("category-heading:after", (helper) => {
const category = helper.attrs.category;
if (category.custom_fields?.location) {
const customLocation = htmlSafe(category.custom_fields.location);
const template = getOwner(helper).lookup("template:components/category-header");
return template.fragment.build("custom-location", { customLocation });
}
});
</script>
<script type="text/x-handlebars" data-template-name="components/category-header/custom-location">
<div class="category-custom-location">{{customLocation}}</div>
</script>
它哪一部分不起作用?例如,当您在此处插入 console.log(category.custom_fields) 时,您会看到什么?
我今天安装了这个插件,代码如下,但它似乎坏了:GitHub - pavilionedu/discourse-category-custom-fields: Discourse plugin showing how to add custom fields to Discourse categories
它安装为“教育类别自定义字段”,并且作者信息不存在:
你期望发生什么?没有修改它不应该做任何事情。
