属性引用:彻底解决引用丢失问题,方案可行性探讨和投票

立即投票

问题

经常在论坛看到“未找到 ID 为 [2025xxxxxxxxxxxx-xxxxxxx] 的内容块”,这样的问题。

究其原因,是因为思源的引用通过块 id 实现,但由于剪切等操作会导致块 id 改变,很容易在用户不知情的情况下,导致块 id 丢失,从而引起引用链接失效。

解决方案

因此我设计了一套解决方案,原理如下:

  1. 当插入引用链接时,自动给引用链接和被引用的块添加 custom-id 属性,这个属性以后都不会变。
  2. 当被引用的块 id 被改变后,通过引用链接的 custom-id 属性获取被引用的块,并修正引用链接的 id 为新块的 id。
  3. 当有多个块具有相同的 custom-id 属性时(比如复制导致),自动弹出选项对话框,让用户选择引用哪个块,用户选择后更新引用链接的 id 为用户选择块的 id。
  4. 在情况 3 时,如果你不小心选错了要引用的块,也不要紧,只需要在引用链接上 ctrl+ 点击,会再次弹出选项对话框,可以再次选择。

不知到这种方案是否还存在重大问题?如果有大佬能发现敬请告知!谢谢!

或者您有更好的方案,也可以在评论区告知!谢谢!

issue 支持

如果你支持该方案,请前往 issue 支持 Issue #15236 · siyuan-note/siyuan 十分感谢!

如果支持度较高,且具有可行性,没有其他风险时,D 大考虑解决这个问题,请大家多多支持!感谢!

试用该方案

另外,这里是我根据这个方案用 js 实现的实验性代码,大家可以前去尝试,如果发现问题,请及时告知!感谢! [js] 属性引用:彻底解决引用丢失问题

关联帖子

未找到 id 为 xxxx 的内容块 v3.2.0

内容块连接丢失

投票

你支持该方案吗?

单选 公开 永不结束 53 票
支持 👍
96% 51 票
不支持 👎
3% 2 票

  • 思源笔记

    思源笔记是一款隐私优先的个人知识管理系统,支持完全离线使用,同时也支持端到端加密同步。

    融合块、大纲和双向链接,重构你的思维。

    28448 引用 • 119792 回帖
5 操作
wilsons 在 2025-07-15 19:45:20 置顶了该帖
wilsons 在 2025-07-11 14:48:54 更新了该帖
wilsons 在 2025-07-11 14:09:15 更新了该帖
wilsons 在 2025-07-11 12:58:18 置顶了该帖 wilsons 在 2025-07-11 12:36:38 更新了该帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
wilsons
正式入驻知乎了,以后新贴主要在这里。 欢迎大家订阅关注! 你的关注对我是莫大鼓励,也能让我持续产出优质内容,我们一起成长 🙏 点这里立即关注:https://www.zhihu.com/people/wilsonses