diff --git a/kernel/model/render.go b/kernel/model/render.go index de577be62..5c2944b4b 100644 --- a/kernel/model/render.go +++ b/kernel/model/render.go @@ -29,6 +29,7 @@ import ( "github.com/88250/lute/html" "github.com/88250/lute/parse" "github.com/88250/lute/render" + "github.com/siyuan-note/siyuan/kernel/av" "github.com/siyuan-note/siyuan/kernel/sql" "github.com/siyuan-note/siyuan/kernel/treenode" "github.com/siyuan-note/siyuan/kernel/util" @@ -179,6 +180,18 @@ func renderBlockDOMByNodes(nodes []*ast.Node, luteEngine *lute.Lute) string { blockRenderer := render.NewProtyleRenderer(tree, luteEngine.RenderOptions) for _, node := range nodes { ast.Walk(node, func(n *ast.Node, entering bool) ast.WalkStatus { + if entering { + if n.IsBlock() { + if avs := n.IALAttr(av.NodeAttrNameAvs); "" != avs { + // 填充属性视图角标 Display the database title on the block superscript https://github.com/siyuan-note/siyuan/issues/10545 + avNames := getAvNames(n.IALAttr(av.NodeAttrNameAvs)) + if "" != avNames { + n.SetIALAttr(av.NodeAttrViewNames, avNames) + } + } + } + } + rendererFunc := blockRenderer.RendererFuncs[n.Type] return rendererFunc(n, entering) }) diff --git a/kernel/sql/av_gallery.go b/kernel/sql/av_gallery.go index 6b823670d..800d34055 100644 --- a/kernel/sql/av_gallery.go +++ b/kernel/sql/av_gallery.go @@ -227,22 +227,39 @@ func renderBlockDOMByNode(node *ast.Node, luteEngine *lute.Lute) string { tree := &parse.Tree{Root: &ast.Node{Type: ast.NodeDocument}, Context: &parse.Context{ParseOption: luteEngine.ParseOptions}} blockRenderer := render.NewProtyleRenderer(tree, luteEngine.RenderOptions) blockRenderer.Options.ProtyleContenteditable = false + resetIDs := map[string]string{} ast.Walk(node, func(n *ast.Node, entering bool) ast.WalkStatus { if entering { - // 内容图中不需要渲染数据库角标 https://github.com/siyuan-note/siyuan/issues/15057 - ial := parse.IAL2Map(n.KramdownIAL) - delete(ial, av.NodeAttrNameAvs) + if n.IsBlock() { + // 内容图中不需要渲染数据库角标 https://github.com/siyuan-note/siyuan/issues/15057 + ial := parse.IAL2Map(n.KramdownIAL) + delete(ial, av.NodeAttrNameAvs) - // 重置 data-node-id 的值,避免触发前端绑定的事件 https://github.com/siyuan-note/siyuan/issues/15088 - ial["id"] = ast.NewNodeID() - n.KramdownIAL = parse.Map2IAL(ial) + // 重置 data-node-id 的值,避免触发前端绑定的事件 https://github.com/siyuan-note/siyuan/issues/15088 + newID := ast.NewNodeID() + resetIDs[newID] = n.ID + n.ID, ial["id"] = newID, newID + n.KramdownIAL = parse.Map2IAL(ial) + } } rendererFunc := blockRenderer.RendererFuncs[n.Type] return rendererFunc(n, entering) }) - h := strings.TrimSpace(blockRenderer.Writer.String()) - if strings.HasPrefix(h, "