在网站运营中,页面标题(Title)是极其重要的元素,它不仅直接影响用户在搜索引擎结果页(SERP)中点击的意愿,也是搜索引擎判断页面内容相关性的关键指标之一。一个清晰、规范且包含网站品牌名称的标题,能够有效提升网站的专业度和品牌认知度。
AnQiCMS 为网站标题的设置提供了灵活而强大的机制,让您可以轻松控制每个页面的标题,并自动附加网站名称,这对于保持品牌一致性和优化搜索引擎可见性都大有裨益。
理解 AnQiCMS 中的页面标题层级
在 AnQiCMS 中,页面标题的生成遵循一定的优先级规则。这意味着您可以在不同层级设置标题,系统会根据当前页面的具体情况,智能地选择并组合最合适的标题。
- 内容层面的 SEO 标题: 无论是文章、产品详情页还是单独的页面,AnQiCMS 都提供了“SEO标题”字段。如果您在这里填写了内容,它将优先作为页面的
<title>标签内容。这使得您可以为每个具体页面定制最符合 SEO 策略的独立标题。 - 内容本身的标题: 如果没有设置“SEO标题”,系统会默认使用该内容的实际标题,例如文章标题、产品名称或单页面名称。
- 分类层面的 SEO 标题: 对于分类页面,您可以在分类管理中设置“SEO标题”。这允许您为特定分类列表页定义独特的标题。
- 网站全局标题设置: 在网站后台的“全局设置”中,您可以找到“网站名称”字段。这个名称通常会作为网站品牌标识,附加到页面的标题之后。首页的 TDK (Title, Description, Keywords) 也可以在“首页TDK设置”中独立配置。
了解这些层级后,我们就可以通过 AnQiCMS 提供的强大模板标签,精确控制页面标题的显示方式。
核心标签:tdk 标签的使用
AnQiCMS 模板中使用 tdk 标签来获取页面的 Title、Keywords 和 Description 信息。要设置页面标题并自动附加网站名称,我们主要关注 tdk 标签的 name="Title" 参数。
它的基本用法如下:
<title>{% tdk with name="Title" %}</title>
在上述代码中,{% tdk with name="Title" %} 会智能地获取当前页面的最优化标题(根据上文提到的优先级)。
自动附加网站名称
要让页面标题自动附加您在后台“全局设置”中配置的“网站名称”,您只需在 tdk 标签中添加 siteName=true 参数即可。
<title>{% tdk with name="Title" siteName=true %}</title>
当 siteName=true 时,系统会自动将网站名称添加到当前页面标题的末尾,例如:“文章标题 - 您的网站名称”。
自定义标题分隔符
默认情况下,页面标题和网站名称之间会使用连字符 - 进行分隔。如果您想使用其他符号,例如下划线 _ 或竖线 |,可以通过 sep 参数进行设置:
<title>{% tdk with name="Title" siteName=true sep="_" %}</title>
这样,您的页面标题就会显示为:“文章标题_您的网站名称”。
显示父级分类标题
在某些情况下,特别是对于层级较深的分类页面,您可能希望标题能包含其父级分类的名称,以提供更完整的上下文信息。这时可以使用 showParent=true 参数:
<title>{% tdk with name="Title" siteName=true showParent=true %}</title>
例如,如果您的分类结构是“产品 > 电子产品 > 手机”,当您访问“手机”分类页时,标题可能会显示为:“手机 - 电子产品 - 您的网站名称”。
在不同页面类型中设置标题
考虑到 AnQiCMS 的模板文件结构,您通常会在 base.html 这样的公共模板文件的 <head> 区域设置标题。因为 extends 标签是模板继承的基础,它允许您定义一个全局骨架,并在子模板中按需覆盖特定部分。
例如,在您的 base.html 文件的 <head> 部分,可以这样设置:
<!DOCTYPE html>
<html lang="{% system with name='Language' %}">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>{% tdk with name="Title" siteName=true sep=" - " showParent=true %}</title>
<meta name="keywords" content="{% tdk with name="Keywords" %}">
<meta name="description" content="{% tdk with name="Description" %}">
{%- tdk canonical with name="CanonicalUrl" %}
{%- if canonical %}
<link rel="canonical" href="{{canonical}}" />
{%- endif %}
<!-- 其他头部信息 -->
<link rel="stylesheet" href="{% system with name="TemplateUrl" %}/css/style.css">
</head>
<body>
<!-- 网站内容 -->
</body>
</html>
这样设置后:
- 首页 (
index.html): 标题会显示为“您在后台首页TDK设置中配置的标题 - 您的网站名称”。 - 文章/产品详情页 (
archive/detail.html): 标题会根据该文章/产品的“SEO标题”优先显示。如果未设置,则显示文章/产品自身的标题,并附加网站名称。例如:“深度解析AnQiCMS模板制作 - 您的网站名称”。 - 分类列表页 (
category/list.html): 标题会显示为分类的“SEO标题”(或分类名称),并附加网站名称。如果showParent=true,还会包含父级分类名称。例如:“电子产品分类 - 您的网站名称”。 - 单页面 (
page/detail.html): 标题会显示为单页面的“SEO标题”(或单页面名称),并附加网站名称。例如:“联系我们 - 您的网站名称”。
通过这种方式,您无需在每个页面模板中重复编写逻辑,只需在 base.html 中进行一次配置,即可实现全站页面标题的规范化和自动化管理。
常见问题 (FAQ)
1. 我在后台“全局设置”中修改了“网站名称”,为什么页面的标题没有变化?
请确保您在模板的 <title> 标签中正确使用了 siteName=true 参数,例如:<title>{% tdk with name="Title" siteName=true %}</title>。如果没有这个参数,或者参数为 false,系统就不会自动附加网站名称。此外,更改后台设置后,可能需要清除网站缓存或刷新页面才能看到最新效果。
2. 为什么有些页面的标题很长,而有些页面只有短短几个字,没有附加网站名称?
这通常与标题的优先级有关。如果某个页面(如文章、分类、单页面)在编辑时设置了“SEO标题”,并且您在 tdk 标签中没有明确指定 siteName=true,或者 siteName 为 false,则系统将只显示该自定义的“SEO标题”,不会附加网站名称。为了保证所有页面都附加网站名称,请确保您的 base.html 文件中的 tdk 标签包含 siteName=true 参数。
3. 我想让某些特定页面不显示网站名称后缀,应该怎么做?
如果您只想让少数特定页面不显示网站名称后缀,可以采用覆盖策略。在这些特定页面的模板中(例如 archive/detail.html 或 page/detail.html),您可以重新定义 <title> 标签,并将 siteName 参数设置为 false:
{# 在特定页面的模板中,例如 archive/detail.html #}
{% extends 'base.html' %}
{% block title %}
{# 覆盖 base.html 中的标题设置,不附加网站名称 #}
<title>{% tdk with name="Title" siteName=false %}</title>
{% endblock %}
{# 其他内容块 ... #}
或者,直接在内容的“SEO标题”字段中,手动输入包含或不包含网站名称的完整标题,因为它具有最高优先级。