Come archiviare le immagini miniature nella cartella del bundle delle pagine per i siti Hugo con tema Mainroad

Mantenere tutto il contenuto relativo alla pagina in una sola cartella...

Indice

Per molto tempo ho avuto questa fastidiosa necessità di mettere immagini miniature delle pagine nella cartella statica. Questo è per Mainroad, Rodster e temi Hugo simili.

Mi piace organizzare il contenuto delle pagine Hugo come bundle di pagine, e preferirei che tutte le immagini correlate alla pagina fossero archiviate all’interno di questo bundle di pagine.

immagine bundle di pagine

E qui ti presento una soluzione!

Come mantenere le immagini miniature del tema Hugo Mainroad (e simili) all’interno della cartella del bundle di pagine

Basta inserire questo testo nel file ./layouts/partials/post_thumbnail.html, e potrai archiviare l’immagine ovunque all’interno del bundle e della cartella statica :).

{{- if $thumbnail := .page.Params.thumbnail }}
    {{- $class := .class }}
    {{- $visibility := .page.Site.Params.thumbnail.visibility | default (slice "list" "post") }}

    {{- $valueType := printf "%T" $thumbnail -}}
    {{- $isMap := in $valueType "map" -}}
    {{- if $isMap }}
        {{ $visibility = default (slice "list" "post") (default .page.Site.Params.thumbnail.visibility $thumbnail.visibility) }}
        {{ $thumbnail = $thumbnail.src }}
    {{- end }}

    {{- if in $visibility $class }}
    {{- $thumbnailURL := "" }}
    
    {{- /* Prova a trovare l'immagine come risorsa della pagina prima (per le pagine del bundle) */ -}}
    {{- $resource := .page.Resources.GetMatch $thumbnail }}
    {{- if $resource }}
        {{- $thumbnailURL = $resource.RelPermalink }}
    {{- else }}
        {{- /* Rientro alla cartella statica utilizzando relURL */ -}}
        {{- $thumbnailURL = $thumbnail | relURL }}
    {{- end }}
    
    <figure class="{{ with $class }}{{ . }}__thumbnail {{ end }}thumbnail">
        {{ if eq $class "list" }}<a class="thumbnail__link" href="{{ .page.RelPermalink }}">{{ end }}
        <img class="thumbnail__image" src="{{ $thumbnailURL }}" alt="{{ .page.Title }}">
        {{ if eq $class "list" }}</a>{{ end }}
    </figure>
    {{- end }}
{{- end }} 

Come puoi vedere dai commenti, questo bel frammento di template cerca di generare un riferimento all’immagine archiviata nel bundle della pagina, e se l’immagine non viene trovata, si riconnette al valore predefinito, ovvero la cartella statica. Quindi è compatibile con le versioni precedenti!

Buon divertimento!

Felici utilizzatori di Hugo!