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

时间:2018-07-19 14:21:19

标签: razor umbraco schema.org structured-data

我的网站上有将近1000篇文章,这些文章是在Umbraco中构建的,我希望通过Article Schema标记来实现。

我遇到的麻烦是,大多数内容都是由剃刀动态生成的(例如@ Umbraco.Field(“ Title”))。我曾尝试将这些剃刀放入标记的相关代码中,但Google的结构化数据测试工具显示了所有剃刀的错误。

这项工作一旦生效?还是有一种变通办法来标记站点上的多篇文章以从页面上的其他区域提取数据?

谢谢您的建议。

1 个答案:

答案 0 :(得分:0)

是的,您应该可以这样做。我假设您遇到的问题是您尝试使用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>

JSON-LD在身体的任何地方都有效,因此您不必担心将任何东西注入头部。对我来说,以上呈现的标准JSON-LD代码已通过结构化数据测试工具传递。这是一个基本的例子。视领域而定,它可能会有些棘手,但我还没有遇到任何障碍。

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