在网站运营中,页面标题(Title)是极其重要的元素,它不仅直接影响用户在搜索引擎结果页(SERP)中点击的意愿,也是搜索引擎判断页面内容相关性的关键指标之一。一个清晰、规范且包含网站品牌名称的标题,能够有效提升网站的专业度和品牌认知度。

AnQiCMS 为网站标题的设置提供了灵活而强大的机制,让您可以轻松控制每个页面的标题,并自动附加网站名称,这对于保持品牌一致性和优化搜索引擎可见性都大有裨益。

理解 AnQiCMS 中的页面标题层级

在 AnQiCMS 中,页面标题的生成遵循一定的优先级规则。这意味着您可以在不同层级设置标题,系统会根据当前页面的具体情况,智能地选择并组合最合适的标题。

  1. 内容层面的 SEO 标题: 无论是文章、产品详情页还是单独的页面,AnQiCMS 都提供了“SEO标题”字段。如果您在这里填写了内容,它将优先作为页面的 <title> 标签内容。这使得您可以为每个具体页面定制最符合 SEO 策略的独立标题。
  2. 内容本身的标题: 如果没有设置“SEO标题”,系统会默认使用该内容的实际标题,例如文章标题、产品名称或单页面名称。
  3. 分类层面的 SEO 标题: 对于分类页面,您可以在分类管理中设置“SEO标题”。这允许您为特定分类列表页定义独特的标题。
  4. 网站全局标题设置: 在网站后台的“全局设置”中,您可以找到“网站名称”字段。这个名称通常会作为网站品牌标识,附加到页面的标题之后。首页的 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,或者 siteNamefalse,则系统将只显示该自定义的“SEO标题”,不会附加网站名称。为了保证所有页面都附加网站名称,请确保您的 base.html 文件中的 tdk 标签包含 siteName=true 参数。

3. 我想让某些特定页面不显示网站名称后缀,应该怎么做?

如果您只想让少数特定页面不显示网站名称后缀,可以采用覆盖策略。在这些特定页面的模板中(例如 archive/detail.htmlpage/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标题”字段中,手动输入包含或不包含网站名称的完整标题,因为它具有最高优先级。