在网站运营中,清晰的导航路径对于用户体验和搜索引擎优化(SEO)都至关重要。面包屑导航(Breadcrumb Navigation)作为一种辅助导航方式,能够直观地告诉用户当前页面在网站结构中的位置,有效降低跳出率,并帮助搜索引擎更好地理解网站层级。

AnqiCMS 作为一个灵活的内容管理系统,提供了非常便捷的方式来在模板中实现面包屑导航,并能根据需要精细控制首页名称和文档标题的显示。

在 AnqiCMS 模板中实现面包屑导航

在 AnqiCMS 中,实现面包屑导航的核心是使用内置的 breadcrumb 标签。这个标签设计得非常智能,它会自动根据当前页面的类型(首页、分类页、文档详情页、单页等)和层级,生成相应的导航路径。

通常,我们会在网站的公共部分,例如 partial/header.htmlpartial/breadcrumb.html 这样的代码片段文件中放置面包屑导航的代码,然后通过 {% include "partial/breadcrumb.html" %} 将其引入到需要显示的页面。

面包屑标签的基本用法如下:

{% breadcrumb crumbs %}
    <ul class="breadcrumb-nav">
        {% for item in crumbs %}
            <li class="breadcrumb-item">
                {% if forloop.Last %}
                    <span>{{item.Name}}</span>
                {% else %}
                    <a href="{{item.Link}}">{{item.Name}}</a>
                {% endif %}
            </li>
        {% endfor %}
    </ul>
{% endbreadcrumb %}

在这段代码中:

  • {% breadcrumb crumbs %} 声明了一个 crumbs 变量,它是一个数组对象,包含了面包屑导航中的每一项。
  • {% for item in crumbs %} 循环遍历这个 crumbs 数组。
  • item.Name 代表导航项的名称(例如“首页”、“公司新闻”、“文章标题”)。
  • item.Link 代表导航项的链接地址。
  • forloop.Last 是一个特殊的循环变量,用来判断当前遍历的 item 是否是数组中的最后一项。对于面包屑导航来说,最后一项通常是当前页面,不应该有链接,所以我们用 <span> 标签包裹。

控制首页名称的显示

AnqiCMS 的 breadcrumb 标签允许我们自定义面包屑导航中首页的显示名称。默认情况下,首页会显示为“首页”。如果你的网站需要更个性化的首页名称,例如“主页”或你的品牌名称,可以通过 index 参数进行设置。

只需在 breadcrumb 标签中添加 index 参数,并将其值设置为你想要的首页名称即可。

{% breadcrumb crumbs with index="我的站点主页" %}
    <ul class="breadcrumb-nav">
        {% for item in crumbs %}
            <li class="breadcrumb-item">
                {% if forloop.Last %}
                    <span>{{item.Name}}</span>
                {% else %}
                    <a href="{{item.Link}}">{{item.Name}}</a>
                {% endif %}
            </li>
        {% endfor %}
    </ul>
{% endbreadcrumb %}

这样,你的面包屑导航的起始项就会显示为“我的站点主页”,而不是默认的“首页”了。

控制文档标题的显示

在文档详情页,面包屑导航的最后一项通常是当前文档的标题。AnqiCMS 提供了 title 参数,让你灵活控制这一部分的显示方式。

title 参数有几种用法:

  • title=true (默认行为): 这会显示完整的文档标题作为面包屑的最后一项。如果你不设置 title 参数,这便是默认的效果。
  • title=false 如果你希望在文档详情页的面包屑导航中不显示当前文档的标题,而是让其停留在上一级分类的层面,可以将 title 参数设置为 false。这在某些设计中可能有助于简化导航。
  • title="自定义标题" 如果你想为文档详情页的面包屑导航的最后一项显示一个固定的文本,例如“文章详情”、“产品详情”等,而不是具体的文档标题,你可以将 title 参数设置为一个字符串。

下面是结合 title 参数使用的示例:

{# 显示完整文档标题 (默认效果) #}
{% breadcrumb crumbs with title=true %}
    <ul class="breadcrumb-nav">
        {% for item in crumbs %}
            <li class="breadcrumb-item">
                {% if forloop.Last %}
                    <span>{{item.Name}}</span>
                {% else %}
                    <a href="{{item.Link}}">{{item.Name}}</a>
                {% endif %}
            </li>
        {% endfor %}
    </ul>
{% endbreadcrumb %}

{# 不显示文档标题 #}
{% breadcrumb crumbs with title=false %}
    <ul class="breadcrumb-nav">
        {% for item in crumbs %}
            <li class="breadcrumb-item">
                {% if forloop.Last %}
                    <span>{{item.Name}}</span>
                {% else %}
                    <a href="{{item.Link}}">{{item.Name}}</a>
                {% endif %}
            </li>
        {% endfor %}
    </ul>
{% endbreadcrumb %}

{# 显示自定义文本作为文档标题 #}
{% breadcrumb crumbs with title="当前产品详情" %}
    <ul class="breadcrumb-nav">
        {% for item in crumbs %}
            <li class="breadcrumb-item">
                {% if forloop.Last %}
                    <span>{{item.Name}}</span>
                {% else %}
                    <a href="{{item.Link}}">{{item.Name}}</a>
                {% endif %}
            </li>
        {% endfor %}
    </ul>
{% endbreadcrumb %}

通过合理运用 indextitle 参数,你可以灵活地控制面包屑导航的显示,使其更符合你的网站设计和用户需求。

总结

AnqiCMS 的 breadcrumb 标签为网站管理员和开发者提供了简单而强大的面包屑导航实现方案。无论你是需要自定义首页名称,还是希望精细控制文档标题的显示,AnqiCMS 都通过直观的模板标签参数让你轻松实现。这不仅提升了网站的用户体验,也为搜索引擎抓取和理解网站结构提供了便利,对整体网站的SEO表现大有裨益。


常见问题 (FAQ)

  1. 问:如何在面包屑导航的每一项之间添加自定义的分隔符,例如 >/ 答:AnqiCMS 的 breadcrumb 标签本身不提供直接设置分隔符的参数,但你可以在模板的 HTML 结构中通过 CSS 或直接在 <li> 元素之间添加文本来实现。例如,你可以在 <li> 元素之间直接插入 > 符号,或者使用 CSS 的 ::after 伪元素来添加样式化的分隔符。

  2. 问:面包屑导航的 siteId 参数有什么用?在我的单站点网站上需要设置吗? 答:siteId 参数主要用于 AnqiCMS 的多站点管理功能。如果你在后台创建了多个独立的站点,并且希望在某个站点的模板中调用其他站点的数据,才需要通过 siteId 来指定。对于大多数单站点网站,这个参数通常不需要手动设置,系统会自动识别当前站点的上下文。

  3. 问:面包屑导航显示的是文档的常规标题,而不是我在后台设置的“SEO标题”,这是为什么?可以更改吗? 答:AnqiCMS 的面包屑标签默认显示的是页面的常规标题(或分类名称、单页名称),这是为了提供最直观、用户友好的导航路径。面包屑的目的是告诉用户“你现在在哪里”,通常使用用户可以直接识别的显示名称。如果你确实需要显示SEO标题,这通常会涉及到更高级的模板定制,可能需要手动获取当前页面的SEO标题,并将其赋值给面包屑的最后一项,但这并不是默认且推荐的行为,因为这可能会影响用户体验的直观性。