api.decorateWidget - 如何查找模板名称?

你无法在插件出口上使用 decorateWidget()。试试像这样的方法:

<script type="text/discourse-plugin" version="0.8.42">
    const h = require("virtual-dom").h;
    api.createWidget("user-card-custom-field", {
      html(attrs) {
        const userCustomFields = attrs.user.custom_fields;
        if (userCustomFields.user_field_4) {
            return h('span.poster-user-field', userCustomFields.user_field_4);
        }
      }
    });
</script>

<script type="text/x-handlebars" data-template-name="/connectors/user-card-post-names/user-card-custom-field">
    {{mount-widget widget="user-card-custom-field" args=(hash user=user)}}
</script>

mount-widget 会将我们从核心插件出口中可用的 user 对象传递进来,并使其在我们创建的 user-card-custom-field 小部件的属性中可用。

请确保根据需要已在站点设置中将 user_field_4 添加到你的“公开用户自定义字段”或“工作人员用户自定义字段”中。

编辑

此外,除非你有特别需要做的事情,否则你应该完全避免使用小部件,而直接使用插件出口:

<script type="text/x-handlebars" data-template-name="/connectors/user-card-post-names/user-card-custom-field">
  {{#if user.custom_fields.user_field_1}}
    <span class="poster-user-field">{{user.custom_fields.user_field_1}}</span>
  {{/if}}
</script>
8 个赞