Hugo Version:
Hugo Static Site Generator v0.74.3-DA0437B4/extended darwin/amd64 BuildDate: 2020-07-23T16:28:32Z
Hello,
I’m trying to display an image with accompanying EXIF data as a shortcode.
Using this guide as a reference, (actually, straight copy-pasted), I still cannot get it to work properly.
execute of template failed: template: shortcodes/exif.html:6:29: executing "shortcodes/exif.html" at <$originalImage.RelPermalink>: nil pointer evaluating resource.Resource.RelPermalink
Here’s the full shortcode:
{{- $imageName := .Get "src" -}}
{{- $originalImage := (.Page.Resources.ByType "image").GetMatch (printf "**%s**" (.Get "src")) -}}
{{- $noExif := .Get "noExif" -}}
<p>
<a href="{{$originalImage.RelPermalink}}">
<img src="{{$originalImage.RelPermalink}}" alt="{{ .Get "alt" }}"/>
</a>
{{ if (and $originalImage.Exif (ne $noExif "true")) }}
<div class="exifTags">
Taken
{{ with $originalImage.Exif }}
{{ if and .Tags.GPSLatitude .Tags.GPSLongitude }}
{{ $latSign := 1 }}
{{ if eq .Tags.LatRef "S" }}
{{ $latSign = -1 }}
{{ end }}
{{ $lonSign := 1 }}
{{ if eq .Tags.LonRef "W" }}
{{ $lonSign = -1 }}
{{ end }}
{{ $lat := mul $latSign (add (index .Tags.GPSLatitude 0) (add (div (index .Tags.GPSLatitude 1) 60) (div (index .Tags.GPSLatitude 2) 3600))) }}
{{ $lon := mul $lonSign (add (index .Tags.GPSLongitude 0) (add (div (index .Tags.GPSLongitude 1) 60) (div (index .Tags.GPSLongitude 2) 3600))) }}
<div class="exifElement">
<a href="http://www.openstreetmap.org/?mlat={{ $lat }}&mlon={{ $lon }}&zoom=16&layers=M">
<i class="fa fa-map-marked"></i>
here
</a>
</div>
{{ end }}
{{ if .Tags.Make }}
with a(n)
<div class="exifElement">
<i class="fa fa-tag"></i>
{{ .Tags.Make }}
</div>
{{ end }}
{{ if .Tags.Model }}
<div class="exifElement">
<i class="fa fa-camera"></i>
{{ .Tags.Model }}
</div>
{{ end }}
{{ if .Tags.FocalLength }}
using a focal length of
<div class="exifElement">
<i class="fa fa-expand-alt"></i>
{{ .Tags.FocalLength }} mm
</div>
{{ end }}
{{ if (or .Tags.ExposureTime .Tags.FNumber .Tags.ISOSpeedRatings) }}
at
{{ end }}
{{ if .Tags.ExposureTime }}
<div class="exifElement">
<i class="fa fa-clock"></i>
{{ .Tags.ExposureTime }}
</div>
{{ end }}
{{ if .Tags.FNumber }}
<div class="exifElement">
<i class="fa fa-bullseye"></i>
f/{{ .Tags.FNumber }}
</div>
{{ end }}
{{ if .Tags.ISOSpeedRatings }}
<div class="exifElement">
ISO{{ .Tags.ISOSpeedRatings }}
</div>
{{ end }}
{{ end }}
</div>
{{ end }}
</p>
And here’s how I’m calling it:
{{< exif src="photos/monkey.jpeg" alt="" >}}
I have my desired monkey photo located at “assets/photos/monkey.jpeg”
Any thoughts?