En regardant de plus près, un composant fil d’Ariane a été ajouté à Discourse plus tôt cette année : FEATURE: Introduce DBreadcrumbs components (#27049) · discourse/discourse@1239178 · GitHub. Il n’est actuellement rendu que sur certaines pages d’administration.
J’avais donc créé un composant de test pour rendre les fils d’Ariane : Manuel Kostka / Discourse / Components / Breadcrumbs · GitLab. Le modèle actuel est :
<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>
J’ai maintenant créé une branche qui utilise le nouveau composant dbreadcrumbs : Files · dbreadcrumbs · Manuel Kostka / Discourse / Components / Breadcrumbs · GitLab. Cela rendrait le modèle plus concis et, je suppose, offrirait une meilleure cohérence et accessibilité :
<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>
Cependant, en utilisant DBreadcrumbsItem, l’ordre de la catégorie parente et de la sous-catégorie est mélangé sur le composant rendu. La catégorie actuelle est insérée en premier :
Je me demande si c’est à cause de ce comportement, indiqué dans le message de commit ?
- DBreadcrumbsItem - Le composant qui enregistre un LinkTo
pour le fil d’Ariane. Le fil d’Ariane s’affichera
en fonction de l’ordre dans lequel ces éléments sont rendus sur la page.
