• 请求帮助
  • 如何与已有插件的数据进行交互(文章导入)

全插件设计很酷,但怎么交互呢?

计划开发文章与评论导入插件,但即使是这两种核心数据也是以插件(extensions)方式保存的。参考了「文章导入导出插件」,似乎是从官方代码库把相关的模型定义复制了过来?这样太太不优雅了,如果未来模型定义变更,岂不是要手动同步定义。

还是说我漏掉了什么信息,开发者文档实在是很简略...

    • 最佳回复Chenhe 选择

    你可以通过在插件中直接使用 Post 这些 Halo core 中定义的自定义模型,例如使用 client 查询数据

    private final ReactiveExtensionClient client;
    
    Mono<ListResult<Post>> listPosts() {
        return client.listBy(Post.class, new ListOptions(), PageRequestImpl.ofSize(10));
    }

没有理解你说的”似乎是从官方代码库把相关的模型定义复制了过来“ 是什么,我看了你给出的文章导入导出插件仓库,并没有复制 Post 这些自定义模型,你可以参考 Extension Client 文档来与自定义模型交互,唯一复制的一个类是 AbstractContentService 因为文章的内容存储是增量的要获得真实的文章内容需要增量还原,目前还没有给插件一个公用的逻辑因此这里通过复制逻辑实现且这里的逻辑几乎不可能变因此没有危险

你可以通过在插件中直接使用 Post 这些 Halo core 中定义的自定义模型,例如使用 client 查询数据

private final ReactiveExtensionClient client;

Mono<ListResult<Post>> listPosts() {
    return client.listBy(Post.class, new ListOptions(), PageRequestImpl.ofSize(10));
}

    guqing

    感谢回复。我看错了,我看错它导入的包名了,还以为是拷贝过来的。那么如果希望其他插件能方便地调用我插件的自定义模型,是不是最好提供一个 API 发布到 maven。

      Chenhe 是的,不过看需求,如果只是为了让别人能获取到你定义的自定义模型的数据那可以不是必须,通过 API 也行