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

立即投票

问题

经常在论坛看到“未找到 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 票

  • 思源笔记

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

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

    28446 引用 • 119783 回帖
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 更新了该帖

相关帖子

欢迎来到这里!

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

注册 关于
请输入回帖内容 ...
  • Adaxi

    一直被这个问题所困扰,希望最终有一个合适的解决方案

  • 其他回帖
  • 复杂度变高了,我觉得不如说服 D 剪切的时候保留 ID,既然能保留 custom-id,那也能保留 id。或者剪切一次,粘贴的时候做判断,如果没这个 ID 就保留,如果已经存在则生成新的。多个自定义属性我觉得存储的数据的复杂性有些滥用了。

    另外,除了剪切还有其他场景不?有时候啥也没干重启之后也会提示找不到块:( 偶尔出现过这种问题不过很少见了应该

    3 回复
  • wilsons

    我发现,右键粘贴会导致块的命名,别名,备注,自定义属性丢失。

    必须用 ctrl+v 粘贴才行。

    这是个 bug,issue Issue #15268 · siyuan-note/siyuan

    是否是这个问题,导致粘贴过来 id 丢失问题。

    1 回复
  • wilsons

    希望能彻底解决块引丢失问题的小伙伴们,赶紧去投票了!

    如果方便的话,也 issue 支持下!

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

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