作为一位资深的网站运营专家,我很清楚结构化数据对网站在搜索引擎中表现的重要性。Json-LD作为实现结构化数据的主流方式,能够帮助搜索引擎更好地理解网站内容,进而提升网站在搜索结果中的展现机会,例如获得丰富的搜索结果(Rich Snippets)。在AnQiCMS(安企内容管理系统)中,我们完全可以巧妙地利用其强大的后台配置功能,为网站添加关键的Organization(组织)和WebSite(网站)类型的Json-LD数据,让搜索引擎对您的网站一目了然。

为什么关注 OrganizationWebSite 类型的 Json-LD?

在众多Schema.org定义的类型中,OrganizationWebSite是网站最基础也最核心的两种。

  • Organization 类型 旨在描述您的网站所代表的实体,无论是公司、机构还是个人品牌。它通常包含名称、官方网站URL、Logo、联系方式以及社交媒体链接等信息。这有助于搜索引擎理解您的品牌身份,并在知识图谱等地方展示更丰富的信息。
  • WebSite 类型 则描述了网站本身。它通常包含网站名称、URL,以及一个非常重要的potentialAction属性,用于定义站内搜索功能。这能让用户直接在Google搜索结果中执行站内搜索,极大地提升用户体验。

AnQiCMS在设计之初就充分考虑了网站运营的普遍需求,因此,后台的很多设置项天然就对应着Json-LD中OrganizationWebSite所需的关键信息。

AnQiCMS 后台的“宝藏”:信息源泉

AnQiCMS的后台是为Json-LD提供数据流的绝佳起点。我们可以在以下几个核心设置区域找到所需的信息:

  1. 全局功能设置 (help-setting-system.md):

    • 网站名称 (SiteName): 这是您组织或网站的正式名称,直接对应Json-LD中的name属性。
    • 网站地址 (BaseUrl): 网站的根URL,对应url属性。
    • 网站LOGO (SiteLogo): 品牌的视觉标识,对应logo属性。
    • 自定义参数: 如果您有社交媒体(如Facebook、Twitter、LinkedIn等)的链接,虽然AnQiCMS没有专门的社交媒体字段,但我们可以利用其灵活的“自定义参数”功能,在“全局功能设置”中添加这些链接,例如参数名为FacebookUrl,参数值为对应的社交媒体主页链接。这些将用于sameAs属性。
  2. 联系方式设置 (help-setting-contact.md):

    • 联系人 (UserName), 联系电话 (Cellphone), 联系地址 (Address), 联系邮箱 (Email): 这些信息是Organization类型中contactPoint(联系点)属性的关键组成部分。
  3. 首页TDK设置 (help-setting-tdk.md):

    • 首页标题 (Title), 首页关键词 (Keywords), 首页描述 (Description): 虽然不是直接用于OrganizationWebSite的核心属性,但Description可以作为WebSite的补充描述,而TitleKeywords则对整体SEO至关重要。

核心操作:利用 jsonLd 标签“组装”结构化数据

AnQiCMS提供了一个非常便捷的jsonLd标签 (tag-jsonLd.md),专门用于自定义和输出Json-LD数据。这个标签的强大之处在于,它允许您在模板中编写自定义的Json-LD,AnQiCMS会自动将这些自定义内容与系统默认生成的Json-LD合并。如果您的自定义字段与系统默认字段冲突,自定义字段将优先覆盖。

这为我们提供了极大的灵活性,可以在 <head> 区域(通常是template/您的模板名/partial/header.htmltemplate/您的模板名/bash.html)统一添加站点级别的 OrganizationWebSite Json-LD。

现在,我们来看如何将上述后台信息通过模板标签,动态地注入到Json-LD中:

{% jsonLd %}
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "Organization",
      "name": "{% system with name='SiteName' %}",
      "url": "{% system with name='BaseUrl' %}",
      "logo": "{% system with name='SiteLogo' %}",
      "contactPoint": {
        "@type": "ContactPoint",
        "telephone": "{% contact with name='Cellphone' %}",
        "contactType": "Customer Service",
        "email": "{% contact with name='Email' %}"
        // 更多联系方式可以根据后台自定义字段添加
      },
      "sameAs": [
        // 假设您在全局设置中创建了自定义参数 FacebookUrl, TwitterUrl, LinkedinUrl
        "{% system with name='FacebookUrl' %}",
        "{% system with name='TwitterUrl' %}",
        "{% system with name='LinkedinUrl' %}"
        // 如果联系方式设置里有社交媒体字段,也可以直接使用contact标签
        // "{% contact with name='Facebook' %}",
        // "{% contact with name='Twitter' %}",
        // "{% contact with name='Linkedin' %}"
      ]
    },
    {
      "@type": "WebSite",
      "url": "{% system with name='BaseUrl' %}",
      "name": "{% system with name='SiteName' %}",
      "description": "{% tdk with name='Description' %}", // 使用首页描述作为网站描述
      "potentialAction": {
        "@type": "SearchAction",
        "target": "{% system with name='BaseUrl' %}/search?q={search_term_string}", // 假设您的搜索页路径为 /search
        "queryInput": "required name=search_term_string"
      }
    }
  ]
}
</script>
{% endjsonLd %}

在这段代码中:

  • 我们使用了{% system with name='...' %}标签来获取网站名称、基础URL和Logo。
  • {% contact with name='...' %}标签则用于提取联系电话和邮箱,构建contactPoint
  • 通过{% system with name='FacebookUrl' %}等自定义参数,我们可以灵活地添加社交媒体链接到sameAs数组中。请确保您已在“全局功能设置”中添加了这些自定义参数,并填入了正确的社交媒体链接。
  • {% tdk with name='Description' %}标签则获取了网站首页的描述,作为WebSite类型的补充信息。
  • potentialAction则指向了AnQiCMS的站内搜索路径,通常是 /search,并带有q参数。

将这段代码放置在网站模板的<head>标签内,AnQiCMS在每次页面渲染时都会动态地从后台提取最新数据,并生成对应的Json-LD结构化数据。这样一来,您无需触碰复杂的代码,只需维护后台信息,就能确保网站的结构化数据始终保持最新和准确。

这种方法不仅极