fb551cc75 Update index.md 7af894857 Update index.md d235753ea Hugo 0.82.1 e03e72deb Merge branch 'temp0821' e62648961 Merge branch 'release-0.82.1' e1ab0f6eb releaser: Add release notes to /docs for release of 0.82.1 5d354c38d Replaced ``` code blocks with Code Toggler c9d065c20 Remove duplicate YAML keys (#1420) 8ae31e701 Add webp image encoding support 848f2af26 Update internal.md (#1407) c103a86a4 Fix `ref` shortcode example output (#1409) 9f8ba56dc Remove leading dot from where function KEY (#1419) 363251a51 Improve presentation of template lookup order (#1382) b73da986d Improve description of Page Resources (#1381) 4e0bb96d5 Rework robots.txt page (#1405) edf893e6f Update migrations.md (#1412) 450f1580b Add link to `site` function doc (#1417) cfffa6e6f Added one extension to the list (#1414) 05f1665a0 Update theme 5de0b1c6a Update theme 250e20552 Add hugo.IsExtended dea5e1fd7 Fix typo on merge function page (#1408) 1bbed2cf3 Update configuration.md be0b64a46 Omit ISO cbb5b8367 Fix `dateFormat` documentation 698f15466 Regenerate the docshelper f9a8a7cb6 Update multilingual.md a22dc6267 Fix grammar (#1398) eb98b0997 Fix pretty URL example (#1397) f4c4153dc Mention date var complementation in post scheduling (#1396) 17fae284c Fix resources.ExecuteAsTemplate argument order (#1394) 97e2c2abb Use code-toggle shortcode in `multilingual.md` (#1388) 3a84929bb Harmonize capitalization (#1393) 17f15daa6 fix file naming used in example (#1392) 5d97b6a18 Add slice syntax to sections permalinks config 00665b97b Improve description of `site.md` edcf5e3fc Fix example in `merge.md` f275ab778 Update postprocess.md 9593e3991 Fix file name 59bd9656f Update postprocess.md 1172fb6d0 Update to theNewDynamic repository (#1263) f5b5c1d2c Update Hugo container image 4f2e92f2a Adapt anchorize.md to Goldmark 98aa19073 Directly link to `highlight` shortcode (#1384) 4c75c2422 Fix header level f15c06f23 markdownify: add note about render-hooks and .RenderString (#1281) 69c82eb68 Remove Blackfriday reference from shortcode desc (#1380) 36de478df Update description of ignoreFiles config setting (#1377) 6337699d8 Remove "Authors" page from documentation (#1371) 35e73ca90 fix indent in example (#1372) d3f01f19a Remove opening body tag from header example (#1376) 341a5a7d8 Update index.md c9bfdbee6 Release 0.82.0 119644949 releaser: Add release notes to /docs for release of 0.82.0 32efaed78 docs: Regenerate docs helper dea5449a2 docs: Regen CLI docs eeab18fce Merge commit '81689af79901f0cdaff765cda6322dd4a9a7ccb3' d508a1259 Attributes for code fences should be placed after the lang indicator only c80905cef deps: Update to esbuild v0.9.0 95350eb79 Add support for Google Analytics v4 02d36f9bc Allow markdown attribute lists to be used in title render hooks 7df220a64 Merge commit '9d31f650da964a52f05fc27b7fb99cf3e09778cf' d80bf61b7 Fixes #7698. git-subtree-dir: docs git-subtree-split: fb551cc750faa83a1493b0e0d0898cd98ab74465
6.9 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. This can be used to inline some resources, such as
<script>{{ (.Resources.GetMatch "myscript.js").Content | safeJS }}</script>
or<img src="{{ (.Resources.GetMatch "mylogo.png").Content | base64Encode }}">
. - 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
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" |