ananke/layouts/partials/social/share.html
Melroy van den Berg 473c7c14c6
theme(fix): remove caching of share links (#757)
You can't just cache the share links, that will result into every blog
post having the same URL.

Just use `partial` on the getShareLink.html. So now each post will show
the correct URL to share the post via social media or alike.

---------

Signed-off-by: Melroy van den Berg <melroy@melroy.org>
Signed-off-by: Patrick Kollitsch <83281+davidsneighbour@users.noreply.github.com>
Co-authored-by: Patrick Kollitsch <83281+davidsneighbour@users.noreply.github.com>
2024-10-24 16:58:58 +07:00

63 lines
2.5 KiB
HTML

{{- $context := . -}}
{{- $disabled := $context.Params.disable_share | default "false" -}}
{{- $config := site.Params.ananke.social -}}
{{- with $config.share.disable_share -}}
{{- $disabled := . -}}
{{- end -}}
{{- if eq "false" $disabled -}}
{{- $title := $context.Title -}}
{{- $url := printf "%s" $context.Permalink | absLangURL -}}
{{- $config := site.Params.ananke.social -}}
{{- $networks := $config.share.networks -}}
{{- $hasLabel := $config.share.sharetext | default "true" -}}
{{- $hasIcon := $config.share.icons | default "true" -}}
{{- $setups := (collections.Where $config.networks "slug" "in" $networks) -}}
{{/* This here is an ugly workaround for GoHugo's missing sortByArray feature.
Let's cache it so it does not take away too much time.
PS: It's also a couple of years old, so maybe there is a better solution by now. */}}
{{- $setups = partials.IncludeCached "func/social/sortNetworks.html" (dict "networks" $networks "setups" $setups) "social-share" -}}
<div id="sharing" class="mt3 ananke-socials">
{{- range $setups -}}
{{- $setup := . -}}
{{/* @todo i18n $sharetext := lang.Translate (fmt.Printf "share_on_%s" $setup.slug) */}}
{{- $label := "" -}}
{{ with $config.share.sharetext -}}
{{- $label = printf "Share on %s" $setup.label -}}
{{- end -}}
{{ if eq .share "false" | default "true" -}}
{{- continue -}}
{{/* @todo notification into CLI that a network is configured but not supported */}}
{{- end -}}
{{- $options := (dict "context" page "setup" $setup) }}
{{- $href := partial "func/social/getShareLink.html" $options -}}
<a href="{{ $href }}"
class="ananke-social-link {{ $setup.slug }} no-underline"
title="{{ $label }}" aria-label="{{ $label }}"
target="_blank" rel="nofollow noopener noreferrer">
{{ with $config.share.icons -}}
{{/* @todo add the following lines to a partial, reused in social/follow.html */}}
{{- with $setup.icon -}}
{{- $icon := resources.Get (printf "ananke/socials/%s.svg" .) -}}
{{- with $icon -}}
<span class="icon">
{{ .Content | safeHTML }}
{{/* @todo indicator for missing or misconfigured icon */}}
</span>
{{- end -}}
{{- else -}}
{{- $label -}}
{{- end -}}
{{- else -}}
{{- $label -}}
{{- end -}}
</a>
{{- end -}}
</div>
{{- end -}} {{/* if eq "true" $disabled */}}