在 sveltekit 中向动态页面添加元标记

问题描述 投票:0回答:1

我有一个用 Sveltekit an Sanity 构建的博客,主页的元标记有效,但是当我尝试在动态页面中使用元标记时,它们没有显示。 我尝试过 svelte:head 甚至 svelte-meta-tags 库

我的路线是站点名称/帖子/[slug]

这是我的动态页面:

<script lang="ts">
    import { PortableText } from '@portabletext/svelte';
    import { formatDate } from '$lib/utils';
    import { urlFor } from '$lib/utils/image';
    import type { PageData } from './$types';

    import SvelteSeo from 'svelte-seo';

    import { page } from '$app/stores';

    export let data: PageData;

    console.log('data', $page);
    console.log(data);
    
</script>
<SvelteSeo
    title={$page.data.title}
    description={$page.data.excerpt}
    canonical={`site.com/post/${$page.data.slug.current}`}
    openGraph={{
        url: `site.com/post/${$page.data.slug.current}`,
        title: $page.data.title,
        description: $page.data.excerpt,
        images: $page.data.mainImage ? [{ url: urlFor($page.data.mainImage).url() }] : [],
        site_name: 'Site'
    }}
    twitter={{
        title: $page.data.title,
        description: $page.data.excerpt,

        image: $page.data.mainImage ? urlFor($page.data.mainImage).url() : undefined
    }}
    keywords={$page.data.tags ?? [].join(', ')}
/>

<section>
...
</section>

请帮忙

svelte sveltekit meta-tags sanity
1个回答
0
投票

尝试将 SEO 组件包装在

{#key}
块内。 https://svelte.dev/docs/logic-blocks#key 为了简单的解释,该指令用于高效更新 DOM 元素。

{#key $page.pathname.url}
   <SvelteSeo.../>
{/key}
© www.soinside.com 2019 - 2024. All rights reserved.