hugo

Fork of github.com/gohugoio/hugo with reverse pagination support

git clone git://git.shimmy1996.com/hugo.git

front-matter.md (10717B)

    1 ---
    2 title: Front Matter
    3 linktitle:
    4 description: Hugo allows you to add front matter in yaml, toml, or json to your content files.
    5 date: 2017-01-09
    6 publishdate: 2017-01-09
    7 lastmod: 2017-02-24
    8 categories: [content management]
    9 keywords: ["front matter", "yaml", "toml", "json", "metadata", "archetypes"]
   10 menu:
   11   docs:
   12     parent: "content-management"
   13     weight: 30
   14 weight: 30	#rem
   15 draft: false
   16 aliases: [/content/front-matter/]
   17 toc: true
   18 ---
   19 
   20 **Front matter** allows you to keep metadata attached to an instance of a [content type][]---i.e., embedded inside a content file---and is one of the many features that gives Hugo its strength.
   21 
   22 {{< youtube Yh2xKRJGff4 >}}
   23 
   24 ## Front Matter Formats
   25 
   26 Hugo supports four formats for front matter, each with their own identifying tokens.
   27 
   28 TOML
   29 : identified by opening and closing `+++`.
   30 
   31 YAML
   32 : identified by opening and closing `---`.
   33 
   34 JSON
   35 : a single JSON object surrounded by '`{`' and '`}`', followed by a new line.
   36 
   37 ORG
   38 : a group of Org mode keywords in the format '`#+KEY: VALUE`'. Any line that does not start with `#+` ends the front matter section.
   39   Keyword values can be either strings (`#+KEY: VALUE`) or a whitespace separated list of strings (`#+KEY[]: VALUE_1 VALUE_2`).
   40 
   41 ### Example
   42 
   43 {{< code-toggle >}}
   44 title = "spf13-vim 3.0 release and new website"
   45 description = "spf13-vim is a cross platform distribution of vim plugins and resources for Vim."
   46 tags = [ ".vimrc", "plugins", "spf13-vim", "vim" ]
   47 date = "2012-04-06"
   48 categories = [
   49   "Development",
   50   "VIM"
   51 ]
   52 slug = "spf13-vim-3-0-release-and-new-website"
   53 {{< /code-toggle >}}
   54 
   55 ## Front Matter Variables
   56 
   57 ### Predefined
   58 
   59 There are a few predefined variables that Hugo is aware of. See [Page Variables][pagevars] for how to call many of these predefined variables in your templates.
   60 
   61 aliases
   62 : an array of one or more aliases (e.g., old published paths of renamed content) that will be created in the output directory structure . See [Aliases][aliases] for details.
   63 
   64 audio
   65 : an array of paths to audio files related to the page; used by the `opengraph` [internal template](/templates/internal) to populate `og:audio`.
   66 
   67 cascade
   68 : a map of Front Matter keys whose values are passed down to the page's descendants unless overwritten by self or a closer ancestor's cascade. See [Front Matter Cascade](#front-matter-cascade) for details.
   69 
   70 date
   71 : the datetime assigned to this page. This is usually fetched from the `date` field in front matter, but this behaviour is configurable.
   72 
   73 description
   74 : the description for the content.
   75 
   76 draft
   77 : if `true`, the content will not be rendered unless the `--buildDrafts` flag is passed to the `hugo` command.
   78 
   79 expiryDate
   80 : the datetime at which the content should no longer be published by Hugo; expired content will not be rendered unless the `--buildExpired` flag is passed to the `hugo` command.
   81 
   82 headless
   83 : if `true`, sets a leaf bundle to be [headless][headless-bundle].
   84 
   85 images
   86 : an array of paths to images related to the page; used by [internal templates](/templates/internal) such as `_internal/twitter_cards.html`.
   87 
   88 isCJKLanguage
   89 : if `true`, Hugo will explicitly treat the content as a CJK language; both `.Summary` and `.WordCount` work properly in CJK languages.
   90 
   91 keywords
   92 : the meta keywords for the content.
   93 
   94 layout
   95 : the layout Hugo should select from the [lookup order][lookup] when rendering the content. If a `type` is not specified in the front matter, Hugo will look for the layout of the same name in the layout directory that corresponds with a content's section. See [Content Types][content type].
   96 
   97 lastmod
   98 : the datetime at which the content was last modified.
   99 
  100 linkTitle
  101 : used for creating links to content; if set, Hugo defaults to using the `linktitle` before the `title`. Hugo can also [order lists of content by `linktitle`][bylinktitle].
  102 
  103 markup
  104 : **experimental**; specify `"rst"` for reStructuredText (requires`rst2html`) or `"md"` (default) for Markdown.
  105 
  106 outputs
  107 : allows you to specify output formats specific to the content. See [output formats][outputs].
  108 
  109 publishDate
  110 : if in the future, content will not be rendered unless the `--buildFuture` flag is passed to `hugo`.
  111 
  112 resources
  113 : used for configuring page bundle resources. See [Page Resources][page-resources].
  114 
  115 series
  116 : an array of series this page belongs to, as a subset of the `series` [taxonomy](/content-management/taxonomies/); used by the `opengraph` [internal template](/templates/internal) to populate `og:see_also`.
  117 
  118 slug
  119 : appears as the tail of the output URL. A value specified in front matter will override the segment of the URL based on the filename.
  120 
  121 summary
  122 : text used when providing a summary of the article in the `.Summary` page variable; details available in the [content-summaries](/content-management/summaries/) section.
  123 
  124 title
  125 : the title for the content.
  126 
  127 type
  128 : the type of the content; this value will be automatically derived from the directory (i.e., the [section][]) if not specified in front matter.
  129 
  130 url
  131 : the full path to the content from the web root. It makes no assumptions about the path of the content file. See [URL Management](/content-management/urls/#set-url-in-front-matter).
  132 
  133 videos
  134 : an array of paths to videos related to the page; used by the `opengraph` [internal template](/templates/internal) to populate `og:video`.
  135 
  136 weight
  137 : used for [ordering your content in lists][ordering]. Lower weight gets higher precedence. So content with lower weight will come first. If set, weights should be non-zero, as 0 is interpreted as an *unset* weight.
  138 
  139 \<taxonomies\>
  140 : field name of the *plural* form of the index. See `tags` and `categories` in the above front matter examples. _Note that the plural form of user-defined taxonomies cannot be the same as any of the predefined front matter variables._
  141 
  142 {{% note "Hugo's Default URL Destinations" %}}
  143 If neither `slug` nor `url` is present and [permalinks are not configured otherwise in your site `config` file](/content-management/urls/#permalinks), Hugo will use the filename of your content to create the output URL. See [Content Organization](/content-management/organization) for an explanation of paths in Hugo and [URL Management](/content-management/urls/) for ways to customize Hugo's default behaviors.
  144 {{% /note %}}
  145 
  146 ### User-Defined
  147 
  148 You can add fields to your front matter arbitrarily to meet your needs. These user-defined key-values are placed into a single `.Params` variable for use in your templates.
  149 
  150 The following fields can be accessed via `.Params.include_toc` and `.Params.show_comments`, respectively. The [Variables][] section provides more information on using Hugo's page- and site-level variables in your templates.
  151 
  152 {{< code-toggle copy="false" >}}
  153 include_toc: true
  154 show_comments: false
  155 {{</ code-toggle >}}
  156 
  157 ## Front Matter Cascade
  158 
  159 Any node or section can pass down to descendants a set of Front Matter values as long as defined underneath the reserved `cascade` Front Matter key.
  160 
  161 ### Target Specific Pages
  162 
  163 {{< new-in "0.76.0" >}}
  164 
  165 Since Hugo 0.76 the `cascade` block can be a slice with a optional `_target` keyword, allowing for multiple `cascade` values targeting different page sets.
  166 
  167 {{< code-toggle copy="false" >}}
  168 title ="Blog"
  169 [[cascade]]
  170 background = "yosemite.jpg"
  171 [cascade._target]
  172 path="/blog/**"
  173 lang="en"
  174 kind="page"
  175 [[cascade]]
  176 background = "goldenbridge.jpg"
  177 [cascade._target]
  178 kind="section"
  179 {{</ code-toggle >}}
  180 
  181 Keywords available for `_target`:
  182 
  183 path
  184 : A [Glob](https://github.com/gobwas/glob) pattern matching the content path below /content. Expects Unix-styled slashes. Note that this is the virtual path, so it starts at the mount root. The matching support double-asterisks so you can match for patterns like `/blog/*/**` to match anything from the third level and down.
  185 
  186 kind
  187 : A Glob pattern matching the Page's Kind(s), e.g. "{home,section}".
  188 
  189 lang
  190 : A Glob pattern matching the Page's language, e.g. "{en,sv}".
  191 
  192 environment
  193 : A Glob pattern matching the build environment, e.g. "{production,development}"
  194 
  195 Any of the above can be omitted. 
  196 
  197 ### Example
  198 
  199 In `content/blog/_index.md`
  200 
  201 {{< code-toggle copy="false" >}}
  202 title: Blog
  203 cascade:
  204   banner: images/typewriter.jpg
  205 {{</ code-toggle >}}
  206 
  207 With the above example the Blog section page and its descendants will return `images/typewriter.jpg` when `.Params.banner` is invoked unless:
  208 
  209 - Said descendant has its own `banner` value set 
  210 - Or a closer ancestor node has its own `cascade.banner` value set.
  211 
  212 
  213 
  214 ## Order Content Through Front Matter
  215 
  216 You can assign content-specific `weight` in the front matter of your content. These values are especially useful for [ordering][ordering] in list views. You can use `weight` for ordering of content and the convention of [`<TAXONOMY>_weight`][taxweight] for ordering content within a taxonomy. See [Ordering and Grouping Hugo Lists][lists] to see how `weight` can be used to organize your content in list views.
  217 
  218 ## Override Global Markdown Configuration
  219 
  220 It's possible to set some options for Markdown rendering in a content's front matter as an override to the [Rendering options set in your project configuration][config].
  221 
  222 ## Front Matter Format Specs
  223 
  224 * [TOML Spec][toml]
  225 * [YAML Spec][yaml]
  226 * [JSON Spec][json]
  227 
  228 [variables]: /variables/
  229 [aliases]: /content-management/urls/#aliases
  230 [archetype]: /content-management/archetypes/
  231 [bylinktitle]: /templates/lists/#by-link-title
  232 [config]: /getting-started/configuration/ "Hugo documentation for site configuration"
  233 [content type]: /content-management/types/
  234 [contentorg]: /content-management/organization/
  235 [headless-bundle]: /content-management/page-bundles/#headless-bundle
  236 [json]: https://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf "Specification for JSON, JavaScript Object Notation"
  237 [lists]: /templates/lists/#order-content "See how to order content in list pages; for example, templates that look to specific _index.md for content and front matter."
  238 [lookup]: /templates/lookup-order/ "Hugo traverses your templates in a specific order when rendering content to allow for DRYer templating."
  239 [ordering]: /templates/lists/ "Hugo provides multiple ways to sort and order your content in list templates"
  240 [outputs]: /templates/output-formats/ "With the release of v22, you can output your content to any text format using Hugo's familiar templating"
  241 [page-resources]: /content-management/page-resources/
  242 [pagevars]: /variables/page/
  243 [section]: /content-management/sections/
  244 [taxweight]: /content-management/taxonomies/
  245 [toml]: https://github.com/toml-lang/toml "Specification for TOML, Tom's Obvious Minimal Language"
  246 [urls]: /content-management/urls/
  247 [variables]: /variables/
  248 [yaml]: https://yaml.org/spec/ "Specification for YAML, YAML Ain't Markup Language"