При более детальном изучении выяснилось, что в начале этого года в Discourse был добавлен компонент хлебных крошек: FEATURE: Introduce DBreadcrumbs components (#27049) · discourse/discourse@1239178 · GitHub. В настоящее время он отображается только на отдельных страницах администратора.
Поэтому я создал тестовый компонент для отображения хлебных крошек: Manuel Kostka / Discourse / Components / Breadcrumbs · GitLab. Текущий шаблон выглядит так:
<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: Files · dbreadcrumbs · Manuel Kostka / Discourse / Components / Breadcrumbs · GitLab. Это сделало бы шаблон более лаконичным и, полагаю, в целом обеспечило бы лучшую согласованность и доступность:
<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
для цепочки хлебных крошек. Цепочка хлебных крошек > будет
отображаться в зависимости от порядка, в котором эти элементы
рендерятся на странице.
