问题
经常在论坛看到“未找到 ID 为 [2025xxxxxxxxxxxx-xxxxxxx] 的内容块”,这样的问题。
究其原因,是因为思源的引用通过块 id 实现,但由于剪切等操作会导致块 id 改变,很容易在用户不知情的情况下,导致块 id 丢失,从而引起引用链接失效。
解决方案
因此我设计了一套解决方案,原理如下:
- 当插入引用链接时,自动给引用链接和被引用的块添加 custom-id 属性,这个属性以后都不会变。
- 当被引用的块 id 被改变后,通过引用链接的 custom-id 属性获取被引用的块,并修正引用链接的 id 为新块的 id。
- 当有多个块具有相同的 custom-id 属性时(比如复制导致),自动弹出选项对话框,让用户选择引用哪个块,用户选择后更新引用链接的 id 为用户选择块的 id。
- 在情况 3 时,如果你不小心选错了要引用的块,也不要紧,只需要在引用链接上 ctrl+ 点击,会再次弹出选项对话框,可以再次选择。
不知到这种方案是否还存在重大问题?如果有大佬能发现敬请告知!谢谢!
或者您有更好的方案,也可以在评论区告知!谢谢!
issue 支持
如果你支持该方案,请前往 issue 支持 Issue #15236 · siyuan-note/siyuan 十分感谢!
如果支持度较高,且具有可行性,没有其他风险时,D 大考虑解决这个问题,请大家多多支持!感谢!
试用该方案
另外,这里是我根据这个方案用 js 实现的实验性代码,大家可以前去尝试,如果发现问题,请及时告知!感谢! [js] 属性引用:彻底解决引用丢失问题
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于