在当今竞争激烈的网络环境中,让网站内容更好地被搜索引擎理解是提升可见度的关键。结构化数据,尤其是 Json-LD 格式,正是我们与搜索引擎“对话”的重要方式,它能帮助搜索引擎更准确地识别页面内容,并可能以富媒体摘要(Rich Snippets)的形式展现在搜索结果中,从而吸引更多点击。

安企CMS(AnQiCMS)在设计之初就充分考虑了SEO友好性,内置了强大的高级SEO工具,其中包括自动生成基础结构化数据的功能。这使得网站在发布内容时,无需额外配置,就能在页面中包含一份默认的Json-LD数据,方便搜索引擎抓取。然而,对于希望更精细地控制搜索结果展示、强调特定信息的用户来说,安企CMS同样提供了灵活的自定义方式——通过在模板中使用 jsonLd 标签来实现。

什么是结构化数据(Json-LD)?

简单来说,结构化数据是一种标准化的格式,用于向搜索引擎提供关于页面内容(如文章、产品、评论、本地商家信息等)的明确信息。Json-LD(JavaScript Object Notation for Linked Data)是其中一种主流且推荐的格式,它通过一段嵌入在HTML中的JSON代码,以键值对的形式描述实体及其属性。

当搜索引擎识别到页面中的Json-LD数据时,它能够更深入地理解页面上下文,这不仅有助于提升网站在相关搜索查询中的排名,更有机会在搜索结果页中以更醒目的形式(比如带有星级评分、图片、价格、发布日期等)展示,我们称之为“富媒体摘要”或“富结果”。这些富结果通常比普通搜索结果更具吸引力,能够有效提高用户点击率。

安企CMS 如何处理结构化数据?

安企CMS 会根据页面类型(如文章详情页、产品详情页)自动生成一份默认的 Json-LD 数据。例如,对于一篇博客文章,它可能会自动生成 Article 类型的 Json-LD,包含标题、作者、发布日期等基础信息。这种自动化处理大大简化了操作,对于大多数网站而言已经足够。

然而,如果我们需要在默认数据的基础上增加更多细节,或者想覆盖某些默认字段,甚至为特定页面类型定制完全不同的Schema(结构化数据类型),这时就需要用到安企CMS 模板中的 jsonLd 标签。这个标签允许我们像编辑普通HTML一样,将自定义的 Json-LD 代码嵌入到模板中,从而实现对结构化数据的精细化控制。

深入理解 jsonLd 标签:自定义结构化数据

安企CMS 的 jsonLd 标签设计得非常灵活。它的基本用法是:

{% jsonLd %}
<script type="application/ld+json">
{
    // 在这里编写您的自定义 Json-LD JSON 对象
}
</script>
{% endjsonLd %}

值得注意的是,当您使用 jsonLd 标签时,您在其中定义的 Json-LD 数据会与安企CMS自动生成的默认数据进行“合并”处理。这意味着,您无需编写完整的 Json-LD 对象来替换整个默认数据,只需提供您想要添加或修改的字段即可。如果您的自定义字段与默认字段发生冲突(即同名),您的自定义内容将优先并覆盖默认字段。这提供了一种强大而便捷的方式,让我们可以在保持默认功能的同时,进行个性化的增强。

在使用 jsonLd 标签自定义内容时,务必注意 JSON 语法的严格性。任何一个括号、逗号或引号的错误都可能导致整个结构化数据失效,搜索引擎将无法正确解析。

实际应用:自定义常见 Schema 类型

现在,让我们通过几个实际的例子,看看如何利用 jsonLd 标签和安企CMS的现有数据标签,为不同类型的页面添加更丰富的结构化数据。

1. 增强文章(Article)页面的结构化数据

对于文章详情页,安企CMS通常会生成基础的 Article Schema。我们可以通过 jsonLd 标签添加更多细节,比如作者信息、图片集或更新时间等。

假设我们希望为文章添加具体的作者名称,并指定一张代表文章的图片:

{% jsonLd %}
<script type="application/ld+json">
{
    "@context": "https://schema.org",
    "@type": "Article",
    "author": {
        "@type": "Person",
        "name": "{% archiveDetail with name='Author' %}" // 假设我们在后台自定义了“Author”字段
    },
    "image": [
        "{% archiveDetail with name='Logo' %}" // 使用文章的封面首图作为主图
    ],
    "dateModified": "{{ stampToDate(archive.UpdatedTime, '2006-01-02T15:04:05-07:00') }}" // 使用更新时间
}
</script>
{% endjsonLd %}

在这个例子中,我们使用 {% archiveDetail %} 标签动态获取文章的自定义作者字段和封面图片URL,并用 stampToDate 过滤器格式化文章的更新时间,使其符合 ISO 8601 标准,让搜索引擎更好地理解这些信息。

2. 优化产品(Product)页面的结构化数据

产品页面是电商和展示类网站的重点。我们可以利用 Product Schema 来展示产品的价格、库存、品牌、评价等信息,从而在搜索结果中显示富媒体摘要,如星级评分、价格区间等。

{% jsonLd %}
<script type="application/ld+json">
{
    "@context": "https://schema.org",
    "@type": "Product",
    "name": "{{ archive.Title }}",
    "image": [
        "{% archiveDetail with name='Logo' %}"
    ],
    "description": "{{ archive.Description|truncatechars:150 }}", // 截取描述,避免过长
    "sku": "{% archiveDetail with name='ProductSKU' %}", // 假设有自定义产品SKU字段
    "brand": {
        "@type": "Brand",
        "name": "{% system with name='SiteName' %}" // 使用网站名称作为品牌
    },
    "offers": {
        "@type": "Offer",
        "url": "{{ archive.Link }}",
        "priceCurrency": "CNY", // 货币类型
        "price": "{% archiveDetail with name='Price' %}",
        "availability": "https://schema.org/{% if archive.Stock > 0 %}InStock{% else %}OutOfStock{% endif %}", // 根据库存判断可用性
        "itemCondition": "https://schema.org/NewCondition"
    },
    "aggregateRating": { // 如果有评论和评分系统,可以添加此项
        "@type": "AggregateRating",
        "ratingValue": "4.5", // 示例值,实际应从评论数据中获取
        "reviewCount": "123" // 示例值
    }
}
</script>
{% endjsonLd %}

这里我们结合了 archive.Titlearchive.Descriptionarchive.Link 等文章通用字段,以及 {% archiveDetail with name='Price' %} 等针对产品模型特有的字段。甚至通过 {% if archive.Stock > 0 %} 这样的逻辑判断,实现了动态的库存状态显示。

3. 添加本地商家(LocalBusiness)的结构化数据

对于有实体店铺或服务区域的企业,LocalBusiness Schema 能够让您的商家信息在本地搜索结果中更加突出,如在 Google 地图或知识面板中显示。

通常,您可以在网站的首页、关于我们页面或联系我们页面添加此类数据。

”`twig {% jsonLd %}