用户投资组合的多重安装

好的,我换了个方向,不再尝试使用 portfolio 插件。不确定是应该发在这里还是新开一个帖子——如果需要的话请告诉我!

有人能帮我看看,告诉我哪里做错了(希望也能告诉我为什么/如何修复)吗?我花了无数小时阅读教程、编写和修改代码,但我还是个新手,已经到了不知道下一步该尝试什么的程度了。

目标:在用户的摘要页面上显示特定类别的主题列表。
在此用例中,它用于一个 RPG 论坛,用户可以在其中创建角色来发布故事。我希望这个插件能显示用户创建了哪些角色,这样就不用费力去挖掘了。所有角色表都将存储在同一个论坛中。所以,我认为我只需要创建一个主题列表,从正确的用户和正确的论坛获取主题。

我使用了以下作为参考:

https://meta.discourse.org/t/add-a-featured-topic-list-to-your-discourse-homepage/132949

这是我的尝试。到目前为止,主题列表的标题(主题/回复/活动)显示在正确的位置,但没有填充主题。

<script type="text/discourse-plugin" version="0.8">
  const ajax = require('discourse/lib/ajax').ajax;
  const Topic = require('discourse/models/topic').default;
  const User = require('discourse/models/user').default;
  // 需要 ajax、Topic 和 User

  api.registerConnectorClass('above-user-summary-stats', 'character-list', {
    // above-user-summary-stats 是插件出口,character-list 是自定义组件名称

    setupComponents(args, component) {

        const store = getOwner(this).lookup("service:store");

        return ajax(userPath(`/topics/created-by/${this.username_lower}.json`)).then(function (result) {
        // 从 user.js 模型中的 summary() 获取的行;尝试查找我们正在查看的用户配置文件的用户名,以便访问他们创建的主题的 json

            let characterList = [];
            // 用于推送主题的空数组

            result.topic_list.topics.forEach.category_id(4)(function(topic){
            // 仅来自我们想要的确切类别的主题

            // 大约在这个地方,Kris 的教程有一些将用户与主题关联的行。我忽略了它,因为我不需要除原始发帖人以外的用户显示在主题旁边。这重要吗?
            //topic.posters.forEach(function(poster){
                //poster.user = $.grep(featuredUsers, function(e){ return e.id == poster.user_id; })[0];
              //});

                characterList.push(Topic.create(topic));
                // 将主题添加到主题列表中

            });

            component.set('characterList', characterList);
            // 使用数组中的主题设置我们的组件

        }); // 结束 ajax


    } // 结束 setupComponents

  });
</script>

<script type="text/x-handlebars" data-template-name="/connectors/above-user-summary-stats/character-list">

      <div class="custom-character-list-wrapper">
        {{topic-list topics=characterList showPosters=false}}
      </div>

</script>