在网站运营中,搜索引擎优化(SEO)是提升网站可见度的关键环节。而页面标题(Title)和描述(Description)作为搜索引擎抓取和用户浏览时首先看到的信息,其重要性不言而喻。安企CMS(AnQiCMS)深知这一点,因此在模板中获取和显示这些SEO元素提供了灵活且强大的机制。

安企CMS的TDK(Title, Description, Keywords)机制概览

安企CMS在处理页面TDK时,采取了一种智能的层级和上下文感知机制。这意味着当你访问不同的页面类型时(如文章详情页、分类列表页、单页、甚至网站首页),系统会自动判断当前页面的类型,并优先尝试获取该页面自身所配置的SEO标题和描述。

具体来说:

  1. 内容级别优先: 如果你为某篇文章、某个分类或某个单页在后台单独设置了SEO标题和描述,系统会优先使用这些内容。
  2. 内容字段提取: 若内容自身没有明确的SEO描述字段,或者你未填写,系统会智能地从该内容的“简介”字段(例如文章的“文档简介”、分类的“分类简介”)中提取一部分文字作为页面的Meta Description。
  3. 全局设置兜底: 如果上述两者都没有获取到有效内容,系统会回退到“首页TDK设置”中配置的全局标题和描述。

这种机制确保了无论你是否为每个页面都进行了精细的TDK配置,网站都能有一个合理且对SEO友好的标题和描述。

核心:万能TDK标签——{% tdk %}

在安企CMS的模板设计中,获取页面SEO标题和描述最便捷、最推荐的方式是使用万能的{% tdk %}标签。这个标签的神奇之处在于它能根据当前页面的上下文,智能地输出最合适的SEO信息。

要获取当前页面的SEO标题,你可以在模板的<head>区域使用:

<title>{% tdk with name="Title" %}</title>

这段代码会根据你访问的页面类型,自动输出该页面的**标题。例如,如果访问的是文章详情页,它会输出文章的SEO标题(或文章标题);如果访问的是分类列表页,它会输出分类的SEO标题(或分类名称);如果是首页,则会输出首页TDK设置中的标题。

同样地,获取当前页面的SEO描述和关键词也非常简单:

<meta name="description" content="{% tdk with name="Description" %}">
<meta name="keywords" content="{% tdk with name="Keywords" %}">

这里的name="Description"name="Keywords"参数分别用于指示标签获取页面的描述和关键词。

灵活控制标题显示

{% tdk with name="Title" %}标签还提供了额外的参数,让你能更灵活地控制标题的显示方式。

  • 附加网站名称: 很多时候,我们希望页面标题在搜索引擎中显示为“页面标题 - 网站名称”或“页面标题 | 网站名称”。你可以通过siteName=truesep参数来实现:

    <title>{% tdk with name="Title" siteName=true sep=" | " %}</title>
    

    这样,页面的<title>标签内容就会自动组合成[当前页面标题] | [网站名称]的形式,例如“安企CMS模板:获取SEO标题与描述 | 安企CMS官方网站”。sep参数用于定义分隔符,默认为-

  • 显示父级分类标题: 在某些分类列表页或详情页,你可能希望标题中包含其父级分类的名称,可以通过 showParent=true 参数实现。

深度定制:直接获取文档/分类/页面SEO信息

虽然{% tdk %}标签已经足够智能,可以满足绝大部分需求,但在某些特殊情况下,你可能需要直接获取特定文档、分类或单页的SEO字段值,而不是由{% tdk %}标签智能组合后的结果。

例如,如果你想在一个文档详情页的某个区域单独显示该文档的SEO标题,而不是用作页面的<title>标签内容,你可以使用archiveDetail标签:

{% archiveDetail with name="SeoTitle" %}

类似地,对于分类页面:

{% categoryDetail with name="SeoTitle" %}
{% categoryDetail with name="Description" %}
{% categoryDetail with name="Keywords" %}

对于单页面:

{% pageDetail with name="SeoTitle" %}
{% pageDetail with name="Description" %}
{% pageDetail with name="Keywords" %}

这些标签会直接输出该内容类型(文档、分类、单页)在后台配置的相应SEO字段值。一般而言,我们推荐优先使用{% tdk %}标签来构建页面的标准<title><meta>标签,因为它能更好地处理各种页面类型和未设置内容的fallback逻辑。而直接获取特定字段的方式,更多适用于需要展示这些原始SEO数据作为页面内容一部分的场景。

实际操作步骤

将这些标签应用到你的网站模板中非常直接:

  1. 定位模板文件: 通常,网站的公共头部(包含<head>标签)会集中在一个名为base.html或类似名称的模板文件中,位于你当前主题的/template目录下。

  2. 找到<head>区域: 在这个文件中,找到<head></head>之间的代码块。

  3. 插入TDK标签:<head>区域内,替换或添加以下代码:

    ”`html <!DOCTYPE html>

    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <!-- 页面SEO标题 -->
    <title>{% tdk with name="Title" siteName=true sep=" - " %}</title>
    <!-- 页面SEO关键词 -->
    <meta name="keywords" content="{% tdk with name="Keywords" %}">
    <!-- 页面SEO描述 -->
    <meta name="description" content="{% tdk with name="Description" %}">
    <!-- 其他head内容... -->
    

    <!-- 网站内容 -->