Support content "sections"
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 5/5
- Temps estimé
- Plus d'une semaine
- Accessibilité débutants
- 25/100
- Type d'issue
- Fonctionnalité
- Clarté
- Plutôt claire
- Activité
- À l'abandon
- Stack technique
- typescript
- Domaine
- content
Piste de recherche
Commencez par examiner les points d’entrée makeSource et defineDocumentType présentés dans l’issue, puis suivez la manière dont les chemins des documents et les champs calculés deviennent des collections telles que allDocsSections. Comparez les sections imbriquées demandées et les métadonnées par section avec les exemples de Hugo et Docusaurus. Le travail est terminé lorsque l’API proposée et la structure typée récursive sont implémentées et vérifiées par des tests appropriés.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
One of the things that I really like about Hugo is its sections feature, which enables you to separate nested directories of content into well-defined groups. So instead of a kind of "flat" array of files you end up getting a nested structure like this:
Documentation
\_ Getting started
\_ Installation
\_ Platforms
\_ Administration
\_ Kubernetes
\_ Setup
\_ Configuration
\_ etc
As expected, sections can be infinitely nested and each can have its own metadata. I don't necessarily endorse the way that Hugo does this (you need to sprinkle _index.md files throughout your tree) but I do think that having this kind of rich structure available to you is great for creating tables of content, sidebar navs, and all of that good stuff. Personally, it's the thing that I'm missing the most as I cross the chasm from mostly doing things in Hugo to doing things in JS world.
I could envision being able to do something like this in Contentlayer:
export const Doc = defineDocumentType(() => ({
name: 'Doc',
filePathPattern: `**/*.md`,
fields: {
title: {
type: 'string',
description: 'The title of the doc',
required: true,
},
},
computedFields: {
url: {
type: 'string',
resolve: (post) => `/docs/${post._raw.flattenedPath}`,
},
},
}))
export default makeSource({
contentDirPath: 'docs',
documentTypes: [Doc],
// tiny little change
sections: true,
})
This could export an allDocsSections object of type Sections<Doc> that would enable you to recurse through the tree.
<ul>
{allDocs.sections.map(section => (
<li>
<p>{section.title}</p>
<ul>
{section.docs.map(doc => (
<li>
{doc.title}
</li>
))}
{section.sections.map(section => ( /* nest */ ))}
</ul>
</li>)}
</ul>
This is very off the cuff but hopefully provides some sense of what I'm suggesting. I'd be quite happy to help out with this if others find the idea compelling. Just wanted to register it here in this forum.
Note: Docusaurus also supports this using a _category_.{json|yml} file that creates a new "category" (basically an analogue to the sections concept) wherever it's found in the directory tree.
- Langage dominant
- TypeScript
- Étoiles
- 3.5k
- Forks
- 192
- Métriques de merge des PR
- Aucune PR mergée en 30 j
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de contentlayerdev/contentlayer
-
Difficulté 3/5 1-2 jours Accessibilité débutants 25/100
contentlayerdev/contentlayer#506 · 84 commentaires · 47 réactions ·
-
Poor/broken monorepo DX: can't specify .contentlayer/ output path, no docs for custom config path Ouvertehelp wanted meta: never-stale needs-research
Difficulté 4/5 3-5 jours Accessibilité débutants 38/100
contentlayerdev/contentlayer#464 · 4 commentaires · 9 réactions ·
-
State of the project Ouvertemeta: never-stale
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 10/100
contentlayerdev/contentlayer#429 · 49 commentaires · 83 réactions ·
-
meta: never-stale topic: markdown/mdx
Difficulté 4/5 3-5 jours Accessibilité débutants 42/100
contentlayerdev/contentlayer#421 · 4 réactions ·
-
meta: never-stale needs-research topic: schema
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 25/100
contentlayerdev/contentlayer#420 ·
Toutes les issues de contentlayerdev/contentlayer
Issues similaires
-
Difficulté 2/5 1-3 heures Accessibilité débutants 70/100
-
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
mksglu/context-mode#1200 ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
jaegertracing/jaeger-ui#4506 ·
-
area:desktop area:ui bug platform:macos
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
anthropics/claude-code#96687 ·
-
good first issue
Difficulté 1/5 Moins d'une heure Accessibilité débutants 95/100
AOSSIE-Org/DebateAI#582 · 2 commentaires ·