ページリソース
ページリソース (画像、他のページ、ドキュメントなど) は、ページ相対 URL と独自のメタデータを持ちます。
On this page
ページリソースは ページバンドル
からしかアクセスできません。
index.md または _index.md ファイルをルートに持つディレクトリからしかアクセスできません。ページリソースは、それがバンドルされているページでのみ利用可能です。
この例では、first-post は音声、データ、ドキュメント、画像、動画を含む 10 のページリソースにアクセスするページバンドルです。
second-post もページバンドルですが、ページリソースを持たず、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)
プロパティ
- ResourceType
- リソースの メディアタイプ
のメインタイプです。 たとえば、MIME タイプ
image/jpegのファイルはResourceTypeがimageとなります。PageはResourceTypeにpageという値を持ちます。 - Name
- デフォルト値は、ファイル名 (所有ページからの相対パス) です。フロントマターで設定できます。
- Title
- デフォルト値は
.Nameと同じです。 フロントマターで設定できます。 - Permalink
- リソースへの絶対 URL です。
page型のリソースは値を持ちません。 - RelPermalink
- リソースへの相対 URL です。
page型のリソースは値を持ちません。 - Content
- リソース自体のコンテンツです。 ほとんどのリソースでは、これはファイルの内容を含む文字列を返します。 これを使用してインライン リソースを作成します。
{{ 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.Type }};base64,{{ .Content | base64Encode }}">
{{ end }}
- MediaType.Type
- リソースのメディアタイプ (以前は MIME タイプとして知られていた) です (たとえば、
image/jpeg)。 - MediaType.MainType
- リソースの MIME タイプのメインタイプです (たとえば、
image) - MediaType.SubType
- リソースのタイプのサブタイプです (たとえば、
jpeg)。 これは、ファイルサフィックスに対応する場合とそうでない場合があります。 - MediaType.Suffixes
- リソースのメディアタイプに対応するファイルサフィックスのスライスです (たとえば、
[jpg jpeg jpe jif jfif])。
メソッド
- ByType
- 指定されたタイプのページリソースを返します。
{{ .Resources.ByType "image" }}
- Match
- 指定された glob パターン (例
) に一致する
Nameを持つすべてのページリソースを (スライスとして) 返します。 マッチングは大文字と小文字を区別しません。
{{ .Resources.Match "images/*" }}
- GetMatch
Matchと同じですが、最初にマッチしたものを返します。
パターンマッチング
// Match/GetMatch を使って、この 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" 🚫
ページリソースのメタデータ
ページリソースのメタデータは、対応するページのフロントマターから resources という名前の配列/テーブル パラメータで管理されます。 ワイルドカード
を使って、値をバッチで割り当てることができます。
- name
Nameで返される値を設定します。
- title
Titleで返される値を設定します。- params
- カスタム キー/値のマップ。
リソース メタデータの例
上記の例から
sunset.jpgは新しいNameを受け取り、.GetMatch "header"で見つけることができるようになりました。documents/photo_specs.pdfはphotoアイコンを取得します。documents/checklist.pdf、documents/guide.pdf、documents/payment.docxは、titleで設定されたTitleを取得します。documents/photo_specs.pdf以外のバンドル内のすべてのPDFは、pdfアイコンが表示されます。- すべての
PDFファイルに、新しいNameが付けられます。nameパラメータは特別なプレースホルダ:counterを含んでいるので、Nameはpdf-file-1、pdf-file-2、pdf-file-3のようになります。 - バンドル内のすべての docx は、
wordアイコンが表示されます。
name と title の :counter プレースホルダー
:counter は name と title パラメータの resources で認識される特別なプレースホルダーです。
カウンターは、name または title で最初に使用されたときに 1 から始まります。
たとえば、バンドルに photo_specs.pdf、other_specs.pdf、guide.pdf、checklist.pdf というリソースがあり、フロントマターに resources を指定した場合、以下のようになります。
Name と Title は、以下のようにリソースファイルに割り当てられます。
| リソースファイル | 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" |