slow-steps 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/README.md +215 -0
- data/_config.yml +55 -0
- data/_includes/.DS_Store +0 -0
- data/_includes/branding/site-logo.svg +51 -0
- data/_includes/env_filter.html +10 -0
- data/_includes/errors/robot-403.svg +26 -0
- data/_includes/errors/robot-404.svg +28 -0
- data/_includes/errors/robot-405.svg +27 -0
- data/_includes/footer/footer.html +22 -0
- data/_includes/footer/footer_full.html +43 -0
- data/_includes/forms/mc-register.html +157 -0
- data/_includes/head/.DS_Store +0 -0
- data/_includes/head/README.md +31 -0
- data/_includes/head/descriptors/og-meta.html +74 -0
- data/_includes/head/descriptors/structured-data.html +124 -0
- data/_includes/head/descriptors/twitter-meta.html +17 -0
- data/_includes/head/env/conditional.html +2 -0
- data/_includes/head/head.html +78 -0
- data/_includes/image.html +10 -0
- data/_includes/link.html +1 -0
- data/_includes/navigation/global.html +48 -0
- data/_includes/scripts.html +21 -0
- data/_layouts/about.html +143 -0
- data/_layouts/compress.html +11 -0
- data/_layouts/default.html +19 -0
- data/_layouts/env/clinician.html +48 -0
- data/_layouts/env/landing.html +68 -0
- data/_layouts/env/pwp.html +83 -0
- data/_layouts/error-page.html +10 -0
- data/_layouts/feed.html +39 -0
- data/_layouts/post.html +26 -0
- data/_layouts/register.html +10 -0
- data/_sass/about.sass +178 -0
- data/_sass/aos-overrides.sass +5 -0
- data/_sass/breakpoints/about.sass +78 -0
- data/_sass/colors/_variables.sass +43 -0
- data/_sass/colors/breakpoints/768.sass +20 -0
- data/_sass/colors/burger.sass +22 -0
- data/_sass/colors/env/_clinician.sass +16 -0
- data/_sass/colors/env/_pwp.sass +16 -0
- data/_sass/colors/navigation.sass +13 -0
- data/_sass/env/breakpoints/768.sass +79 -0
- data/_sass/env/clinician.sass +150 -0
- data/_sass/env/landing.sass +180 -0
- data/_sass/env/pwp.sass +181 -0
- data/_sass/error-page.sass +109 -0
- data/_sass/feed.sass +58 -0
- data/_sass/footer.sass +23 -0
- data/_sass/footer_full.sass +82 -0
- data/_sass/forms/mc-forms.sass +193 -0
- data/_sass/global.sass +55 -0
- data/_sass/navigation/_variables.sass +30 -0
- data/_sass/navigation/breakpoints/768.sass +84 -0
- data/_sass/navigation/burger.sass +38 -0
- data/_sass/navigation/env/clinician.sass +45 -0
- data/_sass/navigation/env/landing.sass +19 -0
- data/_sass/navigation/env/pwp.sass +46 -0
- data/_sass/navigation/global.sass +69 -0
- data/_sass/post.sass +69 -0
- data/_sass/typography/_variables.sass +21 -0
- data/_sass/typography/branding.sass +1 -0
- data/_sass/typography/resets.sass +40 -0
- data/assets/css/env/gaitq_clinician.sass +30 -0
- data/assets/css/env/gaitq_landing.sass +13 -0
- data/assets/css/env/gaitq_pwp.sass +30 -0
- data/assets/css/gaitq_errors.sass +8 -0
- data/assets/css/gaitq_feed.sass +12 -0
- data/assets/css/gaitq_global.sass +30 -0
- data/assets/css/gaitq_post.sass +12 -0
- data/assets/css/img_handler.sass +5 -0
- data/assets/fonts/.DS_Store +0 -0
- data/assets/fonts/Quicksand/OFL.txt +93 -0
- data/assets/fonts/Quicksand/Quicksand-VariableFont_wght.ttf +0 -0
- data/assets/fonts/Quicksand/README.txt +67 -0
- data/assets/fonts/Quicksand/static/Quicksand-Bold.ttf +0 -0
- data/assets/fonts/Quicksand/static/Quicksand-Light.ttf +0 -0
- data/assets/fonts/Quicksand/static/Quicksand-Medium.ttf +0 -0
- data/assets/fonts/Quicksand/static/Quicksand-Regular.ttf +0 -0
- data/assets/fonts/Quicksand/static/Quicksand-SemiBold.ttf +0 -0
- data/assets/fonts/fontawesome-free-5.11.2-web/.DS_Store +0 -0
- data/assets/fonts/fontawesome-free-5.11.2-web/css/.DS_Store +0 -0
- data/assets/fonts/fontawesome-free-5.11.2-web/css/all.min.css +5856 -0
- data/assets/fonts/fontawesome-free-5.11.2-web/webfonts/fa-brands-400.eot +0 -0
- data/assets/fonts/fontawesome-free-5.11.2-web/webfonts/fa-brands-400.svg +3496 -0
- data/assets/fonts/fontawesome-free-5.11.2-web/webfonts/fa-brands-400.ttf +0 -0
- data/assets/fonts/fontawesome-free-5.11.2-web/webfonts/fa-brands-400.woff +0 -0
- data/assets/fonts/fontawesome-free-5.11.2-web/webfonts/fa-brands-400.woff2 +0 -0
- data/assets/fonts/fontawesome-free-5.11.2-web/webfonts/fa-regular-400.eot +0 -0
- data/assets/fonts/fontawesome-free-5.11.2-web/webfonts/fa-regular-400.svg +803 -0
- data/assets/fonts/fontawesome-free-5.11.2-web/webfonts/fa-regular-400.ttf +0 -0
- data/assets/fonts/fontawesome-free-5.11.2-web/webfonts/fa-regular-400.woff +0 -0
- data/assets/fonts/fontawesome-free-5.11.2-web/webfonts/fa-regular-400.woff2 +0 -0
- data/assets/fonts/fontawesome-free-5.11.2-web/webfonts/fa-solid-900.eot +0 -0
- data/assets/fonts/fontawesome-free-5.11.2-web/webfonts/fa-solid-900.svg +4667 -0
- data/assets/fonts/fontawesome-free-5.11.2-web/webfonts/fa-solid-900.ttf +0 -0
- data/assets/fonts/fontawesome-free-5.11.2-web/webfonts/fa-solid-900.woff +0 -0
- data/assets/fonts/fontawesome-free-5.11.2-web/webfonts/fa-solid-900.woff2 +0 -0
- data/assets/js/animate_after_load.js +1 -0
- data/assets/js/calc-mobile-viewport.js +6 -0
- data/assets/js/mobile-nav-slider.js +24 -0
- data/assets/vendor/aos/aos.css +1 -0
- data/assets/vendor/aos/aos.js +546 -0
- metadata +306 -0
@@ -0,0 +1,43 @@
|
|
1
|
+
<!-- footer -->
|
2
|
+
<footer class="ft-wrapper">
|
3
|
+
|
4
|
+
<div class="ft__head">
|
5
|
+
<a href="{{ site.baseurl }}/">
|
6
|
+
{% include /branding/site-logo.svg %}</a>
|
7
|
+
</div>
|
8
|
+
<div class="ft__body">
|
9
|
+
|
10
|
+
<section class="ft__sitemap">
|
11
|
+
<div class="ft__sitemap--menu">
|
12
|
+
{% for item in site.data.menu.navigation %}
|
13
|
+
<h2 class="ft__sitemap--header">{{ item.name }}</h2>
|
14
|
+
<ul class="ft__sitemap--submenu">
|
15
|
+
{% for sub in item.submenu %}
|
16
|
+
<li><a href="{{ sub.url }}">{{ sub.name }}</a></li>
|
17
|
+
{% endfor %}
|
18
|
+
</ul>
|
19
|
+
{% endfor %}
|
20
|
+
</div>
|
21
|
+
</section>
|
22
|
+
|
23
|
+
<!-- quick contact form -->
|
24
|
+
|
25
|
+
<section class="ft__contact">
|
26
|
+
{% include /forms/mc-register.html %}
|
27
|
+
</section>
|
28
|
+
</div>
|
29
|
+
<!-- footer base and copyright -->
|
30
|
+
|
31
|
+
<div class="ft__base">
|
32
|
+
<a href="{{ site.author.url }}" class="slogan">made slowly</a>
|
33
|
+
<div class="legal-links">
|
34
|
+
{% for item in site.data.menu.legals %}
|
35
|
+
<a href="{{ item.url }}">{{ item.name }}</a>
|
36
|
+
{% endfor %}
|
37
|
+
</div>
|
38
|
+
<p class="copyright">© <script>
|
39
|
+
document.write(new Date().getFullYear())
|
40
|
+
</script> {{ site.title }} Limited</p>
|
41
|
+
</div>
|
42
|
+
|
43
|
+
</footer>
|
@@ -0,0 +1,157 @@
|
|
1
|
+
|
2
|
+
<form action="{{ site.data.forms[page.env].action }}" method="post" id="mc-embedded-subscribe-form" name="mc-embedded-subscribe-form" class="validate" target="_blank" novalidate>
|
3
|
+
|
4
|
+
<div class="form__block">
|
5
|
+
<h2 class="form--title">{{ site.data.forms[page.env].header }}</h2>
|
6
|
+
|
7
|
+
<p class="form--strap">{{ site.data.forms[page.env].strapline }}</p>
|
8
|
+
{% for item in site.data.forms[page.env].inputs %}
|
9
|
+
|
10
|
+
<div class="
|
11
|
+
form__elem
|
12
|
+
{{ item.type }}__elem
|
13
|
+
mc--{{ item.width }}
|
14
|
+
mc-field-group
|
15
|
+
{% if item.type == 'select' OR item.type == 'radio' %}input-group{% endif %}">
|
16
|
+
|
17
|
+
<label class="form--label {{ item.type }}-label" for="{{ item.mce-id }}">
|
18
|
+
{{ item.label }}
|
19
|
+
{% if item.required %}
|
20
|
+
<span class="mc-asterisk">*</span>
|
21
|
+
{% endif %}
|
22
|
+
</label>
|
23
|
+
{% if item.type == 'radio' %}
|
24
|
+
<ul>
|
25
|
+
{% for option in item.opts %}
|
26
|
+
<li>
|
27
|
+
<input
|
28
|
+
type="{{ item.type }}"
|
29
|
+
value="{{ option.value }}"
|
30
|
+
name="{{ item.name }}"
|
31
|
+
id="{{ item.mce-id }}-{{ option.mce-id }}" {{ item.autofocus }}>
|
32
|
+
<label
|
33
|
+
for="{{ item.mce-id }}-{{ option.mce-id }}">
|
34
|
+
{{ option.name }}
|
35
|
+
</label>
|
36
|
+
</li>
|
37
|
+
{% endfor %}
|
38
|
+
</ul>
|
39
|
+
{% endif %}
|
40
|
+
|
41
|
+
{% if item.type == 'select' %}
|
42
|
+
<select name="{{ item.name }}" class="form--select form--elem {% if item.required %}required {% endif %}" id="{{ item.mce-id }}" {{ item.autofocus }}>
|
43
|
+
{% for option in item.opts %}
|
44
|
+
<option
|
45
|
+
type="{{ item.type }}"
|
46
|
+
value="{{ option.value }}"
|
47
|
+
name="{{ item.name }}"
|
48
|
+
id="{{ item.mce-id }}-{{ option.mce-id }}">
|
49
|
+
{{ option.name }}
|
50
|
+
</option>
|
51
|
+
{% endfor %}
|
52
|
+
</select>
|
53
|
+
{% endif %}
|
54
|
+
|
55
|
+
{% if item.type == 'textarea' %}
|
56
|
+
<textarea
|
57
|
+
rows="4"
|
58
|
+
name="{{ item.name }}"
|
59
|
+
id="item.mce-id"
|
60
|
+
class="form--textarea form--elem" {{ item.autofocus }}></textarea>
|
61
|
+
{% endif %}
|
62
|
+
|
63
|
+
{% if item.type == 'checkbox' %}
|
64
|
+
<label class="form--label {{ item.type }}-label--mod" for="{{ item.mce-id }}">
|
65
|
+
<p>{{ item.label }}</p>
|
66
|
+
<span class="styled-checkbox__block">
|
67
|
+
<input type="checkbox" class="styled-checkbox switch" id="{{ item.mce-id }}" {{ item.autofocus }}>
|
68
|
+
<span class="icon"><span class="icon--elem"></span></span>
|
69
|
+
<span class="no">NO</span>
|
70
|
+
<span class="yes">YES</span>
|
71
|
+
</span>
|
72
|
+
</label>
|
73
|
+
{% endif %}
|
74
|
+
|
75
|
+
{% if item.type != 'select' and item.type != 'radio' and item.type != 'textarea' and item.type != 'checkbox' %}
|
76
|
+
<input
|
77
|
+
type="{{ item.type }}"
|
78
|
+
value=""
|
79
|
+
{% if item.type == 'tel' %}
|
80
|
+
placeholder="Landline or mobile"
|
81
|
+
pattern="[0-9]{3}-[0-9]{3}-[0-9]{3}"
|
82
|
+
{% endif %}
|
83
|
+
name="{{ item.name }}"
|
84
|
+
class="{% if item.required %}required {% endif %} form--input form--elem"
|
85
|
+
id="{{ item.mce-id }}"
|
86
|
+
{{ item.autofocus }}>
|
87
|
+
{% endif %}
|
88
|
+
</div>
|
89
|
+
|
90
|
+
{% endfor %}
|
91
|
+
|
92
|
+
<div id="mergeRow-gdpr" class="mergeRow gdpr-mergeRow content__gdprBlock mc-field-group">
|
93
|
+
<div class="content__gdpr">
|
94
|
+
<label for="interestgroup_field" class="form--label gdpr--title">What is your prefered method of communication?</label>
|
95
|
+
<fieldset class="mc_fieldset gdprRequired mc-field-group" name="interestgroup_field">
|
96
|
+
|
97
|
+
{% for item in site.data.forms[page.env].gdpr %}
|
98
|
+
|
99
|
+
<label class="mc--{{ item.width }} form--label {{ item.type }}-label--mod checkbox subfield" for="gdpr_{{ item.mce-id }}">
|
100
|
+
<p>{{ item.label }}</p>
|
101
|
+
<span class="styled-checkbox__block">
|
102
|
+
<input type="checkbox" class="styled-checkbox switch av-checkbox gdpr" id="gdpr_{{ item.mce-id }}" value="Y" name="{{ item.name }}">
|
103
|
+
<span class="icon"><span class="icon--elem"></span></span>
|
104
|
+
<span class="no">NO</span>
|
105
|
+
<span class="yes">YES</span>
|
106
|
+
</span>
|
107
|
+
</label>
|
108
|
+
{% endfor %}
|
109
|
+
</fieldset>
|
110
|
+
|
111
|
+
<p class="content__gdprLegal">You can unsubscribe at any time by clicking the link at the bottom of our emails. For information about our privacy practices, click <a href="/privacy-policy/">here</a>.</p>
|
112
|
+
|
113
|
+
</div>
|
114
|
+
<div class="content__gdprLegal">
|
115
|
+
<p>We use Mailchimp as our marketing platform. By clicking below, you acknowledge that your information will be transferred to Mailchimp for processing. Learn more about
|
116
|
+
Mailchimp's privacy practices <a href="https://mailchimp.com/legal/" target="_blank">here.</a></p>
|
117
|
+
</div>
|
118
|
+
</div>
|
119
|
+
|
120
|
+
|
121
|
+
<div class="clear">
|
122
|
+
<input type="submit" value="Submit" name="subscribe" id="mc-embedded-subscribe" class="button">
|
123
|
+
</div>
|
124
|
+
|
125
|
+
|
126
|
+
<div id="mce-responses" class="clear">
|
127
|
+
<div class="response" id="mce-error-response" style="display:none">
|
128
|
+
</div>
|
129
|
+
<div class="response" id="mce-success-response" style="display:none">
|
130
|
+
</div>
|
131
|
+
</div>
|
132
|
+
|
133
|
+
<!-- real people should not fill this in and expect good things - do not remove this or risk form bot signups-->
|
134
|
+
<div style="position: absolute; left: -5000px;" aria-hidden="true">
|
135
|
+
<input type="text" name="{{ site.data.forms.pwp.botspot-name }}" tabindex="-1" value="">
|
136
|
+
</div>
|
137
|
+
|
138
|
+
|
139
|
+
|
140
|
+
</div>
|
141
|
+
|
142
|
+
</form>
|
143
|
+
|
144
|
+
|
145
|
+
<script type='text/javascript' src='//s3.amazonaws.com/downloads.mailchimp.com/js/mc-validate.js'></script>
|
146
|
+
|
147
|
+
<script type='text/javascript'>
|
148
|
+
(function($) {
|
149
|
+
window.fnames = new Array();
|
150
|
+
window.ftypes = new Array();
|
151
|
+
{% for item in site.data.forms[page.env].inputs %}
|
152
|
+
fnames[{{ forloop.index0 }}] = '{{ item.name }}';
|
153
|
+
ftypes[{{ forloop.index0 }}] = '{{ item.type }}';
|
154
|
+
{% endfor %}
|
155
|
+
}(jQuery));
|
156
|
+
var $mcj = jQuery.noConflict(true);
|
157
|
+
</script>
|
Binary file
|
@@ -0,0 +1,31 @@
|
|
1
|
+
# Header _includes
|
2
|
+
|
3
|
+
Everything we place in a pages header originates here.
|
4
|
+
|
5
|
+
## descriptors
|
6
|
+
|
7
|
+
Descriptive stuff that describes the website, the company, the developer and the particular page.
|
8
|
+
|
9
|
+
### Global includes
|
10
|
+
|
11
|
+
#### Open Graph protocol - og-meta.html
|
12
|
+
|
13
|
+
Mostly used by facebook to understand what a given page is all about. This is how we control our content when posted on facebook. Thumbs and descriptions are taken from page front matter, if that doesn't exist we default to site settings in _config.yml.
|
14
|
+
|
15
|
+
If the page is part of a blog, we change `og:type` from website to article and add details from front matter.
|
16
|
+
|
17
|
+
We have the option to include a fb:app_id.
|
18
|
+
|
19
|
+
#### Twitter Meta - twitter-meta.html
|
20
|
+
|
21
|
+
Similar to og-meta, we control how our content appears on Twitter. We look for data in pages front matter first then default to site data.
|
22
|
+
|
23
|
+
#### Structured Data - structured-datd.html
|
24
|
+
|
25
|
+
This is how we control the indexing of our pages with search engines, in particular Google.
|
26
|
+
|
27
|
+
## env
|
28
|
+
|
29
|
+
### conditional.html
|
30
|
+
|
31
|
+
Conditional `<link rel="stylesheet"` to style each environment. We do this so that we only load the css needed for a given page. All pages get gaitq_global.css. With front matter we include environmental stylesheet with `env: pwp | clinician`. The existence of `page.env` triggers conditional.html.
|
@@ -0,0 +1,74 @@
|
|
1
|
+
|
2
|
+
<!-- *** OG *** https://ogp.me/ -->
|
3
|
+
<meta property="og:title" content="{% if page.url == "/" %} {{ site.title }} {% else %} {{ page.title }} | {{ site.title }} {% endif %}" />
|
4
|
+
|
5
|
+
<!-- Adds article properties for posts -->
|
6
|
+
|
7
|
+
<meta property="og:type" content="
|
8
|
+
{% if page.id %}
|
9
|
+
{%- assign facebook = site.socials | where: 'name', 'Facebook' -%}
|
10
|
+
|
11
|
+
|
12
|
+
article" />
|
13
|
+
<meta
|
14
|
+
property=article:publisher
|
15
|
+
content="{{ facebook[0].url }}/">
|
16
|
+
<meta
|
17
|
+
property=article:author
|
18
|
+
content="{{ site.url }}">
|
19
|
+
<meta
|
20
|
+
property=article:section
|
21
|
+
content="News from {{ site.title }}" >
|
22
|
+
<meta
|
23
|
+
property=article:published_time
|
24
|
+
content="{{ page.date | date_to_xmlschema }}">
|
25
|
+
<meta
|
26
|
+
property=article:modified_time
|
27
|
+
content="{{ 'now' | date_to_xmlschema }}">
|
28
|
+
<!-- this just pulls the first cat -->
|
29
|
+
<meta
|
30
|
+
property=article:tag
|
31
|
+
content="{{ page.categories }}">
|
32
|
+
{% else %}
|
33
|
+
website" />
|
34
|
+
{% endif %}
|
35
|
+
|
36
|
+
<meta property=og:updated_time content="{{ 'now' | date_to_xmlschema }}">
|
37
|
+
|
38
|
+
<!-- use local image if it exist but only for posts -->
|
39
|
+
|
40
|
+
{% if page.id %}
|
41
|
+
{% assign image = '/posts/' | append: page.image %}
|
42
|
+
{% else %}
|
43
|
+
{% assign image = site.fallback_path | append: site.brand %}
|
44
|
+
{% endif %}
|
45
|
+
|
46
|
+
{% assign image_url = site.url | append: site.baseurl | append: image %}
|
47
|
+
|
48
|
+
<meta property="og:image" content="{{ image_url }}" />
|
49
|
+
|
50
|
+
<meta property="og:image:type" content="image/{{ image | split: '.' | last }}" />
|
51
|
+
|
52
|
+
{% imagesize image:opengraph %}
|
53
|
+
|
54
|
+
<!-- to implement this properly we need some kind of db recording the descriptors of our thumbs -->
|
55
|
+
|
56
|
+
<meta property="og:image:alt" content="{{ site.subtitle }}" />
|
57
|
+
|
58
|
+
<meta property="og:url" content="{{ site.url }}{{ site.baseurl }}{{ page.url }}" />
|
59
|
+
|
60
|
+
<meta property="og:description" content="
|
61
|
+
{% if page.description %}
|
62
|
+
{{ page.description }}
|
63
|
+
{% else %}
|
64
|
+
{{ site.description }}
|
65
|
+
{% endif %}" />
|
66
|
+
|
67
|
+
<meta property="og:locale" content="en" />
|
68
|
+
|
69
|
+
<meta property="og:site_name" content="{{ site.title }} | {{ site.subtitle }}" />
|
70
|
+
|
71
|
+
<!-- *** fb:app_id *** https://developers.facebook.com/docs/sharing/webmasters/#markup -->
|
72
|
+
<meta property="fb:app_id" content="{{ site.data.socials.facebook.app_id }}" />
|
73
|
+
|
74
|
+
<!-- *** END OG *** -->
|
@@ -0,0 +1,124 @@
|
|
1
|
+
|
2
|
+
{%- assign facebook = site.socials | where: 'name', 'Facebook' -%}
|
3
|
+
|
4
|
+
{%- assign twitter = site.socials | where: 'name', 'Twitter' -%}
|
5
|
+
|
6
|
+
<!-- *** STRUCTURED DATA *** -->
|
7
|
+
<!-- WebSite -->
|
8
|
+
<!-- const -->
|
9
|
+
<script type="application/ld+json">
|
10
|
+
{ "@context":"https://schema.org",
|
11
|
+
"@graph":[ {
|
12
|
+
"@type":"WebSite",
|
13
|
+
"@id":"{{ site.url }}{{ site.baseurl }}/#website",
|
14
|
+
"url": "{{ site.url }}{{ site.baseurl }}/",
|
15
|
+
"sameAs":[
|
16
|
+
"mailto:{{ site.email }}",
|
17
|
+
"{{ twitter[0].url }}/",
|
18
|
+
"{{ facebook[0].url }}/" ],
|
19
|
+
"name": "{{ site.title }} | {{ site.subtitle }}",
|
20
|
+
"description": "{{ site.description }}",
|
21
|
+
"image": "{{ site.url }}{{ site.baseurl }}{{ site.fallback_path }}{{ site.brand }}",
|
22
|
+
"author":[ {
|
23
|
+
/* Person */
|
24
|
+
"@type": "Person",
|
25
|
+
"@context": "http://schema.org",
|
26
|
+
"name": "{{ site.title }}",
|
27
|
+
"description": "{{ site.description }}",
|
28
|
+
"image": "{{ site.url }}{{ site.baseurl }}{{ site.fallback_path }}{{ site.brand }}"} ]
|
29
|
+
} , {
|
30
|
+
/* WePage */
|
31
|
+
/* var */
|
32
|
+
"@type":"WebPage",
|
33
|
+
"@id":"{{ site.url }}{{ site.baseurl }}{{ page.url }}#webpage",
|
34
|
+
"url":"{{ site.url }}{{ site.baseurl }}{{ page.url }}",
|
35
|
+
"inLanguage":"en-GB",
|
36
|
+
"name":"{%- if page.title -%} {{ page.title }} | {{ site.title }} {%- else -%} {{ site.title }} | {{ site.subtitle }} {% endif %}",
|
37
|
+
"description": "{%- if page.description -%} {{ page.descrition }}{%- else -%}{{ site.description }}{% endif %}",
|
38
|
+
"datePublished":"{{ page.date }}",
|
39
|
+
"dateModified":"{{ 'now' | date_to_xmlschema }}",
|
40
|
+
"isPartOf":[{
|
41
|
+
"@id":"{{ site.url }}{{ site.baseurl }}/#website"}] }] } </script>
|
42
|
+
|
43
|
+
<!-- Organization -->
|
44
|
+
<script type="application/ld+json">
|
45
|
+
{ "@context": "http://schema.org",
|
46
|
+
"@type": "Organization",
|
47
|
+
"url": "{{ site.url }}{{ site.baseurl }}/",
|
48
|
+
/* only applies to registered business */
|
49
|
+
"legalName": "{{ site.title }} Limited",
|
50
|
+
"description": "{{ site.description }}",
|
51
|
+
"image": "{{ site.url }}{{ site.baseurl }}{{ site.fallback_path }}{{ site.brand }}",
|
52
|
+
"logo": "{{ site.url }}{{ site.baseurl }}{{ site.fallback_path }}{{ site.logo }}",
|
53
|
+
"address": {
|
54
|
+
"@type": "PostalAddress",
|
55
|
+
"streetAddress": "{{ site.postal_add.street }}",
|
56
|
+
"addressLocality": "{{ site.postal_add.city }}",
|
57
|
+
"addressRegion": "{{ site.postal_add.region }}",
|
58
|
+
"addressCountry": "{{ site.postal_add.country }}",
|
59
|
+
"postalCode": "{{ site.postal_add.postcode }}" },
|
60
|
+
"telephone": "{{ site.phone }}",
|
61
|
+
"sameAs":[
|
62
|
+
"mailto:{{ site.email }}",
|
63
|
+
"{{ twitter[0].url }}/",
|
64
|
+
"{{ facebook[0].url }}/" ] } </script>
|
65
|
+
|
66
|
+
<!-- Article -->
|
67
|
+
{% if page.id %}<!-- this is a post -->
|
68
|
+
<script type="application/ld+json">
|
69
|
+
{
|
70
|
+
"@context": "http://schema.org",
|
71
|
+
"@type": "Article",
|
72
|
+
"author": {
|
73
|
+
"@type": "Person",
|
74
|
+
"name":
|
75
|
+
"{%- if page.author -%}{{ site.data.authors[page.author].name }}{%- else -%}{{ site.title }}{% endif %}"
|
76
|
+
},
|
77
|
+
"creator": {
|
78
|
+
"@type": "Person",
|
79
|
+
"name":
|
80
|
+
"{%- if page.author -%}{{ site.data.authors[page.author].name }}{%- else -%}{{ site.title }}{% endif %}"
|
81
|
+
},
|
82
|
+
"publisher": {
|
83
|
+
"@type": "Organization",
|
84
|
+
"name": "{{ site.title }}",
|
85
|
+
"logo": {
|
86
|
+
"@type": "ImageObject",
|
87
|
+
"url": "{{ site.url }}{{ site.baseurl }}{{ site.fallback_path }}{{ site.logo }}"
|
88
|
+
}
|
89
|
+
},
|
90
|
+
"headline": "{{ page.title }} | {{ site.title }}",
|
91
|
+
"datePublished": "{{ page.date | date_to_xmlschema }}",
|
92
|
+
"dateModified": "{{ 'now' | date_to_xmlschema }}",
|
93
|
+
"description": "{{ page.description }}",
|
94
|
+
"inLanguage": "en",
|
95
|
+
"url": "{{ page.url }}",
|
96
|
+
"name": "{{ page.title }} | {{ site.title }}",
|
97
|
+
"image": {
|
98
|
+
"@type": "ImageObject",
|
99
|
+
"url": "{%- if page.image -%}{{ site.url }}{{ site.baseurl }}{{ site.default_path }}{{ page.image | prepend: 'posts/' }}{%- else -%}{{ site.url }}{{ site.baseurl }}{{ site.fallback_path }}{{ site.brand }}{%- endif -%}"
|
100
|
+
},
|
101
|
+
"mainEntityOfPage": "{{ site.url }}{{ site.baseurl }}{{ page.url }}"
|
102
|
+
}
|
103
|
+
</script>
|
104
|
+
{% else %}
|
105
|
+
<!-- LocalBusiness -->
|
106
|
+
<script type="application/ld+json">
|
107
|
+
{ "@context": "http://schema.org",
|
108
|
+
"@type": "LocalBusiness",
|
109
|
+
"address": {
|
110
|
+
"@type": "PostalAddress",
|
111
|
+
"streetAddress": "{{ site.postal_add.street }}",
|
112
|
+
"addressLocality": "{{ site.postal_add.city }}",
|
113
|
+
"addressRegion": "{{ site.postal_add.region }}",
|
114
|
+
"addressCountry": "{{ site.postal_add.country }}",
|
115
|
+
"postalCode": "{{ site.postal_add.postcode }}"
|
116
|
+
},
|
117
|
+
"name": "{{ site.title }} | {{ site.subtitle }}",
|
118
|
+
"alternateName": "{{ site.title }}",
|
119
|
+
"description": "{{ site.description }}",
|
120
|
+
"telephone": "{{ site.phone }}",
|
121
|
+
"openingHours": "{{ site.opening_hours }}",
|
122
|
+
"image": "{{ site.url }}{{ site.baseurl }}{{ site.fallback_path }}{{ site.brand }}"
|
123
|
+
} </script>
|
124
|
+
{% endif %}
|
@@ -0,0 +1,17 @@
|
|
1
|
+
|
2
|
+
<!-- *** TWITTER:CARD *** https://developer.twitter.com/en/docs/tweets/optimize-with-cards/overview/abouts-cards -->
|
3
|
+
<meta name="twitter:card" content="summary_large_image" />
|
4
|
+
|
5
|
+
<meta name="twitter:site" content="@{{ site.data.socials.twitter.username }}" />
|
6
|
+
<meta name="twitter:creator" content="@{{ site.author.twitter }}">
|
7
|
+
<meta name="twitter:title" content="{% if page.url == "/" %} {{ site.title }} | {{ site.subtitle }} {% else %} {{ page.title }} | {{ site.title }}{% endif %}" />
|
8
|
+
|
9
|
+
<meta name="twitter:description" content="{% if page.description == null %} {{ site.description }}
|
10
|
+
{% else %} {{ page.description }} {% endif %}" />
|
11
|
+
|
12
|
+
<meta name="twitter:image" content="
|
13
|
+
{%- if page.image -%}{{ site.url }}{{ site.baseurl }}{{ site.default_path }}
|
14
|
+
{%- if page.id -%}{{ page.image | prepend: 'posts/' }}{%- else -%}{{ page.image }}{%- endif -%}{%- else -%}{{ site.url }}{{ site.baseurl }}{{ site.fallback_path }}{{ site.brand }}{%- endif -%}" />
|
15
|
+
<!-- to implement this we need some kind of db recording the descriptors of our thumbs -->
|
16
|
+
<meta name="twitter:image:alt" content="" />
|
17
|
+
<!-- *** END TWITTER:CARD *** -->
|