作为一位资深的网站运营专家,我很清楚结构化数据对网站在搜索引擎中表现的重要性。Json-LD作为实现结构化数据的主流方式,能够帮助搜索引擎更好地理解网站内容,进而提升网站在搜索结果中的展现机会,例如获得丰富的搜索结果(Rich Snippets)。在AnQiCMS(安企内容管理系统)中,我们完全可以巧妙地利用其强大的后台配置功能,为网站添加关键的Organization(组织)和WebSite(网站)类型的Json-LD数据,让搜索引擎对您的网站一目了然。
为什么关注 Organization 和 WebSite 类型的 Json-LD?
在众多Schema.org定义的类型中,Organization和WebSite是网站最基础也最核心的两种。
Organization类型 旨在描述您的网站所代表的实体,无论是公司、机构还是个人品牌。它通常包含名称、官方网站URL、Logo、联系方式以及社交媒体链接等信息。这有助于搜索引擎理解您的品牌身份,并在知识图谱等地方展示更丰富的信息。WebSite类型 则描述了网站本身。它通常包含网站名称、URL,以及一个非常重要的potentialAction属性,用于定义站内搜索功能。这能让用户直接在Google搜索结果中执行站内搜索,极大地提升用户体验。
AnQiCMS在设计之初就充分考虑了网站运营的普遍需求,因此,后台的很多设置项天然就对应着Json-LD中Organization和WebSite所需的关键信息。
AnQiCMS 后台的“宝藏”:信息源泉
AnQiCMS的后台是为Json-LD提供数据流的绝佳起点。我们可以在以下几个核心设置区域找到所需的信息:
全局功能设置 (
help-setting-system.md):- 网站名称 (SiteName): 这是您组织或网站的正式名称,直接对应Json-LD中的
name属性。 - 网站地址 (BaseUrl): 网站的根URL,对应
url属性。 - 网站LOGO (SiteLogo): 品牌的视觉标识,对应
logo属性。 - 自定义参数: 如果您有社交媒体(如Facebook、Twitter、LinkedIn等)的链接,虽然AnQiCMS没有专门的社交媒体字段,但我们可以利用其灵活的“自定义参数”功能,在“全局功能设置”中添加这些链接,例如参数名为
FacebookUrl,参数值为对应的社交媒体主页链接。这些将用于sameAs属性。
- 网站名称 (SiteName): 这是您组织或网站的正式名称,直接对应Json-LD中的
联系方式设置 (
help-setting-contact.md):- 联系人 (UserName), 联系电话 (Cellphone), 联系地址 (Address), 联系邮箱 (Email): 这些信息是
Organization类型中contactPoint(联系点)属性的关键组成部分。
- 联系人 (UserName), 联系电话 (Cellphone), 联系地址 (Address), 联系邮箱 (Email): 这些信息是
首页TDK设置 (
help-setting-tdk.md):- 首页标题 (Title), 首页关键词 (Keywords), 首页描述 (Description): 虽然不是直接用于
Organization或WebSite的核心属性,但Description可以作为WebSite的补充描述,而Title和Keywords则对整体SEO至关重要。
- 首页标题 (Title), 首页关键词 (Keywords), 首页描述 (Description): 虽然不是直接用于
核心操作:利用 jsonLd 标签“组装”结构化数据
AnQiCMS提供了一个非常便捷的jsonLd标签 (tag-jsonLd.md),专门用于自定义和输出Json-LD数据。这个标签的强大之处在于,它允许您在模板中编写自定义的Json-LD,AnQiCMS会自动将这些自定义内容与系统默认生成的Json-LD合并。如果您的自定义字段与系统默认字段冲突,自定义字段将优先覆盖。
这为我们提供了极大的灵活性,可以在 <head> 区域(通常是template/您的模板名/partial/header.html或template/您的模板名/bash.html)统一添加站点级别的 Organization 和 WebSite 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结构化数据。这样一来,您无需触碰复杂的代码,只需维护后台信息,就能确保网站的结构化数据始终保持最新和准确。
这种方法不仅极