Add a project
Published on
Clone the example project
Duplicate the example project located in site/en/docs/_example. Rename the folder to match whatever slug you want to use for your project url. This slug is referred to as the project-key.
.
├── _example
├── extensions
├── handbook
├── cheese # your new project! This will appear at /docs/cheese/
└── index.mdConfigure the landing page
Open the index.md file at the root of the project directory.
.
├── cheese
│ ├── index.md # <-- this file!
│ └── my-first-docUpdate the title and the description. These will be displayed on the /docs/ and /docs/[project-key] pages. You'll need to create a matching page in other languages if it is ever translated.
Add your first doc
The example project comes with a sample doc that you can build off of. See the guide on adding a doc for a detailed explainer.
Configure the table of contents for your project
Create a new folder in the site/_data/docs/ directory, and name it after your project. This is language-agnostic.
├── _data
│ ├── docs
│ │ ├── extensions
│ │ ├── cheese # <-- your project!
│ │ ├── handbook
│ │ └── projects.ymlAdd a toc.yml file to this directory. The toc.yml defines the navigation structure for your project and will appear on the /docs/[project-key]/ page as well as in the side navigation when viewing an individual doc.
The toc.yml supports these fields:
url—an absolute url path to your doctitle—the title for a subsection ini18npath notation (explained below.)sections—a collection of more urls, nested under atitle.
- url: /docs/cheese/what-is-cheese # a single doc
- title: i18n.docs.cheese.overview # a title for a section of docs
sections: # a grouping of docs under a title
- url: /docs/cheese/overview/hard-cheese
- url: /docs/cheese/overview/soft-cheese
- url: /docs/cheese/overview/string-cheese
- title: i18n.docs.cheese.guides
sections:
- url: /docs/cheese/overview/guides/melting-cheese
- url: /docs/cheese/the-moon-is-made-of-cheeseAdd styles and icon for your project
Add an icon at site/_static/images/project/[project-key].svg. This should be a small SVG rendered in white. See the existing icons for examples.
If you'd like this icon to render on top of a different color than the default blue, you can optionally add a peer styles.yml to your toc.yml file. For example:
# Color (CSS theme variable) to use for this project page
project_icon_color: 'color-project-handbook'This color will be drawn from _theme.scss. (The default color used without a configuration is color-project-default.)
Add i18n paths for your titles
The title strings used in the toc.yml are magic ✨ and we need a way to translate them into other languages. We do this by creating a dictionary in the _data/i18n folder.
If you have title fields in your toc.yml you will need to create a file in the _data/i18n/docs directory:
├── i18n
│ ├── docs
│ │ ├── extensions.yml
│ │ ├── cheese.yml # <-- your project!
│ │ └── handbook.ymlIf you have the title "Overview" you would add it to your .yml file like so:
overview:
en: 'Overview'
es: 'Visión General'If you aren't ready to translate your docs yet that's OK!. Just add an en field for now.
Finally, in your toc.yml, add the path to this object:
# toc.yml
- title: i18n.docs.cheese.overview
sections:
… Add your project to the /docs/ page
Open the site/_data/docs/projects.yml file. This file is divided into sections and will look something like this:
chrome:
- url: extensions
tools:
- url: devtoolsEach section acts as a heading on the /docs/ page. If you want your project to appear under the "Chrome" heading you would add it to the chrome section, like this:
chrome:
- url: extensions
- url: cheese # <-- your project
tools:
- url: devtoolsYou're done! 😅
Grab yourself a slice of cheese and celebrate by building the site (npm run dev) and looking at those sweet new docs.
Updated on • Improve article