我可以在架构标记中使用 Razor 渲染的内容吗?

0 umbraco structured-data razor schema.org

我的网站上有近 1000 篇文章,这些文章是用 Umbraco 构建的,我想使用文章架构标记来实现它们。

我遇到的问题是大部分内容都是由剃刀动态生成的(例如 @Umbraco.Field("Title") )。我尝试将这些剃刀放入标记的相关代码中,但 Google 的结构化数据测试工具显示所有剃刀均存在错误。

这活一次还能活吗?或者是否有一种解决方法可以标记网站上的多篇文章以从页面上的其他区域提取数据?

感谢您的任何建议。

Stu*_*ong 6

是的,您应该能够做到这一点。我假设您遇到的问题是您正在尝试使用 JSON-LD - 这会增加复杂性,因为它使用@Razor 语法也依赖的符号。在 Razor 中,您可以使用 来逃避它@@。下面是我如何让它发挥作用的示例(这不是 Umbraco 特有的,但它仍然是标准 Razor):

<script type="application/ld+json">
{
    "@@context": "http://schema.org",
    "@@type": "article",
    "@@id": "@newsItem.DefaultUrl",
    "mainEntityOfPage": {
        "@@type": "WebPage",
        "@@id": "@newsItem.DefaultUrl"
    },
    "headline": "@newsFields.Title",
    "datePublished": "@newsItem.GetDateTime("PublicationDate", "MMM d, yyyy, HH:mm tt")",
    "dateModified": "@newsItem.GetDateTime("LastModified", "MMM d, yyyy, HH:mm tt")",
    "author": {
        "@@type": "Person",
        "name": "@newsItem.Author"
    }
}
</script>
Run Code Online (Sandbox Code Playgroud)

JSON-LD 在身体的任何地方都有效,因此您不必担心将任何东西注入头部。对我来说,上面呈现了标准 JSON-LD 代码并传递到结构化数据测试工具中。这是一个基本示例。根据不同的领域,这可能会有点棘手,但我还没有遇到任何困难。

当然,另一个可行的选择(至少在撰写本文时)是在 HTML 上使用 RDFa,这不是理想的方法,但绝对可以更灵活。