Inferring "sidebar_position" from the filename
In the Python course, I use the following format for filenames: {sidebar_position}_{slug}.md E.g. the file of the tenth lesson is 10_crawling.md
Would it be a good idea if we added inferring of sidebar_position to Docusaurus? The algorithm would be:
- See if
sidebar_positionis set in the front matter. If yes, respect the value. - If not set, see if the filename starts with
r"\d\d_". If yes, take that as the value forsidebar_position. - Otherwise leave
sidebar_positionunassigned.
Not sure if this is worth the engineering and the cognitive load necessary to understand that this happens (would need to be documented somewhere in contribution docs). But it would help me to keep the values synchronized both in the filename and the front matter.
If I wanted to reorder lessons or add new lesson in between existing ones, I could only change filenames. The way it is now it's easy to forget about the front matter and leave it in disarray by mistake.
At the same time, I find the {sidebar_position}_{slug}.md format of filename highly practical for the purpose of the course. At least subjectively, my orientation in editor and file system is much better this way than with other parts of the Academy where the files are ordered alphabetically on disk, but according to sidebar_position in the docs navigation.
I don't think docusaurus supports this, and it feels weird to mix those approaches. Either you get the ordering based on the names, or you use the explicit position in front matter.
https://docusaurus.io/docs/sidebar/autogenerated
@B4nan If I understand you correctly, it should be possible to skip specifying sidebar_position if I'm 100 % sure that my files are sorted the correct way, because Docusaurus' default sorting is by filenames, alphabetically? That would be great!
Yes, but I am not sure how this works when you try to mix those two approaches, I would say it's one or the other.
I wouldn't mix the approaches within one folder 🤔 I might give it a try and see if and how it works.