392668f4f Update theme 65d82c845 fix versions in GitHub Pages docs (#1815) 4e078a306 Create hosting-on-azure-static-web-apps.md (#1738) e24e25052 fix requirement typo (#1814) 0790eb173 fix broken link (#1813) f4a1b38c7 📄 Add more clarity on merging of config files (#1493) 2e82efff0 Install on Windows: Correct + augment (#1520) 4bffd076e Update frontends to add CloudCannon's CMS (#1509) 17eea3133 Update index.md to add resource (#1508) 5a5ac1d2f Add documentation for babel sourceMap (#1492) 899b7117c Update menu-templates.md 284dc4266 Include flexible translation in i18n.md f03421274 docs: Escaping Hugo/GO template code 4f0755683 Improve the documentation of imageConfig and the image resource 89aa723cc Clarify leaf bundle explanation and related FAQ 0c6b32bb9 Update starter-kits.md a68151b1b Update starter-kits.md 91b145384 Update starter-kits.md c8104b422 Update hosting-on-21yunbox.md 51ee7603b Update hosting-on-21yunbox.md d88314499 docs(en): add hosting on 21YunBox aab04f269 Update shortcode-templates.md to correct an error. ed48563aa Misc improvements 87dd24e1d Fix merge failure 0bcc6dca8 js.Build: Update docs to not allow boolean inputs for sourceMap e50a28fbc js.Build: Add SourceMap flag into js.Build opts which can turn on sourcemap 9695093a1 Fix Arch Linux installation command 3de773d7a Please remove hugo-elasticsearch plugin. 6510f0a5a release: Add some more ignore expressions to release notes config dc90b7517 typoe > typo (!) 3427c7436 Add hugoreleaser config 5a1f2d0dd Improves formatting of resources, assets sections (#1804) 03ba56fdd Remove Flesland Flis from Showcases 9f61dac7a Update slice.md 533e4e0cd Update theme 85e50325c Simplify writing 9b30e81b9 Typo fix and remove passive form 8974b6c53 dynamic-menu-configuration 1c5467329 netlify: Hugo 0.102.3 610a937b0 Remove Over from Showcase 99f5585bc netlify: Hugo v0.102.2 9f230ac1f netlify: Hugo v0.102.1 a6fc3f864 netlify: Bump to Hugo v0.102.0 3e9bc1a62 Merge branch 'tempv0.102.0' c08d6d898 Update en/templates/404.md with Firebase Hosting (#1796) 322b75f40 Update configuration.md 2fa6f0b94 404 template example: remove slash relURL arg 1195f168a Remove broken link (#1767) e0838e574 Update RenderString.md bee6adf71 Update page-resources.md 24e142f22 Remove duplicate word from cascade description 879fc3983 docs: Update the description of PostCSS config 2ffe539e3 fix: Use `=` instead of `:=` for variable reassignments (#1771) 7496b8f87 update 404 error for digitalocean docs c85caca4a Merge commit 'bdf935d66c1f02dfc942a30e9fc00519bba3aacb' c3888b63a docs: Regen docshelper 8a5942555 Merge commit '475f87f685439de0f907a9ffc29bfd1361eb1c59' 282007217 common: Add hugo.GoVersion 00b4b46da resources/page: Add :slugorfilename attribute git-subtree-dir: docs git-subtree-split: 392668f4f488d184b08b227028b01dbc02abd57a
7.1 KiB
title | description | date | categories | keywords | weight | draft | toc | linktitle | menu | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Page Resources | Page resources -- images, other pages, documents, etc. -- have page-relative URLs and their own metadata. | 2018-01-24 |
|
|
4003 | false | true | Page Resources |
|
Page resources are only accessible from [page bundles]({{< relref
"/content-management/page-bundles" >}}), those directories with index.md
or
_index.md
files at their root. Page resources are only available to the
page with which they are bundled.
In this example, first-post
is a page bundle with access to 10 page resources including audio, data, documents, images, and video. Although second-post
is also a page bundle, it has no page resources and is unable to directly access the page resources associated with first-post
.
content
└── post
├── first-post
│ ├── images
│ │ ├── a.jpg
│ │ ├── b.jpg
│ │ └── c.jpg
│ ├── index.md (root of page bundle)
│ ├── latest.html
│ ├── manual.json
│ ├── notice.md
│ ├── office.mp3
│ ├── pocket.mp4
│ ├── rating.pdf
│ └── safety.txt
└── second-post
└── index.md (root of page bundle)
Properties
- ResourceType
- The main type of the resource's Media Type. For example, a file of MIME type
image/jpeg
has the ResourceTypeimage
. APage
will haveResourceType
with valuepage
.
{{< new-in "0.80.0" >}} Note that we in Hugo v0.80.0
fixed a bug where non-image resources (e.g. video) would return the MIME sub type, e.g. json
.
- Name
- Default value is the filename (relative to the owning page). Can be set in front matter.
- Title
- Default value is the same as
.Name
. Can be set in front matter. - Permalink
- The absolute URL to the resource. Resources of type
page
will have no value. - RelPermalink
- The relative URL to the resource. Resources of type
page
will have no value. - Content
- The content of the resource itself. For most resources, this returns a string with the contents of the file. Use this to create inline resources.
{{ with .Resources.GetMatch "script.js" }}
<script>{{ .Content | safeJS }}</script>
{{ end }}
{{ with .Resources.GetMatch "style.css" }}
<style>{{ .Content | safeCSS }}</style>
{{ end }}
{{ with .Resources.GetMatch "img.png" }}
<img src="data:{{ .MediaType }};base64,{{ .Content | base64Encode }}">
{{ end }}
- MediaType
- The MIME type of the resource, such as
image/jpeg
. - MediaType.MainType
- The main type of the resource's MIME type. For example, a file of MIME type
application/pdf
has for MainTypeapplication
. - MediaType.SubType
- The subtype of the resource's MIME type. For example, a file of MIME type
application/pdf
has for SubTypepdf
. Note that this is not the same as the file extension - PowerPoint files have a subtype ofvnd.mspowerpoint
. - MediaType.Suffixes
- A slice of possible suffixes for the resource's MIME type.
Methods
- ByType
- Returns the page resources of the given type.
{{ .Resources.ByType "image" }}
- Match
- Returns all the page resources (as a slice) whose
Name
matches the given Glob pattern (examples). The matching is case-insensitive.
{{ .Resources.Match "images/*" }}
- GetMatch
- Same as
Match
but will return the first match.
Pattern Matching
// Using Match/GetMatch to find this images/sunset.jpg ?
.Resources.Match "images/sun*" ✅
.Resources.Match "**/sunset.jpg" ✅
.Resources.Match "images/*.jpg" ✅
.Resources.Match "**.jpg" ✅
.Resources.Match "*" 🚫
.Resources.Match "sunset.jpg" 🚫
.Resources.Match "*sunset.jpg" 🚫
Page Resources Metadata
The page resources' metadata is managed from the corresponding page's front matter with an array/table parameter named resources
. You can batch assign values using wildcards.
{{% note %}}
Resources of type page
get Title
etc. from their own front matter.
{{% /note %}}
- name
- Sets the value returned in
Name
.
{{% warning %}}
The methods Match
, Get
and GetMatch
use Name
to match the resources.
{{%/ warning %}}
- title
- Sets the value returned in
Title
- params
- A map of custom key/values.
Resources metadata example
{{< code-toggle copy="false">}} title: Application date : 2018-01-25 resources :
- src : "images/sunset.jpg" name : "header"
- src : "documents/photo_specs.pdf" title : "Photo Specifications" params: icon : "photo"
- src : "documents/guide.pdf" title : "Instruction Guide"
- src : "documents/checklist.pdf" title : "Document Checklist"
- src : "documents/payment.docx" title : "Proof of Payment"
- src : "**.pdf" name : "pdf-file-:counter" params : icon : "pdf"
- src : "**.docx" params : icon : "word" {{</ code-toggle >}}
From the example above:
sunset.jpg
will receive a newName
and can now be found with.GetMatch "header"
.documents/photo_specs.pdf
will get thephoto
icon.documents/checklist.pdf
,documents/guide.pdf
anddocuments/payment.docx
will getTitle
as set bytitle
.- Every
PDF
in the bundle exceptdocuments/photo_specs.pdf
will get thepdf
icon. - All
PDF
files will get a newName
. Thename
parameter contains a special placeholder:counter
, so theName
will bepdf-file-1
,pdf-file-2
,pdf-file-3
. - Every docx in the bundle will receive the
word
icon.
{{% warning %}}
The order matters --- Only the first set values of the title
, name
and params
-keys will be used. Consecutive parameters will be set only for the ones not already set. In the above example, .Params.icon
is first set to "photo"
in src = "documents/photo_specs.pdf"
. So that would not get overridden to "pdf"
by the later set src = "**.pdf"
rule.
{{%/ warning %}}
The :counter
placeholder in name
and title
The :counter
is a special placeholder recognized in name
and title
parameters resources
.
The counter starts at 1 the first time they are used in either name
or title
.
For example, if a bundle has the resources photo_specs.pdf
, other_specs.pdf
, guide.pdf
and checklist.pdf
, and the front matter has specified the resources
as:
{{< code-toggle copy="false">}} resources src = "*specs.pdf" title = "Specification #:counter" resources src = "**.pdf" name = "pdf-file-:counter" {{</ code-toggle >}}
the Name
and Title
will be assigned to the resource files as follows:
Resource file | Name |
Title |
---|---|---|
checklist.pdf | "pdf-file-1.pdf |
"checklist.pdf" |
guide.pdf | "pdf-file-2.pdf |
"guide.pdf" |
other_specs.pdf | "pdf-file-3.pdf |
"Specification #1" |
photo_specs.pdf | "pdf-file-4.pdf |
"Specification #2" |