diff --git a/config/_default/params.yaml b/config/_default/params.yaml index 212e6ea9..40b5985c 100644 --- a/config/_default/params.yaml +++ b/config/_default/params.yaml @@ -76,3 +76,18 @@ bridgy: dateFormatAtomFeed: "2006-01-02T15:04:05-07:00" dateFormatTag: "2006" feedUUID: "43c22089-5c06-4cc4-8fd2-5b3563d5d257" + +shareButtons: + size: small + networks: + - facebook + - twitter + - tumblr + - email + - linkedin + - reddit + - xing + - whatsapp + - hackernews + - vk + - telegram diff --git a/layouts/_default/single.html b/layouts/_default/single.html index c466c6a8..0ea9e87a 100644 --- a/layouts/_default/single.html +++ b/layouts/_default/single.html @@ -49,6 +49,7 @@ {{ partial "series.html" . }} + {{ partial "share-buttons" . }} {{- partial "syndication.html" . -}} {{- partial "comments.html" . -}} diff --git a/layouts/partials/share-buttons.html b/layouts/partials/share-buttons.html new file mode 100644 index 00000000..c81bfb4c --- /dev/null +++ b/layouts/partials/share-buttons.html @@ -0,0 +1,572 @@ +{{/* Made using https://sharingbuttons.io/ */}} +{{ if not .Params.disableShare }} + +{{ if (not (isset .Site.Params.ShareButtons "size")) }} +{{ errorf "'size' should be specified inside shareButtons in hugo config file" }} +{{ end }} + +{{ $possibleSizes := (slice "small" "medium" "large") }} +{{ if not (in $possibleSizes .Site.Params.ShareButtons.Size) }} +{{ errorf "'size' is %q but should be set to one of possible sizes: %q " .Site.Params.ShareButtons.Size (delimit $possibleSizes ", ") }} +{{ end }} + +{{ $supportedNetworks := (slice "facebook" "twitter" "tumblr" "email" "pinterest" "linkedin" "reddit" "xing" "whatsapp" "hackernews" "vk" "telegram")}} + +{{ if (not (isset .Site.Params.ShareButtons "networks")) }} +{{ errorf "'networks' list is not specified inside shareButtons in hugo config file, supported: %q " (delimit $supportedNetworks ", ") }} +{{ end }} + +{{ range $network := .Site.Params.ShareButtons.Networks }} +{{ if not (in $supportedNetworks $network) }} +{{ errorf "%q is not a supported network, please only provide one of supported: %q " $network (delimit $supportedNetworks ", ") }} +{{ end }} +{{ end }} + +{{ $linkPrefix := "" }} +{{ if eq .Site.Params.ShareButtons.Size "large" }} +{{ $linkPrefix = "Share on " }} +{{ end }} + +{{ $icon := "normal" }} +{{ if (isset .Site.Params.ShareButtons "icon" ) }} +{{ $icon = .Site.Params.ShareButtons.Icon }} +{{ end }} + +{{ $pageURL := .Permalink | safeURL }} {{/*urlquery is undocumented, but maybe should be used here instead*/}} +{{ $pageTitle := .Title | safeHTML }} + +{{ $buttonMargin := "0.5em" }} +{{ if (isset .Site.Params.ShareButtons "buttonmargin" ) }} +{{ $buttonMargin = .Site.Params.ShareButtons.ButtonMargin }} +{{ end }} + + + +{{ if in .Site.Params.ShareButtons.Networks "facebook" }} + + +
{{$linkPrefix}}{{if ne .Site.Params.ShareButtons.Size "small"}}Facebook{{end}} +
+
+{{ end }} + +{{ if in .Site.Params.ShareButtons.Networks "twitter" }} + + +
{{$linkPrefix}}{{if ne .Site.Params.ShareButtons.Size "small"}}Twitter{{end}} +
+
+{{ end }} + +{{ if in .Site.Params.ShareButtons.Networks "tumblr" }} + + +
{{$linkPrefix}}{{if ne .Site.Params.ShareButtons.Size "small"}}Tumblr{{end}} +
+
+{{ end }} + +{{ if in .Site.Params.ShareButtons.Networks "email" }} + + +
{{if eq .Site.Params.ShareButtons.Size "large"}}Share by {{end}}{{if ne .Site.Params.ShareButtons.Size "small"}}E-Mail{{end}} +
+
+{{ end }} + +{{ if in .Site.Params.ShareButtons.Networks "pinterest" }} + + +
{{$linkPrefix}}{{if ne .Site.Params.ShareButtons.Size "small"}}Pinterest{{end}} +
+
+{{ end }} + +{{ if in .Site.Params.ShareButtons.Networks "linkedin" }} + + +
{{$linkPrefix}}{{if ne .Site.Params.ShareButtons.Size "small"}}LinkedIn{{end}} +
+
+{{ end }} + +{{ if in .Site.Params.ShareButtons.Networks "reddit" }} + + +
{{$linkPrefix}}{{if ne .Site.Params.ShareButtons.Size "small"}}Reddit{{end}} +
+
+{{ end }} + +{{ if in .Site.Params.ShareButtons.Networks "xing" }} + + +
{{$linkPrefix}}{{if ne .Site.Params.ShareButtons.Size "small"}}XING{{end}} +
+
+{{ end }} + +{{ if in .Site.Params.ShareButtons.Networks "whatsapp" }} + + +
{{$linkPrefix}}{{if ne .Site.Params.ShareButtons.Size "small"}}WhatsApp{{end}} +
+
+{{ end }} + +{{ if in .Site.Params.ShareButtons.Networks "hackernews" }} + + +
{{$linkPrefix}}{{if ne .Site.Params.ShareButtons.Size "small"}}Hacker News{{end}} +
+
+{{ end }} + +{{ if in .Site.Params.ShareButtons.Networks "vk" }} + + +
{{$linkPrefix}}{{if ne .Site.Params.ShareButtons.Size "small"}}VK{{end}} +
+
+{{ end }} + +{{ if in .Site.Params.ShareButtons.Networks "telegram" }} + + +
{{$linkPrefix}}{{if ne .Site.Params.ShareButtons.Size "small"}}Telegram{{end}} +
+
+{{ end }} + +{{ end }}