minimal-mistakes-jekyll 4.14.0 → 4.14.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +7 -1
- data/LICENSE +20 -20
- data/README.md +1 -1
- data/_data/ui-text.yml +1176 -1176
- data/_includes/analytics-providers/google-gtag.html +9 -9
- data/_includes/analytics-providers/google-universal.html +10 -10
- data/_includes/analytics-providers/google.html +13 -13
- data/_includes/analytics.html +13 -13
- data/_includes/author-profile-custom-links.html +6 -6
- data/_includes/author-profile.html +271 -271
- data/_includes/breadcrumbs.html +39 -39
- data/_includes/comments-providers/scripts.html +19 -19
- data/_includes/comments-providers/utterances.html +19 -19
- data/_includes/comments.html +174 -174
- data/_includes/footer.html +19 -19
- data/_includes/head.html +41 -41
- data/_includes/masthead.html +33 -33
- data/_includes/search/algolia-search-scripts.html +54 -54
- data/_includes/search/search_form.html +17 -17
- data/_includes/seo.html +164 -164
- data/_includes/video +13 -13
- data/_layouts/default.html +1 -1
- data/_layouts/home.html +13 -13
- data/_layouts/posts.html +29 -29
- data/_layouts/single.html +94 -94
- data/_layouts/splash.html +21 -21
- data/_layouts/tags.html +42 -42
- data/_sass/minimal-mistakes.scss +1 -1
- data/_sass/minimal-mistakes/_archive.scss +437 -437
- data/_sass/minimal-mistakes/_base.scss +357 -357
- data/_sass/minimal-mistakes/_footer.scss +91 -91
- data/_sass/minimal-mistakes/_mixins.scss +91 -91
- data/_sass/minimal-mistakes/_navigation.scss +556 -556
- data/_sass/minimal-mistakes/_search.scss +126 -126
- data/_sass/minimal-mistakes/_sidebar.scss +318 -318
- data/_sass/minimal-mistakes/_utilities.scss +6 -0
- data/_sass/minimal-mistakes/_variables.scss +159 -159
- data/_sass/minimal-mistakes/skins/_dark.scss +27 -27
- data/_sass/minimal-mistakes/skins/_neon.scss +56 -56
- data/_sass/minimal-mistakes/skins/_plum.scss +63 -63
- data/assets/js/_main.js +106 -106
- data/assets/js/lunr/lunr-store.js +54 -54
- data/assets/js/lunr/lunr.js +3483 -3483
- data/assets/js/lunr/lunr.min.js +5 -5
- data/assets/js/main.min.js +5 -5
- metadata +2 -2
data/_includes/footer.html
CHANGED
@@ -1,19 +1,19 @@
|
|
1
|
-
<div class="page__footer-follow">
|
2
|
-
<ul class="social-icons">
|
3
|
-
{% if site.data.ui-text[site.locale].follow_label %}
|
4
|
-
<li><strong>{{ site.data.ui-text[site.locale].follow_label }}</strong></li>
|
5
|
-
{% endif %}
|
6
|
-
|
7
|
-
{% if site.footer.links %}
|
8
|
-
{% for link in site.footer.links %}
|
9
|
-
{% if link.label and link.url %}
|
10
|
-
<li><a href="{{ link.url }}" rel="nofollow noopener noreferrer"><i class="{{ link.icon | default: 'fas fa-link' }}" aria-hidden="true"></i> {{ link.label }}</a></li>
|
11
|
-
{% endif %}
|
12
|
-
{% endfor %}
|
13
|
-
{% endif %}
|
14
|
-
|
15
|
-
<li><a href="{% if site.atom_feed.path %}{{ site.atom_feed.path }}{% else %}{{ '/feed.xml' | relative_url }}{% endif %}"><i class="fas fa-fw fa-rss-square" aria-hidden="true"></i> {{ site.data.ui-text[site.locale].feed_label | default: "Feed" }}</a></li>
|
16
|
-
</ul>
|
17
|
-
</div>
|
18
|
-
|
19
|
-
<div class="page__footer-copyright">© {{ site.time | date: '%Y' }} {{ site.name | default: site.title }}. {{ site.data.ui-text[site.locale].powered_by | default: "Powered by" }} <a href="https://jekyllrb.com" rel="nofollow">Jekyll</a> & <a href="https://mademistakes.com/work/minimal-mistakes-jekyll-theme/" rel="nofollow">Minimal Mistakes</a>.</div>
|
1
|
+
<div class="page__footer-follow">
|
2
|
+
<ul class="social-icons">
|
3
|
+
{% if site.data.ui-text[site.locale].follow_label %}
|
4
|
+
<li><strong>{{ site.data.ui-text[site.locale].follow_label }}</strong></li>
|
5
|
+
{% endif %}
|
6
|
+
|
7
|
+
{% if site.footer.links %}
|
8
|
+
{% for link in site.footer.links %}
|
9
|
+
{% if link.label and link.url %}
|
10
|
+
<li><a href="{{ link.url }}" rel="nofollow noopener noreferrer"><i class="{{ link.icon | default: 'fas fa-link' }}" aria-hidden="true"></i> {{ link.label }}</a></li>
|
11
|
+
{% endif %}
|
12
|
+
{% endfor %}
|
13
|
+
{% endif %}
|
14
|
+
|
15
|
+
<li><a href="{% if site.atom_feed.path %}{{ site.atom_feed.path }}{% else %}{{ '/feed.xml' | relative_url }}{% endif %}"><i class="fas fa-fw fa-rss-square" aria-hidden="true"></i> {{ site.data.ui-text[site.locale].feed_label | default: "Feed" }}</a></li>
|
16
|
+
</ul>
|
17
|
+
</div>
|
18
|
+
|
19
|
+
<div class="page__footer-copyright">© {{ site.time | date: '%Y' }} {{ site.name | default: site.title }}. {{ site.data.ui-text[site.locale].powered_by | default: "Powered by" }} <a href="https://jekyllrb.com" rel="nofollow">Jekyll</a> & <a href="https://mademistakes.com/work/minimal-mistakes-jekyll-theme/" rel="nofollow">Minimal Mistakes</a>.</div>
|
data/_includes/head.html
CHANGED
@@ -1,41 +1,41 @@
|
|
1
|
-
<meta charset="utf-8">
|
2
|
-
|
3
|
-
{% include seo.html %}
|
4
|
-
|
5
|
-
<link href="{% if site.atom_feed.path %}{{ site.atom_feed.path }}{% else %}{{ '/feed.xml' | relative_url }}{% endif %}" type="application/atom+xml" rel="alternate" title="{{ site.title }} Feed">
|
6
|
-
|
7
|
-
<!-- http://t.co/dKP3o1e -->
|
8
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
9
|
-
|
10
|
-
<script>
|
11
|
-
document.documentElement.className = document.documentElement.className.replace(/\bno-js\b/g, '') + ' js ';
|
12
|
-
</script>
|
13
|
-
|
14
|
-
<!-- For all browsers -->
|
15
|
-
<link rel="stylesheet" href="{{ '/assets/css/main.css' | relative_url }}">
|
16
|
-
|
17
|
-
<!--[if lte IE 9]>
|
18
|
-
<style>
|
19
|
-
/* old IE unsupported flexbox fixes */
|
20
|
-
.greedy-nav .site-title {
|
21
|
-
padding-right: 3em;
|
22
|
-
}
|
23
|
-
.greedy-nav button {
|
24
|
-
position: absolute;
|
25
|
-
top: 0;
|
26
|
-
right: 0;
|
27
|
-
height: 100%;
|
28
|
-
}
|
29
|
-
</style>
|
30
|
-
<![endif]-->
|
31
|
-
|
32
|
-
{% if site.head_scripts %}
|
33
|
-
{% for script in site.head_scripts %}
|
34
|
-
{% if script contains "://" %}
|
35
|
-
{% capture script_path %}{{ script }}{% endcapture %}
|
36
|
-
{% else %}
|
37
|
-
{% capture script_path %}{{ script | relative_url }}{% endcapture %}
|
38
|
-
{% endif %}
|
39
|
-
<script src="{{ script_path }}"></script>
|
40
|
-
{% endfor %}
|
41
|
-
{% endif %}
|
1
|
+
<meta charset="utf-8">
|
2
|
+
|
3
|
+
{% include seo.html %}
|
4
|
+
|
5
|
+
<link href="{% if site.atom_feed.path %}{{ site.atom_feed.path }}{% else %}{{ '/feed.xml' | relative_url }}{% endif %}" type="application/atom+xml" rel="alternate" title="{{ site.title }} Feed">
|
6
|
+
|
7
|
+
<!-- http://t.co/dKP3o1e -->
|
8
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
9
|
+
|
10
|
+
<script>
|
11
|
+
document.documentElement.className = document.documentElement.className.replace(/\bno-js\b/g, '') + ' js ';
|
12
|
+
</script>
|
13
|
+
|
14
|
+
<!-- For all browsers -->
|
15
|
+
<link rel="stylesheet" href="{{ '/assets/css/main.css' | relative_url }}">
|
16
|
+
|
17
|
+
<!--[if lte IE 9]>
|
18
|
+
<style>
|
19
|
+
/* old IE unsupported flexbox fixes */
|
20
|
+
.greedy-nav .site-title {
|
21
|
+
padding-right: 3em;
|
22
|
+
}
|
23
|
+
.greedy-nav button {
|
24
|
+
position: absolute;
|
25
|
+
top: 0;
|
26
|
+
right: 0;
|
27
|
+
height: 100%;
|
28
|
+
}
|
29
|
+
</style>
|
30
|
+
<![endif]-->
|
31
|
+
|
32
|
+
{% if site.head_scripts %}
|
33
|
+
{% for script in site.head_scripts %}
|
34
|
+
{% if script contains "://" %}
|
35
|
+
{% capture script_path %}{{ script }}{% endcapture %}
|
36
|
+
{% else %}
|
37
|
+
{% capture script_path %}{{ script | relative_url }}{% endcapture %}
|
38
|
+
{% endif %}
|
39
|
+
<script src="{{ script_path }}"></script>
|
40
|
+
{% endfor %}
|
41
|
+
{% endif %}
|
data/_includes/masthead.html
CHANGED
@@ -1,33 +1,33 @@
|
|
1
|
-
<div class="masthead">
|
2
|
-
<div class="masthead__inner-wrap">
|
3
|
-
<div class="masthead__menu">
|
4
|
-
<nav id="site-nav" class="greedy-nav">
|
5
|
-
<a class="site-title" href="{{ '/' | relative_url }}">{{ site.title }}</a>
|
6
|
-
<ul class="visible-links">
|
7
|
-
{%- for link in site.data.navigation.main -%}
|
8
|
-
{%- if link.url contains '://' -%}
|
9
|
-
{%- assign url = link.url -%}
|
10
|
-
{%- else -%}
|
11
|
-
{%- assign url = link.url | relative_url -%}
|
12
|
-
{%- endif -%}
|
13
|
-
<li class="masthead__menu-item">
|
14
|
-
<a href="{{ url }}" {% if link.description %}title="{{ link.description }}"{% endif %}>{{ link.title }}</a>
|
15
|
-
</li>
|
16
|
-
{%- endfor -%}
|
17
|
-
</ul>
|
18
|
-
{% if site.search == true %}
|
19
|
-
<button class="search__toggle" type="button">
|
20
|
-
<svg class="icon" width="16" height="16" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 15.99 16">
|
21
|
-
<path d="M15.5,13.12L13.19,10.8a1.69,1.69,0,0,0-1.28-.55l-0.06-.06A6.5,6.5,0,0,0,5.77,0,6.5,6.5,0,0,0,2.46,11.59a6.47,6.47,0,0,0,7.74.26l0.05,0.05a1.65,1.65,0,0,0,.5,1.24l2.38,2.38A1.68,1.68,0,0,0,15.5,13.12ZM6.4,2A4.41,4.41,0,1,1,2,6.4,4.43,4.43,0,0,1,6.4,2Z" transform="translate(-.01)"></path>
|
22
|
-
</svg>
|
23
|
-
</button>
|
24
|
-
{% endif %}
|
25
|
-
<button class="greedy-nav__toggle hidden" type="button">
|
26
|
-
<span class="visually-hidden">{{ site.data.ui-text[site.locale].menu_label | default: "Toggle Menu" }}</span>
|
27
|
-
<div class="navicon"></div>
|
28
|
-
</button>
|
29
|
-
<ul class="hidden-links hidden"></ul>
|
30
|
-
</nav>
|
31
|
-
</div>
|
32
|
-
</div>
|
33
|
-
</div>
|
1
|
+
<div class="masthead">
|
2
|
+
<div class="masthead__inner-wrap">
|
3
|
+
<div class="masthead__menu">
|
4
|
+
<nav id="site-nav" class="greedy-nav">
|
5
|
+
<a class="site-title" href="{{ '/' | relative_url }}">{{ site.title }}</a>
|
6
|
+
<ul class="visible-links">
|
7
|
+
{%- for link in site.data.navigation.main -%}
|
8
|
+
{%- if link.url contains '://' -%}
|
9
|
+
{%- assign url = link.url -%}
|
10
|
+
{%- else -%}
|
11
|
+
{%- assign url = link.url | relative_url -%}
|
12
|
+
{%- endif -%}
|
13
|
+
<li class="masthead__menu-item">
|
14
|
+
<a href="{{ url }}" {% if link.description %}title="{{ link.description }}"{% endif %}>{{ link.title }}</a>
|
15
|
+
</li>
|
16
|
+
{%- endfor -%}
|
17
|
+
</ul>
|
18
|
+
{% if site.search == true %}
|
19
|
+
<button class="search__toggle" type="button">
|
20
|
+
<svg class="icon" width="16" height="16" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 15.99 16">
|
21
|
+
<path d="M15.5,13.12L13.19,10.8a1.69,1.69,0,0,0-1.28-.55l-0.06-.06A6.5,6.5,0,0,0,5.77,0,6.5,6.5,0,0,0,2.46,11.59a6.47,6.47,0,0,0,7.74.26l0.05,0.05a1.65,1.65,0,0,0,.5,1.24l2.38,2.38A1.68,1.68,0,0,0,15.5,13.12ZM6.4,2A4.41,4.41,0,1,1,2,6.4,4.43,4.43,0,0,1,6.4,2Z" transform="translate(-.01)"></path>
|
22
|
+
</svg>
|
23
|
+
</button>
|
24
|
+
{% endif %}
|
25
|
+
<button class="greedy-nav__toggle hidden" type="button">
|
26
|
+
<span class="visually-hidden">{{ site.data.ui-text[site.locale].menu_label | default: "Toggle Menu" }}</span>
|
27
|
+
<div class="navicon"></div>
|
28
|
+
</button>
|
29
|
+
<ul class="hidden-links hidden"></ul>
|
30
|
+
</nav>
|
31
|
+
</div>
|
32
|
+
</div>
|
33
|
+
</div>
|
@@ -1,54 +1,54 @@
|
|
1
|
-
<!-- Including InstantSearch.js library and styling -->
|
2
|
-
<script src="https://cdn.jsdelivr.net/npm/instantsearch.js@2.3.3/dist/instantsearch.min.js"></script>
|
3
|
-
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/instantsearch.js@2.3.3/dist/instantsearch.min.css">
|
4
|
-
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/instantsearch.js@2.3.3/dist/instantsearch-theme-algolia.min.css">
|
5
|
-
|
6
|
-
<script>
|
7
|
-
// Instanciating InstantSearch.js with Algolia credentials
|
8
|
-
const search = instantsearch({
|
9
|
-
appId: '{{ site.algolia.application_id }}',
|
10
|
-
apiKey: '{{ site.algolia.search_only_api_key }}',
|
11
|
-
indexName: '{{ site.algolia.index_name }}',
|
12
|
-
searchParameters: {
|
13
|
-
restrictSearchableAttributes: [
|
14
|
-
'title',
|
15
|
-
'content'
|
16
|
-
]
|
17
|
-
}
|
18
|
-
});
|
19
|
-
|
20
|
-
const hitTemplate = function(hit) {
|
21
|
-
const url = hit.url;
|
22
|
-
const title = hit._highlightResult.title.value;
|
23
|
-
const content = hit._highlightResult.html.value;
|
24
|
-
|
25
|
-
return `
|
26
|
-
<div class="list__item">
|
27
|
-
<article class="archive__item" itemscope itemtype="http://schema.org/CreativeWork">
|
28
|
-
<h2 class="archive__item-title" itemprop="headline"><a href="{{ site.baseurl }}${url}">${title}</a></h2>
|
29
|
-
<div class="archive__item-excerpt" itemprop="description">${content}</div>
|
30
|
-
</article>
|
31
|
-
</div>
|
32
|
-
`;
|
33
|
-
}
|
34
|
-
|
35
|
-
// Adding searchbar and results widgets
|
36
|
-
search.addWidget(
|
37
|
-
instantsearch.widgets.searchBox({
|
38
|
-
container: '.search-searchbar',
|
39
|
-
{% unless site.algolia.powered_by == false %}poweredBy: true,{% endunless %}
|
40
|
-
placeholder: '{{ site.data.ui-text[site.locale].search_placeholder_text | default: "Enter your search term..." }}'
|
41
|
-
})
|
42
|
-
);
|
43
|
-
search.addWidget(
|
44
|
-
instantsearch.widgets.hits({
|
45
|
-
container: '.search-hits',
|
46
|
-
templates: {
|
47
|
-
item: hitTemplate
|
48
|
-
}
|
49
|
-
})
|
50
|
-
);
|
51
|
-
|
52
|
-
// Starting the search
|
53
|
-
search.start();
|
54
|
-
</script>
|
1
|
+
<!-- Including InstantSearch.js library and styling -->
|
2
|
+
<script src="https://cdn.jsdelivr.net/npm/instantsearch.js@2.3.3/dist/instantsearch.min.js"></script>
|
3
|
+
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/instantsearch.js@2.3.3/dist/instantsearch.min.css">
|
4
|
+
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/instantsearch.js@2.3.3/dist/instantsearch-theme-algolia.min.css">
|
5
|
+
|
6
|
+
<script>
|
7
|
+
// Instanciating InstantSearch.js with Algolia credentials
|
8
|
+
const search = instantsearch({
|
9
|
+
appId: '{{ site.algolia.application_id }}',
|
10
|
+
apiKey: '{{ site.algolia.search_only_api_key }}',
|
11
|
+
indexName: '{{ site.algolia.index_name }}',
|
12
|
+
searchParameters: {
|
13
|
+
restrictSearchableAttributes: [
|
14
|
+
'title',
|
15
|
+
'content'
|
16
|
+
]
|
17
|
+
}
|
18
|
+
});
|
19
|
+
|
20
|
+
const hitTemplate = function(hit) {
|
21
|
+
const url = hit.url;
|
22
|
+
const title = hit._highlightResult.title.value;
|
23
|
+
const content = hit._highlightResult.html.value;
|
24
|
+
|
25
|
+
return `
|
26
|
+
<div class="list__item">
|
27
|
+
<article class="archive__item" itemscope itemtype="http://schema.org/CreativeWork">
|
28
|
+
<h2 class="archive__item-title" itemprop="headline"><a href="{{ site.baseurl }}${url}">${title}</a></h2>
|
29
|
+
<div class="archive__item-excerpt" itemprop="description">${content}</div>
|
30
|
+
</article>
|
31
|
+
</div>
|
32
|
+
`;
|
33
|
+
}
|
34
|
+
|
35
|
+
// Adding searchbar and results widgets
|
36
|
+
search.addWidget(
|
37
|
+
instantsearch.widgets.searchBox({
|
38
|
+
container: '.search-searchbar',
|
39
|
+
{% unless site.algolia.powered_by == false %}poweredBy: true,{% endunless %}
|
40
|
+
placeholder: '{{ site.data.ui-text[site.locale].search_placeholder_text | default: "Enter your search term..." }}'
|
41
|
+
})
|
42
|
+
);
|
43
|
+
search.addWidget(
|
44
|
+
instantsearch.widgets.hits({
|
45
|
+
container: '.search-hits',
|
46
|
+
templates: {
|
47
|
+
item: hitTemplate
|
48
|
+
}
|
49
|
+
})
|
50
|
+
);
|
51
|
+
|
52
|
+
// Starting the search
|
53
|
+
search.start();
|
54
|
+
</script>
|
@@ -1,18 +1,18 @@
|
|
1
|
-
<div class="search-content__inner-wrap">
|
2
|
-
{%- assign search_provider = site.search_provider | default: "lunr" -%}
|
3
|
-
{%- case search_provider -%}
|
4
|
-
{%- when "lunr" -%}
|
5
|
-
<input type="text" id="search" class="search-input" tabindex="-1" placeholder="{{ site.data.ui-text[site.locale].search_placeholder_text | default: 'Enter your search term...' }}" />
|
6
|
-
<div id="results" class="results"></div>
|
7
|
-
{%- when "google" -%}
|
8
|
-
<form onsubmit="return executeQuery();" id="cse-search-box-form-id">
|
9
|
-
<input type="text" id="cse-search-input-box-id" class="search-input" tabindex="-1" placeholder="{{ site.data.ui-text[site.locale].search_placeholder_text | default: 'Enter your search term...' }}" />
|
10
|
-
</form>
|
11
|
-
<div id="results" class="results">
|
12
|
-
<gcse:searchresults-only></gcse:searchresults-only>
|
13
|
-
</div>
|
14
|
-
{%- when "algolia" -%}
|
15
|
-
<div class="search-searchbar"></div>
|
16
|
-
<div class="search-hits"></div>
|
17
|
-
{%- endcase -%}
|
1
|
+
<div class="search-content__inner-wrap">
|
2
|
+
{%- assign search_provider = site.search_provider | default: "lunr" -%}
|
3
|
+
{%- case search_provider -%}
|
4
|
+
{%- when "lunr" -%}
|
5
|
+
<input type="text" id="search" class="search-input" tabindex="-1" placeholder="{{ site.data.ui-text[site.locale].search_placeholder_text | default: 'Enter your search term...' }}" />
|
6
|
+
<div id="results" class="results"></div>
|
7
|
+
{%- when "google" -%}
|
8
|
+
<form onsubmit="return executeQuery();" id="cse-search-box-form-id">
|
9
|
+
<input type="text" id="cse-search-input-box-id" class="search-input" tabindex="-1" placeholder="{{ site.data.ui-text[site.locale].search_placeholder_text | default: 'Enter your search term...' }}" />
|
10
|
+
</form>
|
11
|
+
<div id="results" class="results">
|
12
|
+
<gcse:searchresults-only></gcse:searchresults-only>
|
13
|
+
</div>
|
14
|
+
{%- when "algolia" -%}
|
15
|
+
<div class="search-searchbar"></div>
|
16
|
+
<div class="search-hits"></div>
|
17
|
+
{%- endcase -%}
|
18
18
|
</div>
|
data/_includes/seo.html
CHANGED
@@ -1,164 +1,164 @@
|
|
1
|
-
<!-- begin _includes/seo.html -->
|
2
|
-
{%- if site.url -%}
|
3
|
-
{%- assign seo_url = site.url | append: site.baseurl -%}
|
4
|
-
{%- endif -%}
|
5
|
-
{%- assign seo_url = seo_url | default: site.github.url -%}
|
6
|
-
|
7
|
-
{% assign title_separator = site.title_separator | default: '-' | replace: '|', '|' %}
|
8
|
-
|
9
|
-
{%- if page.title -%}
|
10
|
-
{%- assign seo_title = page.title | append: " " | append: title_separator | append: " " | append: site.title -%}
|
11
|
-
{%- endif -%}
|
12
|
-
|
13
|
-
{%- if seo_title -%}
|
14
|
-
{%- assign seo_title = seo_title | markdownify | strip_html | strip_newlines | escape_once -%}
|
15
|
-
{%- endif -%}
|
16
|
-
|
17
|
-
{%- assign canonical_url = page.url | replace: "index.html", "" | absolute_url %}
|
18
|
-
|
19
|
-
{%- assign seo_description = page.description | default: page.excerpt | default: site.description -%}
|
20
|
-
{%- if seo_description -%}
|
21
|
-
{%- assign seo_description = seo_description | markdownify | strip_html | strip_newlines | escape_once -%}
|
22
|
-
{%- endif -%}
|
23
|
-
|
24
|
-
{%- assign author = page.author | default: page.authors[0] | default: site:author -%}
|
25
|
-
{%- assign author = site.data.authors[author] | default: author -%}
|
26
|
-
|
27
|
-
{%- if author.twitter -%}
|
28
|
-
{%- assign author_twitter = author.twitter | replace: "@", "" -%}
|
29
|
-
{%- endif -%}
|
30
|
-
|
31
|
-
{%- assign page_large_image = page.header.og_image | default: page.header.overlay_image | default: page.header.image -%}
|
32
|
-
{%- unless page_large_image contains '://' -%}
|
33
|
-
{%- assign page_large_image = page_large_image | absolute_url -%}
|
34
|
-
{%- endunless -%}
|
35
|
-
{%- assign page_large_image = page_large_image | escape -%}
|
36
|
-
|
37
|
-
{%- assign page_teaser_image = page.header.teaser | default: site.og_image -%}
|
38
|
-
{%- unless page_teaser_image contains '://' -%}
|
39
|
-
{%- assign page_teaser_image = page_teaser_image | absolute_url -%}
|
40
|
-
{%- endunless -%}
|
41
|
-
{%- assign page_teaser_image = page_teaser_image | escape -%}
|
42
|
-
|
43
|
-
{%- assign site_og_image = site.og_image -%}
|
44
|
-
{%- unless site_og_image contains '://' -%}
|
45
|
-
{%- assign site_og_image = site_og_image | absolute_url -%}
|
46
|
-
{%- endunless -%}
|
47
|
-
{%- assign site_og_image = site_og_image | escape -%}
|
48
|
-
|
49
|
-
{%- if page.date -%}
|
50
|
-
{%- assign og_type = "article" -%}
|
51
|
-
{%- else -%}
|
52
|
-
{%- assign og_type = "website" -%}
|
53
|
-
{%- endif -%}
|
54
|
-
|
55
|
-
<title>{{ seo_title | default: site.title }}{% if paginator %}{% unless paginator.page == 1 %} {{ title_separator }} {{ site.data.ui-text[site.locale].page | default: "Page" }} {{ paginator.page }}{% endunless %}{% endif %}</title>
|
56
|
-
<meta name="description" content="{{ seo_description }}">
|
57
|
-
|
58
|
-
{% if author.name %}
|
59
|
-
<meta name="author" content="{{ author.name | default: author }}">
|
60
|
-
{% endif %}
|
61
|
-
|
62
|
-
<meta property="og:type" content="{{ og_type }}">
|
63
|
-
<meta property="og:locale" content="{{ site.locale | replace: "-", "_" | default: "en_US" }}">
|
64
|
-
<meta property="og:site_name" content="{{ site.title }}">
|
65
|
-
<meta property="og:title" content="{{ page.title | default: site.title | markdownify | strip_html | strip_newlines | escape_once }}">
|
66
|
-
<meta property="og:url" content="{{ canonical_url }}">
|
67
|
-
|
68
|
-
{% if page.excerpt %}
|
69
|
-
<meta property="og:description" content="{{ seo_description }}">
|
70
|
-
{% endif %}
|
71
|
-
|
72
|
-
{% if page_large_image %}
|
73
|
-
<meta property="og:image" content="{{ page_large_image }}">
|
74
|
-
{% elsif page_teaser_image %}
|
75
|
-
<meta property="og:image" content="{{ page_teaser_image }}">
|
76
|
-
{% endif %}
|
77
|
-
|
78
|
-
{% if site.twitter.username %}
|
79
|
-
<meta name="twitter:site" content="@{{ site.twitter.username | replace: "@", "" }}">
|
80
|
-
<meta name="twitter:title" content="{{ page.title | default: site.title | markdownify | strip_html | strip_newlines | escape_once }}">
|
81
|
-
<meta name="twitter:description" content="{{ seo_description }}">
|
82
|
-
<meta name="twitter:url" content="{{ canonical_url }}">
|
83
|
-
|
84
|
-
{% if page_large_image %}
|
85
|
-
<meta name="twitter:card" content="summary_large_image">
|
86
|
-
<meta name="twitter:image" content="{{ page_large_image }}">
|
87
|
-
{% else %}
|
88
|
-
<meta name="twitter:card" content="summary">
|
89
|
-
{% if page_teaser_image %}
|
90
|
-
<meta name="twitter:image" content="{{ page_teaser_image }}">
|
91
|
-
{% endif %}
|
92
|
-
{% endif %}
|
93
|
-
|
94
|
-
{% if author_twitter %}
|
95
|
-
<meta name="twitter:creator" content="@{{ author_twitter }}">
|
96
|
-
{% endif %}
|
97
|
-
{% endif %}
|
98
|
-
|
99
|
-
{% if page.date %}
|
100
|
-
<meta property="article:published_time" content="{{ page.date | date_to_xmlschema }}">
|
101
|
-
{% endif %}
|
102
|
-
|
103
|
-
{% if og_type == "article" and page.last_modified_at %}
|
104
|
-
<meta property="article:modified_time" content="{{ page.last_modified_at | date_to_xmlschema }}">
|
105
|
-
{% endif %}
|
106
|
-
|
107
|
-
{% if site.facebook %}
|
108
|
-
{% if site.facebook.publisher %}
|
109
|
-
<meta property="article:publisher" content="{{ site.facebook.publisher }}">
|
110
|
-
{% endif %}
|
111
|
-
|
112
|
-
{% if site.facebook.app_id %}
|
113
|
-
<meta property="fb:app_id" content="{{ site.facebook.app_id }}">
|
114
|
-
{% endif %}
|
115
|
-
{% endif %}
|
116
|
-
|
117
|
-
<link rel="canonical" href="{{ canonical_url }}">
|
118
|
-
|
119
|
-
{% if paginator.previous_page %}
|
120
|
-
<link rel="prev" href="{{ paginator.previous_page_path | absolute_url }}">
|
121
|
-
{% endif %}
|
122
|
-
{% if paginator.next_page %}
|
123
|
-
<link rel="next" href="{{ paginator.next_page_path | absolute_url }}">
|
124
|
-
{% endif %}
|
125
|
-
|
126
|
-
{% if site.og_image %}
|
127
|
-
<script type="application/ld+json">
|
128
|
-
{
|
129
|
-
"@context": "http://schema.org",
|
130
|
-
"@type": "Organization",
|
131
|
-
"url": {{ seo_url | jsonify }},
|
132
|
-
"logo": {{ site_og_image | jsonify }}
|
133
|
-
}
|
134
|
-
</script>
|
135
|
-
{% endif %}
|
136
|
-
|
137
|
-
{% if site.social %}
|
138
|
-
<script type="application/ld+json">
|
139
|
-
{
|
140
|
-
"@context": "http://schema.org",
|
141
|
-
"@type": "{% if site.social.type %}{{ site.social.type }}{% else %}Person{% endif %}",
|
142
|
-
"name": {{ site.social.name | default: site.name | jsonify }},
|
143
|
-
"url": {{ seo_url | jsonify }},
|
144
|
-
"sameAs": {{ site.social.links | jsonify }}
|
145
|
-
}
|
146
|
-
</script>
|
147
|
-
{% endif %}
|
148
|
-
|
149
|
-
{% if site.google_site_verification %}
|
150
|
-
<meta name="google-site-verification" content="{{ site.google_site_verification }}" />
|
151
|
-
{% endif %}
|
152
|
-
{% if site.bing_site_verification %}
|
153
|
-
<meta name="msvalidate.01" content="{{ site.bing_site_verification }}">
|
154
|
-
{% endif %}
|
155
|
-
{% if site.alexa_site_verification %}
|
156
|
-
<meta name="alexaVerifyID" content="{{ site.alexa_site_verification }}">
|
157
|
-
{% endif %}
|
158
|
-
{% if site.yandex_site_verification %}
|
159
|
-
<meta name="yandex-verification" content="{{ site.yandex_site_verification }}">
|
160
|
-
{% endif %}
|
161
|
-
{% if site.naver_site_verification %}
|
162
|
-
<meta name="naver-site-verification" content="{{ site.naver_site_verification }}">
|
163
|
-
{% endif %}
|
164
|
-
<!-- end _includes/seo.html -->
|
1
|
+
<!-- begin _includes/seo.html -->
|
2
|
+
{%- if site.url -%}
|
3
|
+
{%- assign seo_url = site.url | append: site.baseurl -%}
|
4
|
+
{%- endif -%}
|
5
|
+
{%- assign seo_url = seo_url | default: site.github.url -%}
|
6
|
+
|
7
|
+
{% assign title_separator = site.title_separator | default: '-' | replace: '|', '|' %}
|
8
|
+
|
9
|
+
{%- if page.title -%}
|
10
|
+
{%- assign seo_title = page.title | append: " " | append: title_separator | append: " " | append: site.title -%}
|
11
|
+
{%- endif -%}
|
12
|
+
|
13
|
+
{%- if seo_title -%}
|
14
|
+
{%- assign seo_title = seo_title | markdownify | strip_html | strip_newlines | escape_once -%}
|
15
|
+
{%- endif -%}
|
16
|
+
|
17
|
+
{%- assign canonical_url = page.url | replace: "index.html", "" | absolute_url %}
|
18
|
+
|
19
|
+
{%- assign seo_description = page.description | default: page.excerpt | default: site.description -%}
|
20
|
+
{%- if seo_description -%}
|
21
|
+
{%- assign seo_description = seo_description | markdownify | strip_html | strip_newlines | escape_once -%}
|
22
|
+
{%- endif -%}
|
23
|
+
|
24
|
+
{%- assign author = page.author | default: page.authors[0] | default: site:author -%}
|
25
|
+
{%- assign author = site.data.authors[author] | default: author -%}
|
26
|
+
|
27
|
+
{%- if author.twitter -%}
|
28
|
+
{%- assign author_twitter = author.twitter | replace: "@", "" -%}
|
29
|
+
{%- endif -%}
|
30
|
+
|
31
|
+
{%- assign page_large_image = page.header.og_image | default: page.header.overlay_image | default: page.header.image -%}
|
32
|
+
{%- unless page_large_image contains '://' -%}
|
33
|
+
{%- assign page_large_image = page_large_image | absolute_url -%}
|
34
|
+
{%- endunless -%}
|
35
|
+
{%- assign page_large_image = page_large_image | escape -%}
|
36
|
+
|
37
|
+
{%- assign page_teaser_image = page.header.teaser | default: site.og_image -%}
|
38
|
+
{%- unless page_teaser_image contains '://' -%}
|
39
|
+
{%- assign page_teaser_image = page_teaser_image | absolute_url -%}
|
40
|
+
{%- endunless -%}
|
41
|
+
{%- assign page_teaser_image = page_teaser_image | escape -%}
|
42
|
+
|
43
|
+
{%- assign site_og_image = site.og_image -%}
|
44
|
+
{%- unless site_og_image contains '://' -%}
|
45
|
+
{%- assign site_og_image = site_og_image | absolute_url -%}
|
46
|
+
{%- endunless -%}
|
47
|
+
{%- assign site_og_image = site_og_image | escape -%}
|
48
|
+
|
49
|
+
{%- if page.date -%}
|
50
|
+
{%- assign og_type = "article" -%}
|
51
|
+
{%- else -%}
|
52
|
+
{%- assign og_type = "website" -%}
|
53
|
+
{%- endif -%}
|
54
|
+
|
55
|
+
<title>{{ seo_title | default: site.title }}{% if paginator %}{% unless paginator.page == 1 %} {{ title_separator }} {{ site.data.ui-text[site.locale].page | default: "Page" }} {{ paginator.page }}{% endunless %}{% endif %}</title>
|
56
|
+
<meta name="description" content="{{ seo_description }}">
|
57
|
+
|
58
|
+
{% if author.name %}
|
59
|
+
<meta name="author" content="{{ author.name | default: author }}">
|
60
|
+
{% endif %}
|
61
|
+
|
62
|
+
<meta property="og:type" content="{{ og_type }}">
|
63
|
+
<meta property="og:locale" content="{{ site.locale | replace: "-", "_" | default: "en_US" }}">
|
64
|
+
<meta property="og:site_name" content="{{ site.title }}">
|
65
|
+
<meta property="og:title" content="{{ page.title | default: site.title | markdownify | strip_html | strip_newlines | escape_once }}">
|
66
|
+
<meta property="og:url" content="{{ canonical_url }}">
|
67
|
+
|
68
|
+
{% if page.excerpt %}
|
69
|
+
<meta property="og:description" content="{{ seo_description }}">
|
70
|
+
{% endif %}
|
71
|
+
|
72
|
+
{% if page_large_image %}
|
73
|
+
<meta property="og:image" content="{{ page_large_image }}">
|
74
|
+
{% elsif page_teaser_image %}
|
75
|
+
<meta property="og:image" content="{{ page_teaser_image }}">
|
76
|
+
{% endif %}
|
77
|
+
|
78
|
+
{% if site.twitter.username %}
|
79
|
+
<meta name="twitter:site" content="@{{ site.twitter.username | replace: "@", "" }}">
|
80
|
+
<meta name="twitter:title" content="{{ page.title | default: site.title | markdownify | strip_html | strip_newlines | escape_once }}">
|
81
|
+
<meta name="twitter:description" content="{{ seo_description }}">
|
82
|
+
<meta name="twitter:url" content="{{ canonical_url }}">
|
83
|
+
|
84
|
+
{% if page_large_image %}
|
85
|
+
<meta name="twitter:card" content="summary_large_image">
|
86
|
+
<meta name="twitter:image" content="{{ page_large_image }}">
|
87
|
+
{% else %}
|
88
|
+
<meta name="twitter:card" content="summary">
|
89
|
+
{% if page_teaser_image %}
|
90
|
+
<meta name="twitter:image" content="{{ page_teaser_image }}">
|
91
|
+
{% endif %}
|
92
|
+
{% endif %}
|
93
|
+
|
94
|
+
{% if author_twitter %}
|
95
|
+
<meta name="twitter:creator" content="@{{ author_twitter }}">
|
96
|
+
{% endif %}
|
97
|
+
{% endif %}
|
98
|
+
|
99
|
+
{% if page.date %}
|
100
|
+
<meta property="article:published_time" content="{{ page.date | date_to_xmlschema }}">
|
101
|
+
{% endif %}
|
102
|
+
|
103
|
+
{% if og_type == "article" and page.last_modified_at %}
|
104
|
+
<meta property="article:modified_time" content="{{ page.last_modified_at | date_to_xmlschema }}">
|
105
|
+
{% endif %}
|
106
|
+
|
107
|
+
{% if site.facebook %}
|
108
|
+
{% if site.facebook.publisher %}
|
109
|
+
<meta property="article:publisher" content="{{ site.facebook.publisher }}">
|
110
|
+
{% endif %}
|
111
|
+
|
112
|
+
{% if site.facebook.app_id %}
|
113
|
+
<meta property="fb:app_id" content="{{ site.facebook.app_id }}">
|
114
|
+
{% endif %}
|
115
|
+
{% endif %}
|
116
|
+
|
117
|
+
<link rel="canonical" href="{{ canonical_url }}">
|
118
|
+
|
119
|
+
{% if paginator.previous_page %}
|
120
|
+
<link rel="prev" href="{{ paginator.previous_page_path | absolute_url }}">
|
121
|
+
{% endif %}
|
122
|
+
{% if paginator.next_page %}
|
123
|
+
<link rel="next" href="{{ paginator.next_page_path | absolute_url }}">
|
124
|
+
{% endif %}
|
125
|
+
|
126
|
+
{% if site.og_image %}
|
127
|
+
<script type="application/ld+json">
|
128
|
+
{
|
129
|
+
"@context": "http://schema.org",
|
130
|
+
"@type": "Organization",
|
131
|
+
"url": {{ seo_url | jsonify }},
|
132
|
+
"logo": {{ site_og_image | jsonify }}
|
133
|
+
}
|
134
|
+
</script>
|
135
|
+
{% endif %}
|
136
|
+
|
137
|
+
{% if site.social %}
|
138
|
+
<script type="application/ld+json">
|
139
|
+
{
|
140
|
+
"@context": "http://schema.org",
|
141
|
+
"@type": "{% if site.social.type %}{{ site.social.type }}{% else %}Person{% endif %}",
|
142
|
+
"name": {{ site.social.name | default: site.name | jsonify }},
|
143
|
+
"url": {{ seo_url | jsonify }},
|
144
|
+
"sameAs": {{ site.social.links | jsonify }}
|
145
|
+
}
|
146
|
+
</script>
|
147
|
+
{% endif %}
|
148
|
+
|
149
|
+
{% if site.google_site_verification %}
|
150
|
+
<meta name="google-site-verification" content="{{ site.google_site_verification }}" />
|
151
|
+
{% endif %}
|
152
|
+
{% if site.bing_site_verification %}
|
153
|
+
<meta name="msvalidate.01" content="{{ site.bing_site_verification }}">
|
154
|
+
{% endif %}
|
155
|
+
{% if site.alexa_site_verification %}
|
156
|
+
<meta name="alexaVerifyID" content="{{ site.alexa_site_verification }}">
|
157
|
+
{% endif %}
|
158
|
+
{% if site.yandex_site_verification %}
|
159
|
+
<meta name="yandex-verification" content="{{ site.yandex_site_verification }}">
|
160
|
+
{% endif %}
|
161
|
+
{% if site.naver_site_verification %}
|
162
|
+
<meta name="naver-site-verification" content="{{ site.naver_site_verification }}">
|
163
|
+
{% endif %}
|
164
|
+
<!-- end _includes/seo.html -->
|