【问题标题】:Generate structured data with JavaScript使用 JavaScript 生成结构化数据
【发布时间】:2023-03-21 23:25:01
【问题描述】:

我们需要编写一个脚本来为 JSP 中的一个组件的结构化数据创建 JSON-LD 脚本,比如说 FAQ 组件,我们已经编写了脚本来为结构化数据生成 JSON LD,

faq.jsp:

<script type="application/ld+json">
{
    "@context": "https://schema.org",
    "type": "FAQPage",
    "mainEntity": [
    <c:forEach var='questionItem' items='${faq.faqQuestionList}' varStatus='itemsLoopSchema'>
    {
    <c:set var="trimmedAnswer" value="${fn:trim(questionItem.answer)}" />
    "@type": "Question",
    "name": "${questionItem.question}",
    "acceptedAnswer": {
    "@type": "Answer",
    "text": "${fn:escapeXml(trimmedAnswer)}"
    }
    <c:choose>
        <c:when test="${itemsLoopSchema.last}">
            }
        </c:when>
        <c:otherwise>
            },
        </c:otherwise>
    </c:choose>
</c:forEach>
    ]
}
</script>

现在当这个 JSP 组件包含多次时,脚本将多次运行并创建多个 JSON

相反,我想加载所有多个常见问题解答组件,然后创建 JSON(或只运行一次脚本)。 单个 JSON LD,其中所有详细信息都将用于多个 faq.jsp

*限制脚本运行一次并以 JSON 格式获取所有页面 DOM 的数据,用于 JSP 中的 SEO 目的

【问题讨论】:

    标签: javascript jsp aem json-ld structured-data


    【解决方案1】:

    一些想法:

    1. 在页面顶部添加 Sling 模型。查询所有常见问题组件并生成 JSON+LD 数据。 Sling Model 只输出字符串

    2. 创建一个常见问题容器,您可以在其中放置每个常见问题解答组件。 FAQWrapper Sling Model 生成 JSON+LD 就像上面一样

    还有一些建议:

    1. 在 java 中生成 JSON,而不是在 JSP 本身中。
    2. 寻找为你生成schema的java库,否则容易出错,生成无效数据。我们基于 Lombok SuperBuilder、Delegate 和 Jackson 实现了我们自己的解决方案,而且工作量很大
    3. 虽然 google 建议使用 JSON+LD,但我已经看到使用微格式的网站并且效果很好,因此请考虑 Raphael 的建议。

    【讨论】:

      【解决方案2】:

      我知道这可能不是您要寻找的答案,但在同一页面上拥有多个 json+ld 块是完全有效的,即使它们属于同一类型。

      此外,我建议将结构化数据内嵌到您使用微格式输出的常见问题标记中(使用itemscopeitempropitemtype 属性)。

      【讨论】:

        猜你喜欢
        • 2013-06-16
        • 2010-09-12
        • 2021-12-02
        • 2019-01-27
        • 1970-01-01
        • 2015-08-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多