【问题标题】:Can I Use Razor Rendered Content in Schema Markup?我可以在架构标记中使用 Razor 呈现的内容吗?
【发布时间】:2018-07-19 14:21:19
【问题描述】:

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

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

这项工作一旦生效吗?或者是否有一种解决方法来标记网站上的多篇文章以从页面上的其他区域提取数据?

感谢您的建议。

【问题讨论】:

  • 测试工具仅限于处理 JS。我会创建一个测试页面,将其编入索引,使用 Google Search Console 结构化数据报告。
  • 老实说,我从来没有遇到过通过 Umbaco 渲染 Schema 的问题。我已经在一些客户的项目中做到了。你读过这个吗:developers.google.com/search/docs/guides/…
  • 另外,请分享错误以及您尝试了什么?它失败的代码也会有所帮助。

标签: razor umbraco schema.org structured-data


【解决方案1】:

是的,您应该能够做到这一点。我假设您遇到的问题是您正在尝试使用 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,这不是理想的方法,但绝对可以更灵活。

【讨论】:

    猜你喜欢
    • 2021-04-18
    • 1970-01-01
    • 1970-01-01
    • 2016-03-21
    • 1970-01-01
    • 1970-01-01
    • 2012-12-17
    • 2020-04-11
    • 2016-09-11
    相关资源
    最近更新 更多