mirror of
https://github.com/gohugoio/hugo.git
synced 2025-02-18 06:10:54 +00:00
parent
20cbc2c785
commit
8de5324479
6 changed files with 129 additions and 9 deletions
|
@ -82,6 +82,11 @@ type Twitter struct {
|
||||||
// Vimeo holds the privacy configuration settingsrelated to the Vimeo shortcode.
|
// Vimeo holds the privacy configuration settingsrelated to the Vimeo shortcode.
|
||||||
type Vimeo struct {
|
type Vimeo struct {
|
||||||
Service `mapstructure:",squash"`
|
Service `mapstructure:",squash"`
|
||||||
|
|
||||||
|
// If simple mode is enabled, only a thumbnail is fetched from i.vimeocdn.com and
|
||||||
|
// shown with a play button overlaid. If a user clicks the button, he/she will
|
||||||
|
// be taken to the video page on vimeo.com in a new browser tab.
|
||||||
|
Simple bool
|
||||||
}
|
}
|
||||||
|
|
||||||
// YouTube holds the privacy configuration settingsrelated to the YouTube shortcode.
|
// YouTube holds the privacy configuration settingsrelated to the YouTube shortcode.
|
||||||
|
|
|
@ -46,6 +46,7 @@ disable = true
|
||||||
enableDNT = true
|
enableDNT = true
|
||||||
[privacy.vimeo]
|
[privacy.vimeo]
|
||||||
disable = true
|
disable = true
|
||||||
|
simple = true
|
||||||
[privacy.youtube]
|
[privacy.youtube]
|
||||||
disable = true
|
disable = true
|
||||||
privacyEnhanced = true
|
privacyEnhanced = true
|
||||||
|
@ -69,7 +70,7 @@ simple = true
|
||||||
assert.True(pc.Twitter.Disable)
|
assert.True(pc.Twitter.Disable)
|
||||||
assert.True(pc.Twitter.EnableDNT)
|
assert.True(pc.Twitter.EnableDNT)
|
||||||
assert.True(pc.Vimeo.Disable)
|
assert.True(pc.Vimeo.Disable)
|
||||||
|
assert.True(pc.Vimeo.Simple)
|
||||||
assert.True(pc.YouTube.PrivacyEnhanced)
|
assert.True(pc.YouTube.PrivacyEnhanced)
|
||||||
assert.True(pc.YouTube.Disable)
|
assert.True(pc.YouTube.Disable)
|
||||||
}
|
}
|
||||||
|
|
|
@ -269,6 +269,41 @@ if (!doNotTrack) {
|
||||||
<!-- Output all taxonomies as schema.org keywords -->
|
<!-- Output all taxonomies as schema.org keywords -->
|
||||||
<meta itemprop="keywords" content="{{ if .IsPage}}{{ range $index, $tag := .Params.tags }}{{ $tag }},{{ end }}{{ else }}{{ range $plural, $terms := .Site.Taxonomies }}{{ range $term, $val := $terms }}{{ printf "%s," $term }}{{ end }}{{ end }}{{ end }}" />
|
<meta itemprop="keywords" content="{{ if .IsPage}}{{ range $index, $tag := .Params.tags }}{{ $tag }},{{ end }}{{ else }}{{ range $plural, $terms := .Site.Taxonomies }}{{ range $term, $val := $terms }}{{ printf "%s," $term }}{{ end }}{{ end }}{{ end }}" />
|
||||||
{{ end }}`},
|
{{ end }}`},
|
||||||
|
{`shortcodes/__h_simple_assets.html`, `{{ define "__h_simple_css" }}{{/* These template definitions are global. */}}
|
||||||
|
{{- if not (.Page.Scratch.Get "__h_simple_css") -}}
|
||||||
|
{{/* Only include once */}}
|
||||||
|
{{- .Page.Scratch.Set "__h_simple_css" true -}}
|
||||||
|
<style>
|
||||||
|
.__h_video {
|
||||||
|
position: relative;
|
||||||
|
padding-bottom: 56.23%;
|
||||||
|
height: 0;
|
||||||
|
overflow: hidden;
|
||||||
|
width: 100%;
|
||||||
|
background: #000;
|
||||||
|
}
|
||||||
|
.__h_video img {
|
||||||
|
max-width: 100%;
|
||||||
|
height: auto;
|
||||||
|
color: #000;
|
||||||
|
}
|
||||||
|
.__h_video .play {
|
||||||
|
height: 72px;
|
||||||
|
width: 72px;
|
||||||
|
left: 50%;
|
||||||
|
top: 50%;
|
||||||
|
margin-left: -36px;
|
||||||
|
margin-top: -36px;
|
||||||
|
position: absolute;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- define "__h_simple_icon_play" -}}
|
||||||
|
<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 61 61"><circle cx="30.5" cy="30.5" r="30.5" opacity=".8" fill="#000"></circle><path d="M25.3 19.2c-2.1-1.2-3.8-.2-3.8 2.2v18.1c0 2.4 1.7 3.4 3.8 2.2l16.6-9.1c2.1-1.2 2.1-3.2 0-4.4l-16.6-9z" fill="#fff"></path></svg>
|
||||||
|
{{- end -}}
|
||||||
|
`},
|
||||||
{`shortcodes/figure.html`, `<!-- image -->
|
{`shortcodes/figure.html`, `<!-- image -->
|
||||||
<figure{{ with .Get "class" }} class="{{.}}"{{ end }}>
|
<figure{{ with .Get "class" }} class="{{.}}"{{ end }}>
|
||||||
{{ if .Get "link"}}<a href="{{ .Get "link" }}"{{ with .Get "target" }} target="{{ . }}"{{ end }}{{ with .Get "rel" }} rel="{{ . }}"{{ end }}>{{ end }}
|
{{ if .Get "link"}}<a href="{{ .Get "link" }}"{{ with .Get "target" }} target="{{ . }}"{{ end }}{{ with .Get "rel" }} rel="{{ . }}"{{ end }}>{{ end }}
|
||||||
|
@ -361,14 +396,37 @@ if (!doNotTrack) {
|
||||||
{{- end -}}`},
|
{{- end -}}`},
|
||||||
{`shortcodes/vimeo.html`, `{{- $pc := .Page.Site.Config.Privacy.Vimeo -}}
|
{`shortcodes/vimeo.html`, `{{- $pc := .Page.Site.Config.Privacy.Vimeo -}}
|
||||||
{{- if not $pc.Disable -}}
|
{{- if not $pc.Disable -}}
|
||||||
{{ if .IsNamedParams }}<div {{ if .Get "class" }}class="{{ .Get "class" }}"{{ else }}style="position: relative; padding-bottom: 56.25%; padding-top: 30px; height: 0; overflow: hidden;"{{ end }}>
|
{{- if $pc.Simple -}}
|
||||||
<iframe src="//player.vimeo.com/video/{{ .Get "id" }}" {{ if not (.Get "class") }}style="position: absolute; top: 0; left: 0; width: 100%; height: 100%;" {{ end }}webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>
|
{{ template "_internal/shortcodes/vimeo_simple.html" . }}
|
||||||
|
{{- else -}}
|
||||||
|
{{ if .IsNamedParams }}<div {{ if .Get "class" }}class="{{ .Get "class" }}"{{ else }}style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"{{ end }}>
|
||||||
|
<iframe src="//player.vimeo.com/video/{{ .Get "id" }}" {{ if not (.Get "class") }}style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" {{ end }}webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>
|
||||||
</div>{{ else }}
|
</div>{{ else }}
|
||||||
<div {{ if len .Params | eq 2 }}class="{{ .Get 1 }}"{{ else }}style="position: relative; padding-bottom: 56.25%; padding-top: 30px; height: 0; overflow: hidden;"{{ end }}>
|
<div {{ if len .Params | eq 2 }}class="{{ .Get 1 }}"{{ else }}style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"{{ end }}>
|
||||||
<iframe src="//player.vimeo.com/video/{{ .Get 0 }}" {{ if len .Params | eq 1 }}style="position: absolute; top: 0; left: 0; width: 100%; height: 100%;" {{ end }}webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>
|
<iframe src="//player.vimeo.com/video/{{ .Get 0 }}" {{ if len .Params | eq 1 }}style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" {{ end }}webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>
|
||||||
</div>
|
</div>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
{{- end -}}
|
||||||
{{- end -}}`},
|
{{- end -}}`},
|
||||||
|
{`shortcodes/vimeo_simple.html`, `{{ $id := .Get "id" | default (.Get 0) }}
|
||||||
|
{{- $item := getJSON "https://vimeo.com/api/oembed.json?url=https://vimeo.com/" $id -}}
|
||||||
|
{{ $class := .Get "class" | default (.Get 1) }}
|
||||||
|
{{ $hasClass := $class }}
|
||||||
|
{{ $class := $class | default "__h_video" }}
|
||||||
|
{{ if not $hasClass }}
|
||||||
|
{{/* If class is set, assume the user wants to provide his own styles. */}}
|
||||||
|
{{ template "__h_simple_css" $ }}
|
||||||
|
{{ end }}
|
||||||
|
{{ $secondClass := "s_video_simple" }}
|
||||||
|
<div class="{{ $secondClass }} {{ $class }}">
|
||||||
|
{{- with $item }}
|
||||||
|
<a href="{{ .provider_url }}{{ .video_id | safeHTMLAttr }}" target="_blank">
|
||||||
|
{{ $thumb := .thumbnail_url }}
|
||||||
|
{{ $original := $thumb | replaceRE "(_.*\\.)" "." }}
|
||||||
|
<img src="{{ $thumb }}" srcset="{{ $thumb }} 1x, {{ $original }} 2x" alt="{{ .title }}">
|
||||||
|
<div class="play">{{ template "__h_simple_icon_play" $ }}</div></a></div>
|
||||||
|
{{- end -}}
|
||||||
|
`},
|
||||||
{`shortcodes/youtube.html`, `{{- $pc := .Page.Site.Config.Privacy.YouTube -}}
|
{`shortcodes/youtube.html`, `{{- $pc := .Page.Site.Config.Privacy.YouTube -}}
|
||||||
{{- if not $pc.Disable -}}
|
{{- if not $pc.Disable -}}
|
||||||
{{- $ytHost := cond $pc.PrivacyEnhanced "www.youtube-nocookie.com" "www.youtube.com" -}}
|
{{- $ytHost := cond $pc.PrivacyEnhanced "www.youtube-nocookie.com" "www.youtube.com" -}}
|
||||||
|
|
|
@ -0,0 +1,34 @@
|
||||||
|
{{ define "__h_simple_css" }}{{/* These template definitions are global. */}}
|
||||||
|
{{- if not (.Page.Scratch.Get "__h_simple_css") -}}
|
||||||
|
{{/* Only include once */}}
|
||||||
|
{{- .Page.Scratch.Set "__h_simple_css" true -}}
|
||||||
|
<style>
|
||||||
|
.__h_video {
|
||||||
|
position: relative;
|
||||||
|
padding-bottom: 56.23%;
|
||||||
|
height: 0;
|
||||||
|
overflow: hidden;
|
||||||
|
width: 100%;
|
||||||
|
background: #000;
|
||||||
|
}
|
||||||
|
.__h_video img {
|
||||||
|
max-width: 100%;
|
||||||
|
height: auto;
|
||||||
|
color: #000;
|
||||||
|
}
|
||||||
|
.__h_video .play {
|
||||||
|
height: 72px;
|
||||||
|
width: 72px;
|
||||||
|
left: 50%;
|
||||||
|
top: 50%;
|
||||||
|
margin-left: -36px;
|
||||||
|
margin-top: -36px;
|
||||||
|
position: absolute;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- define "__h_simple_icon_play" -}}
|
||||||
|
<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 61 61"><circle cx="30.5" cy="30.5" r="30.5" opacity=".8" fill="#000"></circle><path d="M25.3 19.2c-2.1-1.2-3.8-.2-3.8 2.2v18.1c0 2.4 1.7 3.4 3.8 2.2l16.6-9.1c2.1-1.2 2.1-3.2 0-4.4l-16.6-9z" fill="#fff"></path></svg>
|
||||||
|
{{- end -}}
|
|
@ -1,10 +1,14 @@
|
||||||
{{- $pc := .Page.Site.Config.Privacy.Vimeo -}}
|
{{- $pc := .Page.Site.Config.Privacy.Vimeo -}}
|
||||||
{{- if not $pc.Disable -}}
|
{{- if not $pc.Disable -}}
|
||||||
{{ if .IsNamedParams }}<div {{ if .Get "class" }}class="{{ .Get "class" }}"{{ else }}style="position: relative; padding-bottom: 56.25%; padding-top: 30px; height: 0; overflow: hidden;"{{ end }}>
|
{{- if $pc.Simple -}}
|
||||||
<iframe src="//player.vimeo.com/video/{{ .Get "id" }}" {{ if not (.Get "class") }}style="position: absolute; top: 0; left: 0; width: 100%; height: 100%;" {{ end }}webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>
|
{{ template "_internal/shortcodes/vimeo_simple.html" . }}
|
||||||
|
{{- else -}}
|
||||||
|
{{ if .IsNamedParams }}<div {{ if .Get "class" }}class="{{ .Get "class" }}"{{ else }}style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"{{ end }}>
|
||||||
|
<iframe src="//player.vimeo.com/video/{{ .Get "id" }}" {{ if not (.Get "class") }}style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" {{ end }}webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>
|
||||||
</div>{{ else }}
|
</div>{{ else }}
|
||||||
<div {{ if len .Params | eq 2 }}class="{{ .Get 1 }}"{{ else }}style="position: relative; padding-bottom: 56.25%; padding-top: 30px; height: 0; overflow: hidden;"{{ end }}>
|
<div {{ if len .Params | eq 2 }}class="{{ .Get 1 }}"{{ else }}style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"{{ end }}>
|
||||||
<iframe src="//player.vimeo.com/video/{{ .Get 0 }}" {{ if len .Params | eq 1 }}style="position: absolute; top: 0; left: 0; width: 100%; height: 100%;" {{ end }}webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>
|
<iframe src="//player.vimeo.com/video/{{ .Get 0 }}" {{ if len .Params | eq 1 }}style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" {{ end }}webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>
|
||||||
</div>
|
</div>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
{{- end -}}
|
||||||
{{- end -}}
|
{{- end -}}
|
18
tpl/tplimpl/embedded/templates/shortcodes/vimeo_simple.html
Normal file
18
tpl/tplimpl/embedded/templates/shortcodes/vimeo_simple.html
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
{{ $id := .Get "id" | default (.Get 0) }}
|
||||||
|
{{- $item := getJSON "https://vimeo.com/api/oembed.json?url=https://vimeo.com/" $id -}}
|
||||||
|
{{ $class := .Get "class" | default (.Get 1) }}
|
||||||
|
{{ $hasClass := $class }}
|
||||||
|
{{ $class := $class | default "__h_video" }}
|
||||||
|
{{ if not $hasClass }}
|
||||||
|
{{/* If class is set, assume the user wants to provide his own styles. */}}
|
||||||
|
{{ template "__h_simple_css" $ }}
|
||||||
|
{{ end }}
|
||||||
|
{{ $secondClass := "s_video_simple" }}
|
||||||
|
<div class="{{ $secondClass }} {{ $class }}">
|
||||||
|
{{- with $item }}
|
||||||
|
<a href="{{ .provider_url }}{{ .video_id | safeHTMLAttr }}" target="_blank">
|
||||||
|
{{ $thumb := .thumbnail_url }}
|
||||||
|
{{ $original := $thumb | replaceRE "(_.*\\.)" "." }}
|
||||||
|
<img src="{{ $thumb }}" srcset="{{ $thumb }} 1x, {{ $original }} 2x" alt="{{ .title }}">
|
||||||
|
<div class="play">{{ template "__h_simple_icon_play" $ }}</div></a></div>
|
||||||
|
{{- end -}}
|
Loading…
Reference in a new issue