+import type { Ref } from 'vue'
import VPBadge from '@theme/global/VPBadge.vue'
import VPLink from '@theme/VPLink.vue'
import { useReadingTimeLocale } from '@vuepress/plugin-reading-time/client'
-import { computed } from 'vue'
+import { computed, inject, ref } from 'vue'
import { useBlogPageData, useData, useInternalLink, useTagColors } from '../composables/index.js'
const { page, frontmatter: matter, theme, blog } = useData<'post'>()
@@ -40,7 +41,15 @@ const badge = computed(() => {
return false
})
-const hasMeta = computed(() => readingTime.value.time || tags.value.length || createTime.value)
+// 无法准确判断是否存在 doc-meta 插槽,因此需要通过 provide 传递
+const hasDocMetaSlot = inject
[>('doc-meta-slot-exists', ref(false))
+
+const hasMeta = computed(() =>
+ readingTime.value.time
+ || tags.value.length
+ || createTime.value
+ || hasDocMetaSlot.value,
+)
@@ -48,12 +57,16 @@ const hasMeta = computed(() => readingTime.value.time || tags.value.length || cr
{{ page.title }}
+
]