如何添加面包屑导航?

深入研究后发现,今年早些时候 Discourse 添加了一个面包屑组件:https://github.com/discourse/discourse/commit/1239178f496cba5d864adb7c118b17902b8b72dc。目前它仅在选定的管理员页面上呈现。

所以我做了一个测试组件来呈现面包屑:https://gitlab.com/manuelkostka/discourse/components/breadcrumbs。当前的模板是:

  <template>
    {{#if this.currentPage}}
      {{bodyClass "has-breadcrumbs"}}
      <ul class="breadcrumbs {{concat '--' settings.plugin_outlet}}">
        <li class="breadcrumbs__item --home">
          {{#if this.homePage}}
            {{i18n "js.home"}}
          {{else}}
            <a href="/">{{i18n "js.home"}}</a>
          {{/if}}
        </li>
        {{#if this.parentCategory}}
          <li class="breadcrumbs__item --parent">
            <a href="/c/{{this.parentCategoryLink}}">
              {{this.parentCategoryName}}</a>
          </li>
        {{/if}}
        {{#unless this.homePage}}
          <li class="breadcrumbs__item --current">
            {{this.currentPage}}
          </li>
        {{/unless}}
      </ul>
    {{/if}}
  </template>

我现在做了一个使用新 dbreadcrumbs 组件的分支:https://gitlab.com/manuelkostka/discourse/components/breadcrumbs/-/tree/dbreadcrumbs。这将使模板更加简洁,并且我认为总体上能提供更好的一致性和可访问性:

  <template>
    {{#if this.currentPage}}
      {{bodyClass "has-breadcrumbs"}}
      <DBreadcrumbsContainer class="{{concat '--' settings.plugin_outlet}}" />
      <DBreadcrumbsItem @path="/" @label={{i18n "js.home"}} />
      {{#if this.parentCategory}}
        <DBreadcrumbsItem
          @path="/c/{{this.parentCategoryLink}}"
          @label={{this.parentCategoryName}}
        />
      {{/if}}
      {{#unless this.homePage}}
        <DBreadcrumbsItem @path="" @label={{this.currentPage}} />
      {{/unless}}
    {{/if}}
  </template>

但是,在使用 DBreadcrumbsItem 时,父类别和子类别的顺序在渲染的组件中被弄混了。当前类别被首先插入:

我想知道这是否是因为提交消息中提到的那个行为?

  • DBreadcrumbsItem - 注册面包屑路径的 LinkTo 的组件。面包屑 > 路径 > 将根据这些项目在页面上渲染的顺序显示。