mirror of
https://github.com/gohugoio/hugo.git
synced 2024-11-21 20:46:30 -05:00
Squashed 'docs/' changes from 7297c1172..d3eb97a33
d3eb97a33 Document .IsSection page variable a068bcf5c Ace and Amber support was removed with #6609 5cd9ca4b2 Mention MacPorts also on the Installing page (#1215) 0ae8f5c19 Add instructions for using Macports d50aba8f0 Revise ref and relref function pages a17e25d6f Update quick-start.md: move notice about drafts up cf87a5da2 Update macOS tarball installation instructions (#1203) 2e701f8f3 Corrected the url for index function link 736bd59e0 Clarify treatment of zero weights (#1207) 42a19f479 Fix example of output from urlize function 34f8de26d Revise content-management/cross-references 252435a95 Rewrite Translation of Strings f0882bc14 Remove note that has been outdated by v0.71.0 dfe28ceb5 Improve mounts module config 58029627d Fix erroneous example code piping to if git-subtree-dir: docs git-subtree-split: d3eb97a3328f5390801bbce017233ce895fc2d28
This commit is contained in:
parent
cb39847dee
commit
7d7771b673
14 changed files with 226 additions and 94 deletions
|
@ -51,13 +51,11 @@ toc: true
|
||||||
* Integrated [Disqus][] comment support
|
* Integrated [Disqus][] comment support
|
||||||
* Integrated [Google Analytics][] support
|
* Integrated [Google Analytics][] support
|
||||||
* Automatic [RSS][] creation
|
* Automatic [RSS][] creation
|
||||||
* Support for [Go][], [Amber], and [Ace][] HTML templates
|
* Support for [Go][] HTML templates
|
||||||
* [Syntax highlighting][] powered by [Chroma][]
|
* [Syntax highlighting][] powered by [Chroma][]
|
||||||
|
|
||||||
|
|
||||||
[Ace]: /templates/alternatives/
|
|
||||||
[aliases]: /content-management/urls/#aliases
|
[aliases]: /content-management/urls/#aliases
|
||||||
[Amber]: https://github.com/eknkc/amber
|
|
||||||
[Chroma]: https://github.com/alecthomas/chroma
|
[Chroma]: https://github.com/alecthomas/chroma
|
||||||
[content summaries]: /content-management/summaries/
|
[content summaries]: /content-management/summaries/
|
||||||
[content types]: /content-management/types/
|
[content types]: /content-management/types/
|
||||||
|
|
|
@ -15,31 +15,39 @@ aliases: [/extras/crossreferences/]
|
||||||
toc: true
|
toc: true
|
||||||
---
|
---
|
||||||
|
|
||||||
|
The `ref` and `relref` shortcodes display the absolute and relative permalinks to a document, respectively.
|
||||||
The `ref` and `relref` shortcode resolves the absolute or relative permalink given a path to a document.
|
|
||||||
|
|
||||||
## Use `ref` and `relref`
|
## Use `ref` and `relref`
|
||||||
|
|
||||||
```go-html-template
|
```go-html-template
|
||||||
|
{{</* ref "document" */>}}
|
||||||
|
{{</* ref "document#anchor" */>}}
|
||||||
{{</* ref "document.md" */>}}
|
{{</* ref "document.md" */>}}
|
||||||
{{</* ref "#anchor" */>}}
|
|
||||||
{{</* ref "document.md#anchor" */>}}
|
{{</* ref "document.md#anchor" */>}}
|
||||||
|
{{</* ref "#anchor" */>}}
|
||||||
{{</* ref "/blog/my-post" */>}}
|
{{</* ref "/blog/my-post" */>}}
|
||||||
{{</* ref "/blog/my-post.md" */>}}
|
{{</* ref "/blog/my-post.md" */>}}
|
||||||
|
{{</* relref "document" */>}}
|
||||||
{{</* relref "document.md" */>}}
|
{{</* relref "document.md" */>}}
|
||||||
{{</* relref "#anchor" */>}}
|
{{</* relref "#anchor" */>}}
|
||||||
{{</* relref "document.md#anchor" */>}}
|
{{</* relref "/blog/my-post.md" */>}}
|
||||||
```
|
```
|
||||||
|
|
||||||
The single parameter to `ref` is a string with a content `documentname` (e.g., `about.md`) with or without an appended in-document `anchor` (`#who`) without spaces. Hugo is flexible in how we search for documents, so the file suffix may be omitted.
|
To generate a hyperlink using `ref` or `relref` in markdown:
|
||||||
|
|
||||||
**Paths without a leading `/` will first be tried resolved relative to the current page.**
|
```md
|
||||||
|
[About]({{</* ref "/page/about" */>}} "About Us")
|
||||||
|
```
|
||||||
|
|
||||||
You will get an error if your document could not be uniquely resolved. The error behaviour can be configured, see below.
|
The `ref` and `relref` shortcodes require a single parameter: the path to a content document, with or without a file extension, with or without an anchor.
|
||||||
|
|
||||||
|
**Paths without a leading `/` are first resolved relative to the current page, then to the remainder of the site.
|
||||||
|
|
||||||
|
Hugo emits an error or warning if a document cannot be uniquely resolved. The error behavior is configurable; see below.
|
||||||
|
|
||||||
### Link to another language version
|
### Link to another language version
|
||||||
|
|
||||||
Link to another language version of a document, you need to use this syntax:
|
To link to another language version of a document, use this syntax:
|
||||||
|
|
||||||
```go-html-template
|
```go-html-template
|
||||||
{{</* relref path="document.md" lang="ja" */>}}
|
{{</* relref path="document.md" lang="ja" */>}}
|
||||||
|
@ -47,45 +55,66 @@ Link to another language version of a document, you need to use this syntax:
|
||||||
|
|
||||||
### Get another Output Format
|
### Get another Output Format
|
||||||
|
|
||||||
To link to a given Output Format of a document, you can use this syntax:
|
To link to another Output Format of a document, use this syntax:
|
||||||
|
|
||||||
```go-html-template
|
```go-html-template
|
||||||
{{</* relref path="document.md" outputFormat="rss" */>}}
|
{{</* relref path="document.md" outputFormat="rss" */>}}
|
||||||
```
|
```
|
||||||
|
|
||||||
### Anchors
|
### Heading IDs
|
||||||
|
|
||||||
When an `anchor` is provided by itself, the current page’s unique identifier will be appended; when an `anchor` is provided appended to `documentname`, the found page's unique identifier will be appended:
|
When using Markdown document types, Hugo generates element IDs for every heading on a page. For example:
|
||||||
|
|
||||||
```go-html-template
|
```md
|
||||||
{{</* relref "#anchors" */>}} => #anchors:9decaf7
|
## Reference
|
||||||
```
|
```
|
||||||
|
|
||||||
The above examples render as follows for this very page as well as a reference to the "Content" heading in the Hugo docs features pageyoursite
|
produces this HTML:
|
||||||
|
|
||||||
```go-html-template
|
```html
|
||||||
{{</* relref "#who" */>}} => #who:9decaf7
|
<h2 id="reference">Reference</h2>
|
||||||
{{</* relref "/blog/post.md#who" */>}} => /blog/post/#who:badcafe
|
|
||||||
```
|
```
|
||||||
|
|
||||||
More information about document unique identifiers and headings can be found [below]({{< ref "#hugo-heading-anchors" >}}).
|
Get the permalink to a heading by appending the ID to the path when using the `ref` or `relref` shortcodes:
|
||||||
|
|
||||||
## Hugo Heading Anchors
|
|
||||||
|
|
||||||
When using Markdown document types, Hugo generates heading anchors automatically. The generated anchor for this section is `hugo-heading-anchors`. Because the heading anchors are generated automatically, Hugo takes some effort to ensure that heading anchors are unique both inside a document and across the entire site.
|
|
||||||
|
|
||||||
Ensuring heading uniqueness across the site is accomplished with a unique identifier for each document based on its path. Unless a document is renamed or moved between sections *in the filesystem*, the unique identifier for the document will not change: `blog/post.md` will always have a unique identifier of `81df004c333b392d34a49fd3a91ba720`.
|
|
||||||
|
|
||||||
`ref` and `relref` were added so you can make these reference links without having to know the document’s unique identifier. (The links in document tables of contents are automatically up-to-date with this value.)
|
|
||||||
|
|
||||||
|
```md
|
||||||
|
{{</* ref "document.md#reference */>}}
|
||||||
|
{{</* relref "document.md#reference */>}}
|
||||||
```
|
```
|
||||||
{{</* relref "content-management/cross-references.md#hugo-heading-anchors" */>}}
|
|
||||||
/content-management/cross-references/#hugo-heading-anchors:77cd9ea530577debf4ce0f28c8dca242
|
Generate a custom heading ID by including an attribute. For example:
|
||||||
|
|
||||||
|
```md
|
||||||
|
## Reference A {#foo}
|
||||||
|
## Reference B {id="bar"}
|
||||||
|
```
|
||||||
|
|
||||||
|
produces this HTML:
|
||||||
|
|
||||||
|
```html
|
||||||
|
<h2 id="foo">Reference A</h2>
|
||||||
|
<h2 id="bar">Reference B</h2>
|
||||||
|
```
|
||||||
|
|
||||||
|
Hugo will generate unique element IDs if the same heading appears more than once on a page. For example:
|
||||||
|
|
||||||
|
```md
|
||||||
|
## Reference
|
||||||
|
## Reference
|
||||||
|
## Reference
|
||||||
|
```
|
||||||
|
|
||||||
|
produces this HTML:
|
||||||
|
|
||||||
|
```html
|
||||||
|
<h2 id="reference">Reference</h2>
|
||||||
|
<h2 id="reference-1">Reference</h2>
|
||||||
|
<h2 id="reference-2">Reference</h2>
|
||||||
```
|
```
|
||||||
|
|
||||||
## Ref and RelRef Configuration
|
## Ref and RelRef Configuration
|
||||||
|
|
||||||
The behaviour can, since Hugo 0.45, be configured in `config.toml`:
|
The behavior can, since Hugo 0.45, be configured in `config.toml`:
|
||||||
|
|
||||||
refLinksErrorLevel ("ERROR")
|
refLinksErrorLevel ("ERROR")
|
||||||
: When using `ref` or `relref` to resolve page links and a link cannot resolved, it will be logged with this log level. Valid values are `ERROR` (default) or `WARNING`. Any `ERROR` will fail the build (`exit -1`).
|
: When using `ref` or `relref` to resolve page links and a link cannot resolved, it will be logged with this log level. Valid values are `ERROR` (default) or `WARNING`. Any `ERROR` will fail the build (`exit -1`).
|
||||||
|
|
|
@ -316,44 +316,83 @@ See https://github.com/gohugoio/hugo/issues/3564
|
||||||
|
|
||||||
{{% /note %}}
|
{{% /note %}}
|
||||||
|
|
||||||
|
### Query basic translation
|
||||||
|
|
||||||
From within your templates, use the `i18n` function like this:
|
From within your templates, use the `i18n` function like this:
|
||||||
|
|
||||||
```
|
```
|
||||||
{{ i18n "home" }}
|
{{ i18n "home" }}
|
||||||
```
|
```
|
||||||
|
|
||||||
This uses a definition like this one in `i18n/en-US.toml`:
|
The function will search for the `"home"` id from `i18n/en-US.toml` file:
|
||||||
|
|
||||||
```
|
```
|
||||||
[home]
|
[home]
|
||||||
other = "Home"
|
other = "Home"
|
||||||
```
|
```
|
||||||
|
|
||||||
Often you will want to use to the page variables in the translations strings. To do that, pass on the "." context when calling `i18n`:
|
The result will be
|
||||||
|
|
||||||
|
```
|
||||||
|
Home
|
||||||
|
```
|
||||||
|
|
||||||
|
### Query a flexible translation with variables
|
||||||
|
|
||||||
|
Often you will want to use to the page variables in the translations strings. To do that, pass on the `.` context when calling `i18n`:
|
||||||
|
|
||||||
```
|
```
|
||||||
{{ i18n "wordCount" . }}
|
{{ i18n "wordCount" . }}
|
||||||
```
|
```
|
||||||
|
|
||||||
This uses a definition like this one in `i18n/en-US.toml`:
|
The function will pass the `.` context to the `"wordCount"` id in `i18n/en-US.toml` file:
|
||||||
|
|
||||||
```
|
```
|
||||||
[wordCount]
|
[wordCount]
|
||||||
other = "This article has {{ .WordCount }} words."
|
other = "This article has {{ .WordCount }} words."
|
||||||
```
|
```
|
||||||
An example of singular and plural form:
|
|
||||||
|
Assume `.WordCount` in the context has value is 101. The result will be:
|
||||||
|
|
||||||
|
```
|
||||||
|
This article has 101 words.
|
||||||
|
```
|
||||||
|
|
||||||
|
### Query a singular/plural translation
|
||||||
|
|
||||||
|
In other to meet singular/plural requirement, you must pass a dictionary (map) data with a numeric `.Count` property to the `i18n` function. The below example uses `.ReadingTime` variable which has a built-in `.Count` property.
|
||||||
|
|
||||||
|
```
|
||||||
|
{{ i18n "readingTime" .ReadingTime }}
|
||||||
|
```
|
||||||
|
|
||||||
|
The function will read `.Count` from `.ReadingTime` and evaluate where the number is singular (`one`) or plural (`other`). After that, it will pass to `readingTime` id in `i18n/en-US.toml` file:
|
||||||
|
|
||||||
```
|
```
|
||||||
[readingTime]
|
[readingTime]
|
||||||
one = "One minute to read"
|
one = "One minute to read"
|
||||||
other = "{{.Count}} minutes to read"
|
other = "{{.Count}} minutes to read"
|
||||||
```
|
```
|
||||||
And then in the template:
|
|
||||||
|
Assume `.ReadingTime.Count` in the context has value is 525600. The result will be:
|
||||||
|
|
||||||
```
|
```
|
||||||
{{ i18n "readingTime" .ReadingTime }}
|
525600 minutes to read
|
||||||
```
|
```
|
||||||
|
|
||||||
|
If `.ReadingTime.Count` in the context has value is 1. The result is:
|
||||||
|
|
||||||
|
```
|
||||||
|
One minutes to read
|
||||||
|
```
|
||||||
|
|
||||||
|
In case you need to pass a custom data: (`"(dict Count" 25)` is minimum requirment)
|
||||||
|
|
||||||
|
```
|
||||||
|
{{ i18n "readingTime" (dict "Count" 25 "FirstArgument" true "SecondArgument" false "Etc" "so on, so far") }}
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
## Customize Dates
|
## Customize Dates
|
||||||
|
|
||||||
At the time of this writing, Go does not yet have support for internationalized locales for dates, but if you do some work, you can simulate it. For example, if you want to use French month names, you can add a data file like ``data/mois.yaml`` with this content:
|
At the time of this writing, Go does not yet have support for internationalized locales for dates, but if you do some work, you can simulate it. For example, if you want to use French month names, you can add a data file like ``data/mois.yaml`` with this content:
|
||||||
|
|
|
@ -1,17 +1,17 @@
|
||||||
---
|
---
|
||||||
title: ref
|
title: ref
|
||||||
linktitle: ref
|
linktitle: ref
|
||||||
description: Looks up a content page by logical name.
|
description: Returns the absolute permalink to a page.
|
||||||
godocref:
|
godocref:
|
||||||
date: 2017-02-01
|
date: 2017-02-01
|
||||||
publishdate: 2017-02-01
|
publishdate: 2017-02-01
|
||||||
lastmod: 2019-12-28
|
lastmod: 2020-09-05
|
||||||
categories: [functions]
|
categories: [functions]
|
||||||
menu:
|
menu:
|
||||||
docs:
|
docs:
|
||||||
parent: "functions"
|
parent: "functions"
|
||||||
keywords: [cross references, anchors]
|
keywords: [cross references, anchors]
|
||||||
signature: ["ref . CONTENT"]
|
signature: ["ref . PAGE"]
|
||||||
workson: []
|
workson: []
|
||||||
hugoversion:
|
hugoversion:
|
||||||
relatedfuncs: [relref]
|
relatedfuncs: [relref]
|
||||||
|
@ -19,22 +19,33 @@ deprecated: false
|
||||||
aliases: []
|
aliases: []
|
||||||
---
|
---
|
||||||
|
|
||||||
`ref` and `relref` look up a content page by logical name (`ref`) or relative path (`relref`) to return the permalink:
|
This function takes two parameters:
|
||||||
|
|
||||||
```
|
- The context of the page from which to resolve relative paths, typically the current page (`.`)
|
||||||
|
- The path to a page, with or without a file extension, with or without an anchor. A path without a leading `/` is first resolved relative to the given context, then to the remainder of the site.
|
||||||
|
|
||||||
|
```go-html-template
|
||||||
|
{{ ref . "about" }}
|
||||||
|
{{ ref . "about#anchor" }}
|
||||||
{{ ref . "about.md" }}
|
{{ ref . "about.md" }}
|
||||||
|
{{ ref . "about.md#anchor" }}
|
||||||
|
{{ ref . "#anchor" }}
|
||||||
|
{{ ref . "/blog/my-post" }}
|
||||||
|
{{ ref . "/blog/my-post.md" }}
|
||||||
```
|
```
|
||||||
|
|
||||||
{{% note "Usage Note" %}}
|
To return the absolute permalink to another language version of a page:
|
||||||
`ref` looks up Hugo "Regular Pages" only. It can't be used for the homepage, section pages, etc.
|
|
||||||
{{% /note %}}
|
|
||||||
|
|
||||||
It is also possible to pass additional arguments to link to another language or an alternative output format. Therefore, pass a map of arguments instead of just the path.
|
```go-html-template
|
||||||
|
{{ ref . (dict "path" "about.md" "lang" "fr") }}
|
||||||
```
|
|
||||||
{{ ref . (dict "path" "about.md" "lang" "ja" "outputFormat" "rss") }}
|
|
||||||
```
|
```
|
||||||
|
|
||||||
These functions are used in two of Hugo's built-in shortcodes. You can see basic usage examples of both `ref` and `relref` in the [shortcode documentation](/content-management/shortcodes/#ref-and-relref).
|
To return the absolute permalink to another Output Format of a page:
|
||||||
|
|
||||||
For an extensive explanation of how to leverage `ref` and `relref` for content management, see [Cross References](/content-management/cross-references/).
|
```go-html-template
|
||||||
|
{{ ref . (dict "path" "about.md" "outputFormat" "rss") }}
|
||||||
|
```
|
||||||
|
|
||||||
|
Hugo emits an error or warning if the page cannot be uniquely resolved. The error behavior is configurable; see [Ref and RelRef Configuration](/content-management/cross-references/#ref-and-relref-configuration).
|
||||||
|
|
||||||
|
This function is used by Hugo's built-in [`ref`](/content-management/shortcodes/#ref-and-relref) shortcode. For a detailed explanation of how to leverage this shortcode for content management, see [Links and Cross References](/content-management/cross-references/).
|
||||||
|
|
|
@ -1,17 +1,17 @@
|
||||||
---
|
---
|
||||||
title: relref
|
title: relref
|
||||||
# linktitle: relref
|
linktitle: relref
|
||||||
description: Looks up a content page by relative path.
|
description: Returns the relative permalink to a page.
|
||||||
godocref:
|
godocref:
|
||||||
date: 2017-02-01
|
date: 2017-02-01
|
||||||
publishdate: 2017-02-01
|
publishdate: 2017-02-01
|
||||||
lastmod: 2019-12-28
|
lastmod: 2020-09-05
|
||||||
categories: [functions]
|
categories: [functions]
|
||||||
menu:
|
menu:
|
||||||
docs:
|
docs:
|
||||||
parent: "functions"
|
parent: "functions"
|
||||||
keywords: [cross references, anchors]
|
keywords: [cross references, anchors]
|
||||||
signature: ["relref . CONTENT"]
|
signature: ["relref . PAGE"]
|
||||||
workson: []
|
workson: []
|
||||||
hugoversion:
|
hugoversion:
|
||||||
relatedfuncs: [ref]
|
relatedfuncs: [ref]
|
||||||
|
@ -19,22 +19,40 @@ deprecated: false
|
||||||
aliases: []
|
aliases: []
|
||||||
---
|
---
|
||||||
|
|
||||||
`ref` and `relref` look up a content page by logical name (`ref`) or relative path (`relref`) to return the permalink:
|
This function takes two parameters:
|
||||||
|
|
||||||
```
|
- The context of the page from which to resolve relative paths, typically the current page (`.`)
|
||||||
|
- The path to a page, with or without a file extension, with or without an anchor. A path without a leading `/` is first resolved relative to the given context, then to the remainder of the site.
|
||||||
|
|
||||||
|
```go-html-template
|
||||||
|
{{ relref . "about" }}
|
||||||
|
{{ relref . "about#anchor" }}
|
||||||
{{ relref . "about.md" }}
|
{{ relref . "about.md" }}
|
||||||
|
{{ relref . "about.md#anchor" }}
|
||||||
|
{{ relref . "#anchor" }}
|
||||||
|
{{ relref . "/blog/my-post" }}
|
||||||
|
{{ relref . "/blog/my-post.md" }}
|
||||||
```
|
```
|
||||||
|
|
||||||
{{% note "Usage Note" %}}
|
The permalink returned is relative to the protocol+host portion of the baseURL specified in the site configuration. For example:
|
||||||
`relref` looks up Hugo "Regular Pages" only. It can't be used for the homepage, section pages, etc.
|
|
||||||
{{% /note %}}
|
|
||||||
|
|
||||||
It is also possible to pass additional arguments to link to another language or an alternative output format. Therefore, pass a map of arguments instead of just the path.
|
Code|baseURL|Permalink
|
||||||
|
:--|:--|:--
|
||||||
|
`{{ relref . "/about" }}`|`http://example.org/`|`/about/`
|
||||||
|
`{{ relref . "/about" }}`|`http://example.org/x/`|`/x/about/`
|
||||||
|
|
||||||
```
|
To return the relative permalink to another language version of a page:
|
||||||
{{ relref . (dict "path" "about.md" "lang" "ja" "outputFormat" "rss") }}
|
|
||||||
|
```go-html-template
|
||||||
|
{{ relref . (dict "path" "about.md" "lang" "fr") }}
|
||||||
```
|
```
|
||||||
|
|
||||||
These functions are used in two of Hugo's built-in shortcodes. You can see basic usage examples of both `ref` and `relref` in the [shortcode documentation](/content-management/shortcodes/#ref-and-relref).
|
To return the relative permalink to another Output Format of a page:
|
||||||
|
|
||||||
For an extensive explanation of how to leverage `ref` and `relref` for content management, see [Cross References](/content-management/cross-references/).
|
```go-html-template
|
||||||
|
{{ relref . (dict "path" "about.md" "outputFormat" "rss") }}
|
||||||
|
```
|
||||||
|
|
||||||
|
Hugo emits an error or warning if the page cannot be uniquely resolved. The error behavior is configurable; see [Ref and RelRef Configuration](/content-management/cross-references/#ref-and-relref-configuration).
|
||||||
|
|
||||||
|
This function is used by Hugo's built-in [`relref`](/content-management/shortcodes/#ref-and-relref) shortcode. For a detailed explanation of how to leverage this shortcode for content management, see [Links and Cross References](/content-management/cross-references/).
|
||||||
|
|
|
@ -53,8 +53,8 @@ The preceding partial would then output to the rendered page as follows, assumin
|
||||||
|
|
||||||
{{< output file="/blog/greatest-city/index.html" >}}
|
{{< output file="/blog/greatest-city/index.html" >}}
|
||||||
<header>
|
<header>
|
||||||
<h1>The World's Greatest City</h1>
|
<h1>The World's Greatest City</h1>
|
||||||
<div><a href="/locations/chicago-il/">Chicago IL</a></div>
|
<div><a href="/locations/chicago-il">Chicago IL</a></div>
|
||||||
<ul>
|
<ul>
|
||||||
<li>
|
<li>
|
||||||
<a href="/tags/pizza">pizza</a>
|
<a href="/tags/pizza">pizza</a>
|
||||||
|
@ -70,4 +70,5 @@ The preceding partial would then output to the rendered page as follows, assumin
|
||||||
{{< /output >}}
|
{{< /output >}}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
[singletemplate]: /templates/single-page-templates/
|
[singletemplate]: /templates/single-page-templates/
|
||||||
|
|
|
@ -95,7 +95,7 @@ The features currently supported are:
|
||||||
* `link`
|
* `link`
|
||||||
* `heading` {{< new-in "0.71.0" >}}
|
* `heading` {{< new-in "0.71.0" >}}
|
||||||
|
|
||||||
You can define [Output-Format-](/templates/output-formats) and [language-](/content-management/multilingual/)specific templates if needed.[^hooktemplate] Your `layouts` folder may look like this:
|
You can define [Output-Format-](/templates/output-formats) and [language-](/content-management/multilingual/)specific templates if needed. Your `layouts` folder may look like this:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
layouts
|
layouts
|
||||||
|
@ -194,5 +194,3 @@ The rendered html will be
|
||||||
```html
|
```html
|
||||||
<h3 id="section-a">Section A <a href="#section-a">¶</a></h3>
|
<h3 id="section-a">Section A <a href="#section-a">¶</a></h3>
|
||||||
```
|
```
|
||||||
|
|
||||||
[^hooktemplate]: It's currently only possible to have one set of render hook templates, e.g. not per `Type` or `Section`. We may consider that in a future version.
|
|
||||||
|
|
|
@ -58,6 +58,14 @@ brew install hugo
|
||||||
|
|
||||||
For more detailed explanations, read the installation guides that follow for installing on macOS and Windows.
|
For more detailed explanations, read the installation guides that follow for installing on macOS and Windows.
|
||||||
|
|
||||||
|
### MacPorts (macOS)
|
||||||
|
|
||||||
|
If you are on macOS and using [MacPorts][macports], you can install Hugo with the following one-liner:
|
||||||
|
|
||||||
|
{{< code file="install-with-macports.sh" >}}
|
||||||
|
port install hugo
|
||||||
|
{{< /code >}}
|
||||||
|
|
||||||
### Homebrew (Linux)
|
### Homebrew (Linux)
|
||||||
|
|
||||||
If you are using [Homebrew][linuxbrew] on Linux, you can install Hugo with the following one-liner:
|
If you are using [Homebrew][linuxbrew] on Linux, you can install Hugo with the following one-liner:
|
||||||
|
@ -133,7 +141,7 @@ If you are a Windows user, substitute the `$HOME` environment variable above wit
|
||||||
|
|
||||||
There are three ways to install Hugo on your Mac
|
There are three ways to install Hugo on your Mac
|
||||||
|
|
||||||
1. The [Homebrew][brew] `brew` utility
|
1. A package manager, like [Homebrew][brew] (`brew`) or [MacPorts][macports] (`port`)
|
||||||
2. Distribution (i.e., tarball)
|
2. Distribution (i.e., tarball)
|
||||||
3. Building from Source
|
3. Building from Source
|
||||||
|
|
||||||
|
@ -143,7 +151,7 @@ There is no "best" way to install Hugo on your Mac. You should use the method th
|
||||||
|
|
||||||
There are pros and cons to each of the aforementioned methods:
|
There are pros and cons to each of the aforementioned methods:
|
||||||
|
|
||||||
1. **Homebrew.** Homebrew is the simplest method and will require the least amount of work to maintain. The drawbacks aren't severe. The default package will be for the most recent release, so it will not have bug fixes until the next release (i.e., unless you install it with the `--HEAD` option). Hugo `brew` releases may lag a few days behind because it has to be coordinated with another team. Nevertheless, `brew` is the recommended installation method if you want to work from a stable, widely used source. Brew works well and is easy to update.
|
1. **Package Manager.** Using a package manager is the simplest method and will require the least amount of work to maintain. The drawbacks aren't severe. The default package will be for the most recent release, so it will not have bug fixes until the next release (i.e., unless you install it with the `--HEAD` option in Homebrew). Releases may lag a few days behind because it has to be coordinated with another team. Nevertheless, this is the recommended installation method if you want to work from a stable, widely used source. Package managers work well and they are easy to update.
|
||||||
|
|
||||||
2. **Tarball.** Downloading and installing from the tarball is also easy, although it requires a few more command line skills than does Homebrew. Updates are easy as well: you just repeat the process with the new binary. This gives you the flexibility to have multiple versions on your computer. If you don't want to use `brew`, then the tarball/binary is a good choice.
|
2. **Tarball.** Downloading and installing from the tarball is also easy, although it requires a few more command line skills than does Homebrew. Updates are easy as well: you just repeat the process with the new binary. This gives you the flexibility to have multiple versions on your computer. If you don't want to use `brew`, then the tarball/binary is a good choice.
|
||||||
|
|
||||||
|
@ -261,7 +269,7 @@ Archive: hugo_X.Y_osx-64bit.tgz
|
||||||
Hugo Static Site Generator v0.13 BuildDate: 2015-02-22T04:02:30-06:00
|
Hugo Static Site Generator v0.13 BuildDate: 2015-02-22T04:02:30-06:00
|
||||||
```
|
```
|
||||||
|
|
||||||
You may need to add your bin directory to your `PATH` variable. The `which` command will check for us. If it can find `hugo`, it will print the full path to it. Otherwise, it will not print anything.
|
You may need to add your bin directory to your `PATH` environment variable. The `which` command will check for us. If it can find `hugo`, it will print the full path to it. Otherwise, it will not print anything.
|
||||||
|
|
||||||
```
|
```
|
||||||
# check if hugo is in the path
|
# check if hugo is in the path
|
||||||
|
@ -269,21 +277,37 @@ which hugo
|
||||||
/Users/USERNAME/bin/hugo
|
/Users/USERNAME/bin/hugo
|
||||||
```
|
```
|
||||||
|
|
||||||
If `hugo` is not in your `PATH`, add it by updating your `~/.bash_profile` file. First, start up an editor:
|
If `hugo` is not in your `PATH`:
|
||||||
|
|
||||||
```
|
1. Determine your default shell (zsh or bash).
|
||||||
nano ~/.bash_profile
|
|
||||||
```
|
|
||||||
|
|
||||||
Add a line to update your `PATH` variable:
|
```
|
||||||
|
echo $SHELL
|
||||||
|
```
|
||||||
|
|
||||||
```
|
2. Edit your profile.
|
||||||
export PATH=$PATH:$HOME/bin
|
|
||||||
```
|
|
||||||
|
|
||||||
Then save the file by pressing Control-X, then Y to save the file and return to the prompt.
|
If your default shell is zsh:
|
||||||
|
|
||||||
Close the terminal and open a new terminal to pick up the changes to your profile. Verify your success by running the `which hugo` command again.
|
```
|
||||||
|
nano ~/.zprofile
|
||||||
|
```
|
||||||
|
|
||||||
|
If your default shell is bash:
|
||||||
|
|
||||||
|
```
|
||||||
|
nano ~/.bash_profile
|
||||||
|
```
|
||||||
|
|
||||||
|
3. Insert a line to add `$HOME/bin` to your existing `PATH`.
|
||||||
|
|
||||||
|
```
|
||||||
|
export PATH=$PATH:$HOME/bin
|
||||||
|
```
|
||||||
|
|
||||||
|
4. Save the file by pressing Control-X, then Y.
|
||||||
|
|
||||||
|
5. Close the terminal and open a new terminal to pick up the changes to your profile. Verify the change by running the `which hugo` command again.
|
||||||
|
|
||||||
You've successfully installed Hugo.
|
You've successfully installed Hugo.
|
||||||
|
|
||||||
|
@ -516,6 +540,7 @@ Upgrading Hugo is as easy as downloading and replacing the executable you’ve p
|
||||||
Now that you've installed Hugo, read the [Quick Start guide][quickstart] and explore the rest of the documentation. If you have questions, ask the Hugo community directly by visiting the [Hugo Discussion Forum][forum].
|
Now that you've installed Hugo, read the [Quick Start guide][quickstart] and explore the rest of the documentation. If you have questions, ask the Hugo community directly by visiting the [Hugo Discussion Forum][forum].
|
||||||
|
|
||||||
[brew]: https://brew.sh/
|
[brew]: https://brew.sh/
|
||||||
|
[macports]: https://www.macports.org/
|
||||||
[Chocolatey]: https://chocolatey.org/
|
[Chocolatey]: https://chocolatey.org/
|
||||||
[content]: /content-management/
|
[content]: /content-management/
|
||||||
[@dhersam]: https://github.com/dhersam
|
[@dhersam]: https://github.com/dhersam
|
||||||
|
|
|
@ -29,11 +29,13 @@ For other approaches learning Hugo like book or a video tutorial refer to the [e
|
||||||
## Step 1: Install Hugo
|
## Step 1: Install Hugo
|
||||||
|
|
||||||
{{% note %}}
|
{{% note %}}
|
||||||
`Homebrew`, a package manager for `macOS`, can be installed from [brew.sh](https://brew.sh/). See [install](/getting-started/installing) if you are running Windows etc.
|
`Homebrew` and `MacPorts`, package managers for `macOS`, can be installed from [brew.sh](https://brew.sh/) or [macports.org](https://www.macports.org/) respectively. See [install](/getting-started/installing) if you are running Windows etc.
|
||||||
{{% /note %}}
|
{{% /note %}}
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
brew install hugo
|
brew install hugo
|
||||||
|
# or
|
||||||
|
port install hugo
|
||||||
```
|
```
|
||||||
|
|
||||||
To verify your new install:
|
To verify your new install:
|
||||||
|
@ -102,6 +104,10 @@ draft: true
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
|
{{% note %}}
|
||||||
|
Drafts do not get deployed; once you finish a post, update the header of the post to say `draft: false`. More info [here](/getting-started/usage/#draft-future-and-expired-content).
|
||||||
|
{{% /note %}}
|
||||||
|
|
||||||
## Step 5: Start the Hugo server
|
## Step 5: Start the Hugo server
|
||||||
|
|
||||||
Now, start the Hugo server with [drafts](/getting-started/usage/#draft-future-and-expired-content) enabled:
|
Now, start the Hugo server with [drafts](/getting-started/usage/#draft-future-and-expired-content) enabled:
|
||||||
|
@ -171,6 +177,3 @@ hugo -D
|
||||||
|
|
||||||
Output will be in `./public/` directory by default (`-d`/`--destination` flag to change it, or set `publishdir` in the config file).
|
Output will be in `./public/` directory by default (`-d`/`--destination` flag to change it, or set `publishdir` in the config file).
|
||||||
|
|
||||||
{{% note %}}
|
|
||||||
Drafts do not get deployed; once you finish a post, update the header of the post to say `draft: false`. More info [here](/getting-started/usage/#draft-future-and-expired-content).
|
|
||||||
{{% /note %}}
|
|
||||||
|
|
|
@ -91,11 +91,14 @@ disable
|
||||||
## Module Config: mounts
|
## Module Config: mounts
|
||||||
|
|
||||||
{{% note %}}
|
{{% note %}}
|
||||||
When the `mounts` config was introduced in Hugo 0.56.0, we were careful to preserve the existing `staticDir` and similar configuration to make sure all existing sites just continued to work.
|
When the `mounts` config was introduced in Hugo 0.56.0, we were careful to preserve the existing `staticDir` and similar configuration to make sure all existing sites just continued to work. But you should not have both: if you add a `mounts` section you should remove the old `staticDir` etc. settings.
|
||||||
|
|
||||||
But you should not have both. So if you add a `mounts` section you should make it complete and remove the old `staticDir` etc. settings.
|
|
||||||
{{% /note %}}
|
{{% /note %}}
|
||||||
|
|
||||||
|
{{% warning %}}
|
||||||
|
When you add a mount, the default mount for the concerned target root is ignored: be sure to explicitly add it.
|
||||||
|
{{% /warning %}}
|
||||||
|
|
||||||
|
**Default mounts**
|
||||||
{{< code-toggle file="config">}}
|
{{< code-toggle file="config">}}
|
||||||
[module]
|
[module]
|
||||||
[[module.mounts]]
|
[[module.mounts]]
|
||||||
|
|
|
@ -646,7 +646,7 @@ Go allows you to do more than what's shown here. Using Hugo's [`where` function]
|
||||||
[functions]: /functions/ "See the full list of Hugo's templating functions with a quick start reference guide and basic and advanced examples."
|
[functions]: /functions/ "See the full list of Hugo's templating functions with a quick start reference guide and basic and advanced examples."
|
||||||
[Go html/template]: https://golang.org/pkg/html/template/ "Godocs references for Go's html templating"
|
[Go html/template]: https://golang.org/pkg/html/template/ "Godocs references for Go's html templating"
|
||||||
[gohtmltemplate]: https://golang.org/pkg/html/template/ "Godocs references for Go's html templating"
|
[gohtmltemplate]: https://golang.org/pkg/html/template/ "Godocs references for Go's html templating"
|
||||||
[index]: /functions/index/
|
[index]: /functions/index-function/
|
||||||
[math functions]: /functions/math/
|
[math functions]: /functions/math/
|
||||||
[partials]: /templates/partials/ "Link to the partial templates page inside of the templating section of the Hugo docs"
|
[partials]: /templates/partials/ "Link to the partial templates page inside of the templating section of the Hugo docs"
|
||||||
[internal_templates]: /templates/internal/
|
[internal_templates]: /templates/internal/
|
||||||
|
|
|
@ -95,7 +95,7 @@ For the second position, you would just use:
|
||||||
most helpful when the condition depends on either of the values, or both:
|
most helpful when the condition depends on either of the values, or both:
|
||||||
|
|
||||||
```
|
```
|
||||||
{{ or .Get "title" | .Get "alt" | if }} alt="{{ with .Get "alt"}}{{.}}{{else}}{{.Get "title"}}{{end}}"{{ end }}
|
{{ if or (.Get "title") (.Get "alt") }} alt="{{ with .Get "alt"}}{{.}}{{else}}{{.Get "title"}}{{end}}"{{ end }}
|
||||||
```
|
```
|
||||||
|
|
||||||
#### `.Inner`
|
#### `.Inner`
|
||||||
|
|
|
@ -158,7 +158,11 @@ Hugo uses both `date` and `weight` to order content within taxonomies.
|
||||||
|
|
||||||
Each piece of content in Hugo can optionally be assigned a date. It can also be assigned a weight for each taxonomy it is assigned to.
|
Each piece of content in Hugo can optionally be assigned a date. It can also be assigned a weight for each taxonomy it is assigned to.
|
||||||
|
|
||||||
When iterating over content within taxonomies, the default sort is the same as that used for [section and list pages]() first by weight then by date. This means that if the weights for two pieces of content are the same, than the more recent content will be displayed first. The default weight for any piece of content is 0.
|
When iterating over content within taxonomies, the default sort is the same as that used for section and list pages first by weight then by date. This means that if the weights for two pieces of content are the same, then the more recent content will be displayed first.
|
||||||
|
|
||||||
|
The default weight for any piece of content is 0.
|
||||||
|
|
||||||
|
Weights of zero are treated specially: if two pages have unequal weights, and one of them is zero, then the zero-weighted page will always appear after the other one, regardless of the other's weight. Zero weights should thus be used with care: for example, if both positive and negative weights are used to extend a sequence in both directions, a zero-weighted page will appear not in the middle of the list, but at the end.
|
||||||
|
|
||||||
### Assign Weight
|
### Assign Weight
|
||||||
|
|
||||||
|
|
|
@ -72,6 +72,9 @@ See [`.Scratch`](/functions/scratch/) for page-scoped, writable variables.
|
||||||
.IsPage
|
.IsPage
|
||||||
: always `true` for regular content pages.
|
: always `true` for regular content pages.
|
||||||
|
|
||||||
|
.IsSection
|
||||||
|
: `true` if [`.Kind`](/templates/section-templates/#page-kinds) is `section`.
|
||||||
|
|
||||||
.IsTranslated
|
.IsTranslated
|
||||||
: `true` if there are translations to display.
|
: `true` if there are translations to display.
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue