c43daf45fUpdate build-options.md3ebbfedd4Build options: Improve readability5091bf6a0Improve safeHTMLAttr explanationb64cbce2eFix description of collections.Apply6ea264b9cnetlify: Hugo 0.115.4b42e7c542Revert "config: Remove disableLiveReload"35ce2290eRemove excess spaces in configuration docs2edf761deUpdate listed titleCaseStyle default value887f6fb97config: Remove disableLiveReloadc9f49fb26Fix typo37d8569acRemove tools associated with Atom871d11b72Fix URL in postprocess docsbbb17d29fUpdate GitLab workflowbc53ea5ceUse sentence-style capitalization for headings7ca578786netlify: Hugo 0.115.3c5e010bd0Merge branch 'tempv0.115.3'c885604bfRemove starter kits page4c0fe269eUpdate mention of Netlify CMS to Decap CMS05067175cConsistently use file name instead of filename763dd6404Improve multilingual config example and descriptionse5aa61ec5Use lowercase when referring to front matter (#2132)7ba3d0c72docs: Refresh docs.jsonde8bddedfUpdate description of timeout configuration valuee1245d9f8netify: Hugo 0.115.2153a36bdfMerge branch 'tempv0.115.2'707cec754Fix typo in figure example in shortcodes.md128cbe1e5Improve taxonomy template examples4e743ec36Improve highlight function examplef96fa6805transpile sass: Fixes typoe4a8a21f7Compile Sass to CSS, not SCSSc1538bd00docs: Regenerate CLI docsbd4e33436Add titleCaseStyle none and firstupper6ff93d478Update quick-start.md5c6653cb1Update build config examples and explanation1458d9a43Remove the `url` parameter6a1e92044netlify: Hugo 0.115.1a9d5d6f2fMerge branch 'tempv0.115.1'4c4882384docs: Regen docs helperd1aa1c1f5Add link to PowerShell vs Windows PowerShell documentation6e3b70c21Fix link to Git installation instructions4f8a9ca38Clarify resources.Copy argumentsee86dd121Update themedc7c305cfUpdate theme60c23920bClarify caching for resources.FromString (#2120)5bf2fef6dnetlify: Hugo 0.115.046bde87c5Merge branch 'tempv0.115.0'42cc48c16Specify target path caching for resources.ExecuteAsTemplate (#2027)a54bf4cd0Correct the sample code of mermaid (#2119)8c49b06fcdocs: Update permalinks documentationa4818d99bPage bundles: link to info about single vs. list page templates (#2116)3fc7744d7snap: Document removable media accessdbd08f58aUpdate themedf5b88633netlify: Hugo 0.114.16b859834aFix typo9ec92cf68Improve Dart Sass example for Netlify2d294ece9Add Dart Sass installation and usage documentation4c6b77d6cFix placement of curly braces897812a50Update template-debugging.md to include a jsonify example22bca519bUpdate GitHub Pages hosting instructions (#2109)a964d93ceDocument math functions new in v0.114.0 (#2108)9f4cb040enetlify: Hugo 0.114.055b4d9221Merge branch 'tempv0.114.0'93c4dcf93docs: Regen docshelper96f03c77fdocs: Regen CLI docs8e22a228aClarify resource media type variables (#2106)2652da8d4Update transform.Unmarshal.md (#2105)92657177aUpdate theme4601c1d65Update themea216f3145Merge commit '3c1deaf201a35de08d23cc58f8f03682cace3349'eed8794f5cache: Set default cache path based on $USER git-subtree-dir: docs git-subtree-split:c43daf45fd
3.1 KiB
title, description, categories, menu, keywords, signature, relatedfuncs, aliases
| title | description | categories | menu | keywords | signature | relatedfuncs | aliases | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| index | Looks up the index(es) or key(s) of the data structure passed into it. |
|
|
|
|
The index functions returns the result of indexing its first argument by the following arguments. Each indexed item must be a map or a slice, e.g.:
{{ $slice := slice "a" "b" "c" }}
{{ index $slice 1 }} => b
{{ $map := dict "a" 100 "b" 200 }}
{{ index $map "b" }} => 200
The function takes multiple indices as arguments, and this can be used to get nested values, e.g.:
{{ $map := dict "a" 100 "b" 200 "c" (slice 10 20 30) }}
{{ index $map "c" 1 }} => 20
{{ $map := dict "a" 100 "b" 200 "c" (dict "d" 10 "e" 20) }}
{{ index $map "c" "e" }} => 20
You may write multiple indices as a slice:
{{ $map := dict "a" 100 "b" 200 "c" (dict "d" 10 "e" 20) }}
{{ $slice := slice "c" "e" }}
{{ index $map $slice }} => 20
Example: load data from a path based on front matter parameters
Assume you want to add a location = "" field to your front matter for every article written in content/vacations/. You want to use this field to populate information about the location at the bottom of the article in your single.html template. You also have a directory in data/locations/ that looks like the following:
.
└── data
└── locations
├── abilene.toml
├── chicago.toml
├── oslo.toml
└── provo.toml
Here is an example:
{{< code-toggle file="data/locations/oslo" copy=false >}} website = "https://www.oslo.kommune.no" pop_city = 658390 pop_metro = 1717900 {{< /code-toggle >}}
The example we will use will be an article on Oslo, whose front matter should be set to exactly the same name as the corresponding file name in data/locations/:
{{< code-toggle file="content/articles/oslo.md" fm=true copy=false >}} title = "My Norwegian Vacation" location = "oslo" {{< /code-toggle >}}
The content of oslo.toml can be accessed from your template using the following node path: .Site.Data.locations.oslo. However, the specific file you need is going to change according to the front matter.
This is where the index function is needed. index takes 2 parameters in this use case:
- The node path
- A string corresponding to the desired data; e.g.—
{{ index .Site.Data.locations "oslo" }}
The variable for .Params.location is a string and can therefore replace oslo in the example above:
{{ index .Site.Data.locations .Params.location }}
=> map[website:https://www.oslo.kommune.no pop_city:658390 pop_metro:1717900]
Now the call will return the specific file according to the location specified in the content's front matter, but you will likely want to write specific properties to the template. You can do this by continuing down the node path via dot notation (.):
{{ (index .Site.Data.locations .Params.location).pop_city }}
=> 658390