mirror of
https://github.com/squidfunk/mkdocs-material.git
synced 2024-11-15 03:17:40 +01:00
196 lines
5.0 KiB
Markdown
196 lines
5.0 KiB
Markdown
---
|
||
title: Built-in meta plugin
|
||
icon: material/file-tree
|
||
---
|
||
|
||
# Built-in meta plugin
|
||
|
||
The meta plugin solves the problem of setting metadata (front matter) for all
|
||
pages in a folder, i.e., a subsection of your project, which is particularly
|
||
useful to ensure that a certain subset of pages features specific tags, uses a
|
||
custom template, or is attributed to an author.
|
||
|
||
## Objective
|
||
|
||
### How it works
|
||
|
||
The plugin scans the [`docs` directory][mkdocs.docs_dir] for `.meta.yml` files,
|
||
and recursively merges the contents of those files with the metadata (front
|
||
matter) of all pages that are contained in the same folder and all subfolders.
|
||
For example, if you want to add the tag <span class="md-tag">Example</span> to
|
||
multiple pages, use:
|
||
|
||
``` yaml title=".meta.yml"
|
||
tags:
|
||
- Example
|
||
```
|
||
|
||
Now, given the following directory layout, if you store the file in the folder
|
||
named `example`, all pages in that folder receive the tag, while all pages
|
||
outside of the folder remain unaffected:
|
||
|
||
``` { .sh .no-copy hl_lines="4-8" }
|
||
.
|
||
├─ docs/
|
||
│ ├─ ...
|
||
│ ├─ example/
|
||
│ │ ├─ .meta.yml
|
||
│ │ ├─ a.md
|
||
│ │ ├─ ...
|
||
│ │ └─ z.md
|
||
│ └─ ...
|
||
└─ mkdocs.yml
|
||
```
|
||
|
||
When combining metadata, lists and dictionaries are recursively merged, which
|
||
means you can append values to a list and add or set specific properties in a
|
||
dictionary on arbitrary levels.
|
||
|
||
### When to use it
|
||
|
||
While the plugin itself doesn't offer much functionality beyond adding and
|
||
merging metadata, it is a perfect companion for many of the other built-in
|
||
plugins that Material for MkDocs offers. Some of the most powerful combinations
|
||
of the meta plugin and other built-in plugins are:
|
||
|
||
<div class="grid cards" markdown>
|
||
|
||
- :material-share-circle: __[Built-in social plugin][social]__
|
||
|
||
---
|
||
|
||
The meta plugin can be used to [change the layout] for social cards or
|
||
[change specific layout options] like [background] or [color]
|
||
for a subset of pages.
|
||
|
||
``` yaml title=".meta.yml"
|
||
social:
|
||
cards_layout: default/variant
|
||
```
|
||
|
||
- :material-newspaper-variant-outline: __[Built-in blog plugin][blog]__
|
||
|
||
---
|
||
|
||
The meta plugin allows to automatically associate blog posts with specific
|
||
[authors] and [categories], ensuring that blog posts are always correctly
|
||
annotated.
|
||
|
||
``` yaml title=".meta.yml"
|
||
authors:
|
||
- squidfunk
|
||
```
|
||
|
||
- :material-tag-text: __[Built-in tags plugin][tags]__
|
||
|
||
---
|
||
|
||
The meta plugin makes it possible to ensure that subsections of your
|
||
project are annotated with [specific tags], so they can't be forgotten when
|
||
adding pages.
|
||
|
||
``` yaml title=".meta.yml"
|
||
tags:
|
||
- Example
|
||
```
|
||
|
||
- :material-magnify: __[Built-in search plugin][search]__
|
||
|
||
---
|
||
|
||
The meta plugin makes it easy to [boost] specific sections in search results
|
||
or to [exclude] them entirely from being indexed, giving more granular
|
||
control over search.
|
||
|
||
``` yaml title=".meta.yml"
|
||
search:
|
||
exclude: true
|
||
```
|
||
|
||
</div>
|
||
|
||
[social]: social.md
|
||
[change the layout]: social.md#meta.social.cards_layout
|
||
[change specific layout options]: social.md#meta.social.cards_layout_options
|
||
[background]: social.md#option.background_color
|
||
[color]: social.md#option.color
|
||
[blog]: blog.md
|
||
[authors]: blog.md#meta.authors
|
||
[categories]: blog.md#meta.categories
|
||
[tags]: tags.md
|
||
[specific tags]: tags.md#meta.tags
|
||
[search]: search.md
|
||
[exclude]: search.md#meta.search.exclude
|
||
[boost]: search.md#meta.search.boost
|
||
|
||
## Configuration
|
||
|
||
<!-- md:sponsors -->
|
||
<!-- md:version insiders-4.21.0 -->
|
||
<!-- md:plugin [meta] – built-in -->
|
||
<!-- md:flag experimental -->
|
||
|
||
As with all [built-in plugins], getting started with the meta plugin is
|
||
straightforward. Just add the following lines to `mkdocs.yml`, and start
|
||
applying metadata for multiple pages at once:
|
||
|
||
``` yaml
|
||
plugins:
|
||
- meta
|
||
```
|
||
|
||
The meta plugin is included with Material for MkDocs and doesn't need to be
|
||
installed.
|
||
|
||
[meta]: meta.md
|
||
[built-in plugins]: index.md
|
||
|
||
### General
|
||
|
||
The following settings are available:
|
||
|
||
---
|
||
|
||
#### <!-- md:setting config.enabled -->
|
||
|
||
<!-- md:sponsors -->
|
||
<!-- md:version insiders-4.38.0 -->
|
||
<!-- md:default `true` -->
|
||
|
||
Use this setting to enable or disable the plugin when [building your project].
|
||
It's normally not necessary to specify this setting, but if you want to disable
|
||
the plugin, use:
|
||
|
||
``` yaml
|
||
plugins:
|
||
- meta:
|
||
enabled: false
|
||
```
|
||
|
||
[building your project]: ../creating-your-site.md#building-your-site
|
||
|
||
### Meta file
|
||
|
||
The following settings are available for meta files:
|
||
|
||
---
|
||
|
||
#### <!-- md:setting config.meta_file -->
|
||
|
||
<!-- md:sponsors -->
|
||
<!-- md:version insiders-4.21.0 -->
|
||
<!-- md:default `.meta.yml` -->
|
||
|
||
Use this setting to change the meta file name the plugin will look for when
|
||
scanning the [`docs` directory][mkdocs.docs_dir]. It's normally not necessary to
|
||
change this setting, but if you want to change it, use:
|
||
|
||
``` yaml
|
||
plugins:
|
||
- meta:
|
||
meta_file: .meta.yml
|
||
```
|
||
|
||
The provided path is resolved from the [`docs` directory][mkdocs.docs_dir]
|
||
recursively.
|