kaschber 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/LICENSE +21 -0
- data/README.md +102 -0
- data/_config.yml +44 -0
- data/_includes/custom-head.html +6 -0
- data/_includes/custom-js.html +3 -0
- data/_includes/custom-post-content.html +3 -0
- data/_includes/dynamic_title.html +16 -0
- data/_includes/footer-nav.html +4 -0
- data/_includes/head.html +12 -0
- data/_includes/icons/avatar.html +1 -0
- data/_includes/icons/facebook.html +1 -0
- data/_includes/icons/fire.html +3 -0
- data/_includes/icons/github.html +3 -0
- data/_includes/icons/loader.html +11 -0
- data/_includes/icons/lock.html +5 -0
- data/_includes/icons/rss.html +1 -0
- data/_includes/icons/search.html +1 -0
- data/_includes/icons/twitter.html +1 -0
- data/_includes/post-card.html +58 -0
- data/_layouts/author.html +65 -0
- data/_layouts/default.html +118 -0
- data/_layouts/home.html +45 -0
- data/_layouts/page.html +35 -0
- data/_layouts/post.html +109 -0
- data/_layouts/tag.html +55 -0
- data/assets/built/global.css +2 -0
- data/assets/built/global.css.map +1 -0
- data/assets/built/kaschber.js +2 -0
- data/assets/built/kaschber.js.map +1 -0
- data/assets/built/screen.css +2 -0
- data/assets/built/screen.css.map +1 -0
- metadata +144 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 4035146d578470fc8fd8cfd7c4be2412178be2841bc2952cc298429895a66ed3
|
4
|
+
data.tar.gz: 15a28564cb6997bd7b0f2dc5c8f80424b28e97e1e8f2d524403d1f5937fab0d8
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: e2e516cf2e93b8229686bc7ebeb6cca663eba6af72bf012a83238a6df786014a5fb35187b431067447fd97adf8fbe93f95ba8c32318760b34c58a96514d28df4
|
7
|
+
data.tar.gz: 39b6df85462a506819ae9b866da748793885d5c40d1b60d7c10c691b6a0c6b7a14a63b7336b75e45613d01051187bc9af70fb3a2aca73be368682af4f6a6b7a6
|
data/LICENSE
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
MIT License
|
2
|
+
|
3
|
+
Copyright (c) 2022 Agraphie
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
13
|
+
copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
21
|
+
SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,102 @@
|
|
1
|
+
# Kaschber
|
2
|
+
|
3
|
+
Kaschber is a Jekyll port for Ghost's default theme Casper [https://github.com/TryGhost/Casper](https://github.com/TryGhost/Casper). It's unopinionated and tries to stick as closely as possible to the Casper stylings and layout. It only comes with three pre-defined plugins: jekyll-feed, jekyll-paginate-v2 and jekyll-seo.
|
4
|
+
|
5
|
+
The overall goal is to be a simple default theme like minima, looking closely to Casper and trying to be as lean and flexible as possible.
|
6
|
+
|
7
|
+
For a demo of Ghost see [https://demo.ghost.io/](https://demo.ghost.io/).
|
8
|
+
|
9
|
+
# Features
|
10
|
+
- (Auto) dark mode
|
11
|
+
- Full author pages & information via Jekyll collections
|
12
|
+
- Auto generated tag pages plus custimisation via Jekyll collections
|
13
|
+
- Pagination via jekyll-paginate-v2
|
14
|
+
- Atom Feeds by [Jekyll-feed](https://github.com/jekyll/jekyll-feed)
|
15
|
+
|
16
|
+
# Installation
|
17
|
+
Add this line to your Jekyll site's Gemfile:
|
18
|
+
```
|
19
|
+
gem "kaschber"
|
20
|
+
```
|
21
|
+
|
22
|
+
And then execute:
|
23
|
+
```bash
|
24
|
+
$ bundle
|
25
|
+
```
|
26
|
+
|
27
|
+
# Usage
|
28
|
+
Change the theme in your config file to Kaschber
|
29
|
+
```
|
30
|
+
theme: kaschber
|
31
|
+
```
|
32
|
+
|
33
|
+
Then change your index.html or index.md to look like this
|
34
|
+
```
|
35
|
+
---
|
36
|
+
layout: home
|
37
|
+
current: home
|
38
|
+
class: 'home-template'
|
39
|
+
---
|
40
|
+
```
|
41
|
+
|
42
|
+
If you have a custom index.html, you will have to copy the index.html from the Git repository and add your changes manually.
|
43
|
+
|
44
|
+
## Customisation
|
45
|
+
You can specifiy these customisation options in your `_config.yml`
|
46
|
+
|
47
|
+
| Config | Default | Options |
|
48
|
+
|-------------------------|-------------------|-----------------------------------|
|
49
|
+
| title_font | Modern sans-serif | Modern sans-serif, Elegant serif |
|
50
|
+
| body_font | Modern sans-serif | Modern sans-serif, Elegant serif |
|
51
|
+
| header_style | Center aligned | Center aligned, Left, aligned, Hidden |
|
52
|
+
| show_logo_in_navigation | false | True, False |
|
53
|
+
| feed_layout | Classic | Classic, Grid, List |
|
54
|
+
| color_scheme | Auto | Light, Dark, Auto |
|
55
|
+
| post_image_style | Wide | Wide, Full, Small, Hidden |
|
56
|
+
|
57
|
+
Kaschber also features several points to inject your custom code into the template. You can create
|
58
|
+
- `_includes/custom-head.html` to include custom css or any other tags which get rendered in the head section
|
59
|
+
- `_includes/custom-js.html` to include any additional Javascript at the bottom of your page
|
60
|
+
- `_includes/custom-post-content.html` to include any custom post-specific content which gets inserted in every post. E.g. a table of content tag
|
61
|
+
|
62
|
+
## Authors
|
63
|
+
To include author information, just create a folder called `_authors` and create your author information via markdown or html files. E.g.
|
64
|
+
```
|
65
|
+
---
|
66
|
+
username: Ghost
|
67
|
+
name: Casper Ghost
|
68
|
+
website: https://github.com/TryGhost/Casper/
|
69
|
+
bio: The professional publishing platform
|
70
|
+
picture: assets/images/ghost.png
|
71
|
+
facebook_url: ghost
|
72
|
+
twitter_url: tryghost
|
73
|
+
cover: False
|
74
|
+
---
|
75
|
+
```
|
76
|
+
|
77
|
+
## Tags
|
78
|
+
To create tags specifically, create a folder `_tags` and insert your tags there as markdown or html file. E.g.
|
79
|
+
```
|
80
|
+
name: speeches
|
81
|
+
description: Some of the greatest words ever spoken.
|
82
|
+
cover: assets/images/speeches.jpg
|
83
|
+
```
|
84
|
+
|
85
|
+
# Contribute
|
86
|
+
If you would like to contribute, please keep the files as closely as possible to the original Ghost handlebar files. This will make maintenance easier. This is also the reason why the files haven't been really broken down into smaller parts.
|
87
|
+
|
88
|
+
## Build
|
89
|
+
To build the files locally, you have to have npm and gulp installed.
|
90
|
+
```
|
91
|
+
$ gulp build
|
92
|
+
```
|
93
|
+
|
94
|
+
To test your changes locally execute
|
95
|
+
```bash
|
96
|
+
$ gem build
|
97
|
+
$ gem install kaschber-<current-version-in-gemspec>
|
98
|
+
```
|
99
|
+
|
100
|
+
|
101
|
+
# Acknowledgements
|
102
|
+
This theme was heavily inspired by [Jasper2](https://github.com/jekyllt/jasper2).
|
data/_config.yml
ADDED
@@ -0,0 +1,44 @@
|
|
1
|
+
feed_layout: "Classic"
|
2
|
+
color_scheme: "Auto"
|
3
|
+
language: 'en-uk'
|
4
|
+
|
5
|
+
# gems and other configs
|
6
|
+
plugins:
|
7
|
+
- jekyll-feed
|
8
|
+
- jekyll-seo-tag
|
9
|
+
- jekyll-paginate-v2
|
10
|
+
|
11
|
+
feed:
|
12
|
+
path: feed.xml
|
13
|
+
|
14
|
+
collections:
|
15
|
+
authors:
|
16
|
+
output: true
|
17
|
+
tags:
|
18
|
+
output: true
|
19
|
+
|
20
|
+
|
21
|
+
defaults:
|
22
|
+
- scope:
|
23
|
+
path: ""
|
24
|
+
type: "authors"
|
25
|
+
values:
|
26
|
+
layout: author
|
27
|
+
current: author
|
28
|
+
cover: false
|
29
|
+
class: 'author-template'
|
30
|
+
label: Author
|
31
|
+
- scope:
|
32
|
+
path: ""
|
33
|
+
type: "tags"
|
34
|
+
values:
|
35
|
+
layout: tag
|
36
|
+
current: tag
|
37
|
+
cover: false
|
38
|
+
class: 'tag-template'
|
39
|
+
label: Tag
|
40
|
+
|
41
|
+
tag_page_layout: tag
|
42
|
+
tag_page_dir: tags
|
43
|
+
tag_page_data:
|
44
|
+
class: 'tag-template'
|
@@ -0,0 +1,6 @@
|
|
1
|
+
{% comment %}
|
2
|
+
Placeholder to allow defining custom head, in principle, you can add anything here, e.g. favicons:
|
3
|
+
|
4
|
+
1. Head over to https://realfavicongenerator.net/ to add your own favicons.
|
5
|
+
2. Customize default _includes/custom-head.html in your source directory and insert the given code snippet.
|
6
|
+
{% endcomment %}
|
@@ -0,0 +1,16 @@
|
|
1
|
+
<!-- dynamically fixing the title for tag/author pages -->
|
2
|
+
{% if page.url %}
|
3
|
+
{% if page.url contains "tags/" %}
|
4
|
+
{% assign title = page.url | remove: 'tag' | remove: '/' | url_decode | replace: '-', ' ' %}
|
5
|
+
{% elsif page.url contains "authors/" %}
|
6
|
+
{% assign username = page.url | remove: 'author' | remove: '/' | replace: '-', ' ' | remove: ' ' %}
|
7
|
+
{% for author in site.authors %}
|
8
|
+
{% if author.username == username %}
|
9
|
+
{% assign title = author.name %}
|
10
|
+
{% endif %}
|
11
|
+
{% endfor %}
|
12
|
+
{% endif %}
|
13
|
+
{% endif %}
|
14
|
+
{% if title %}
|
15
|
+
{% assign title = title | append: ' - ' | append: site.title %}
|
16
|
+
{% endif %}
|
data/_includes/head.html
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="evenodd"><path d="M3.513 18.998C4.749 15.504 8.082 13 12 13s7.251 2.504 8.487 5.998C18.47 21.442 15.417 23 12 23s-6.47-1.558-8.487-4.002zM12 12c2.21 0 4-2.79 4-5s-1.79-4-4-4-4 1.79-4 4 1.79 5 4 5z" fill="#FFF"/></g></svg>
|
@@ -0,0 +1 @@
|
|
1
|
+
<svg class="icon" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" fill="currentColor"><path d="M23.9981 11.9991C23.9981 5.37216 18.626 0 11.9991 0C5.37216 0 0 5.37216 0 11.9991C0 17.9882 4.38789 22.9522 10.1242 23.8524V15.4676H7.07758V11.9991H10.1242V9.35553C10.1242 6.34826 11.9156 4.68714 14.6564 4.68714C15.9692 4.68714 17.3424 4.92149 17.3424 4.92149V7.87439H15.8294C14.3388 7.87439 13.8739 8.79933 13.8739 9.74824V11.9991H17.2018L16.6698 15.4676H13.8739V23.8524C19.6103 22.9522 23.9981 17.9882 23.9981 11.9991Z"/></svg>
|
@@ -0,0 +1,3 @@
|
|
1
|
+
<svg width="16" height="17" viewBox="0 0 16 17" fill="none" xmlns="http://www.w3.org/2000/svg">
|
2
|
+
<path d="M4.49365 4.58752C3.53115 6.03752 2.74365 7.70002 2.74365 9.25002C2.74365 10.6424 3.29678 11.9778 4.28134 12.9623C5.26591 13.9469 6.60127 14.5 7.99365 14.5C9.38604 14.5 10.7214 13.9469 11.706 12.9623C12.6905 11.9778 13.2437 10.6424 13.2437 9.25002C13.2437 6.00002 10.9937 3.50002 9.16865 1.68127L6.99365 6.25002L4.49365 4.58752Z" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
|
3
|
+
</svg>
|
@@ -0,0 +1,3 @@
|
|
1
|
+
<svg viewBox="0 0 16 16" version="1.1" class="icon" fill="currentColor">
|
2
|
+
<path fill-rule="evenodd" d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0016 8c0-4.42-3.58-8-8-8z"></path>
|
3
|
+
</svg>
|
@@ -0,0 +1,11 @@
|
|
1
|
+
<svg version="1.1" id="loader-1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
|
2
|
+
y="0px" width="40px" height="40px" viewBox="0 0 40 40" enable-background="new 0 0 40 40" xml:space="preserve">
|
3
|
+
<path opacity="0.2" fill="#000" d="M20.201,5.169c-8.254,0-14.946,6.692-14.946,14.946c0,8.255,6.692,14.946,14.946,14.946
|
4
|
+
s14.946-6.691,14.946-14.946C35.146,11.861,28.455,5.169,20.201,5.169z M20.201,31.749c-6.425,0-11.634-5.208-11.634-11.634
|
5
|
+
c0-6.425,5.209-11.634,11.634-11.634c6.425,0,11.633,5.209,11.633,11.634C31.834,26.541,26.626,31.749,20.201,31.749z" />
|
6
|
+
<path fill="#000" d="M26.013,10.047l1.654-2.866c-2.198-1.272-4.743-2.012-7.466-2.012h0v3.312h0
|
7
|
+
C22.32,8.481,24.301,9.057,26.013,10.047z">
|
8
|
+
<animateTransform attributeType="xml" attributeName="transform" type="rotate" from="0 20 20" to="360 20 20"
|
9
|
+
dur="0.5s" repeatCount="indefinite" />
|
10
|
+
</path>
|
11
|
+
</svg>
|
@@ -0,0 +1,5 @@
|
|
1
|
+
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
|
2
|
+
<path d="M16.25 6.875H3.75C3.40482 6.875 3.125 7.15482 3.125 7.5V16.25C3.125 16.5952 3.40482 16.875 3.75 16.875H16.25C16.5952 16.875 16.875 16.5952 16.875 16.25V7.5C16.875 7.15482 16.5952 6.875 16.25 6.875Z" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
|
3
|
+
<path d="M7.1875 6.875V4.0625C7.1875 3.31658 7.48382 2.60121 8.01126 2.07376C8.53871 1.54632 9.25408 1.25 10 1.25C10.7459 1.25 11.4613 1.54632 11.9887 2.07376C12.5162 2.60121 12.8125 3.31658 12.8125 4.0625V6.875" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
|
4
|
+
<path d="M10 13.125C10.6904 13.125 11.25 12.5654 11.25 11.875C11.25 11.1846 10.6904 10.625 10 10.625C9.30964 10.625 8.75 11.1846 8.75 11.875C8.75 12.5654 9.30964 13.125 10 13.125Z" fill="currentColor"></path>
|
5
|
+
</svg>
|
@@ -0,0 +1 @@
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" class="icon"><circle cx="6.18" cy="17.82" r="2.18" fill="currentColor"/><path fill="currentColor" d="M4 4.44v2.83c7.03 0 12.73 5.7 12.73 12.73h2.83c0-8.59-6.97-15.56-15.56-15.56zm0 5.66v2.83c3.9 0 7.07 3.17 7.07 7.07h2.83c0-5.47-4.43-9.9-9.9-9.9z"/></svg>
|
@@ -0,0 +1 @@
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2" width="20" height="20"><path stroke-linecap="round" stroke-linejoin="round" d="M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"></path></svg>
|
@@ -0,0 +1 @@
|
|
1
|
+
<svg class="icon" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" fill="currentColor"><path d="M23.954 4.569c-.885.389-1.83.654-2.825.775 1.014-.611 1.794-1.574 2.163-2.723-.951.555-2.005.959-3.127 1.184-.896-.959-2.173-1.559-3.591-1.559-2.717 0-4.92 2.203-4.92 4.917 0 .39.045.765.127 1.124C7.691 8.094 4.066 6.13 1.64 3.161c-.427.722-.666 1.561-.666 2.475 0 1.71.87 3.213 2.188 4.096-.807-.026-1.566-.248-2.228-.616v.061c0 2.385 1.693 4.374 3.946 4.827-.413.111-.849.171-1.296.171-.314 0-.615-.03-.916-.086.631 1.953 2.445 3.377 4.604 3.417-1.68 1.319-3.809 2.105-6.102 2.105-.39 0-.779-.023-1.17-.067 2.189 1.394 4.768 2.209 7.557 2.209 9.054 0 13.999-7.496 13.999-13.986 0-.209 0-.42-.015-.63.961-.689 1.8-1.56 2.46-2.548l-.047-.02z"/></svg>
|
@@ -0,0 +1,58 @@
|
|
1
|
+
{% assign words_per_minute = site.words_per_minute | default: 200 %}
|
2
|
+
{% assign post = include.post %}
|
3
|
+
|
4
|
+
<article class="post-card {{post_class}}{% if site.feed_layout == "Classic" %} {% if page.current == "home" %}
|
5
|
+
{% if site.posts.first == post %} post-card-large{% elsif site.posts[1] == post or site.posts[2] == post %} dynamic{% endif %}{% endif %}{% endif %}
|
6
|
+
{% if site.feed_layout == "Grid" %} keep-ratio{% endif %}{% if site.feed_layout == "List" %}{% if post.current == "home, paged" %} post-card-large{% endif %}{% endif %}">
|
7
|
+
|
8
|
+
{% if post.cover %}
|
9
|
+
<a class="post-card-image-link" href="{{ site.baseurl }}{{ post.url | remove_first: '/' }}">
|
10
|
+
|
11
|
+
<img class="post-card-image"
|
12
|
+
src="{{ site.baseurl }}{{ post.cover }}"
|
13
|
+
alt="{% if post.cover_alt %}{{post.cover_alt}}{% else %}{{post.title}}{% endif %}"
|
14
|
+
loading="lazy"
|
15
|
+
/>
|
16
|
+
</a>
|
17
|
+
{% endif %}
|
18
|
+
|
19
|
+
<div class="post-card-content">
|
20
|
+
|
21
|
+
<a class="post-card-content-link" href="{{ site.baseurl }}{{ post.url | remove_first: '/' }}">
|
22
|
+
|
23
|
+
<header class="post-card-header">
|
24
|
+
<div class="post-card-tags">
|
25
|
+
{% if post.tags.size > 0 %}
|
26
|
+
<span class="post-card-primary-tag">{{ post.tags | first | capitalize }}</span>
|
27
|
+
{% endif %}
|
28
|
+
{% if post.featured %}
|
29
|
+
<span class="post-card-featured">{% include icons/fire.html %} Featured</span>
|
30
|
+
{% endif %}
|
31
|
+
</div>
|
32
|
+
<h2 class="post-card-title">
|
33
|
+
{{post.title}}
|
34
|
+
</h2>
|
35
|
+
</header>
|
36
|
+
{% if post.custom_excerpt %}
|
37
|
+
<div class="post-card-excerpt">{{post.custom_excerpt}}</div>
|
38
|
+
{% else %}
|
39
|
+
<div class="post-card-excerpt">{{ post.excerpt | strip_html }}</div>
|
40
|
+
{% endif %}
|
41
|
+
</a>
|
42
|
+
|
43
|
+
<footer class="post-card-meta">
|
44
|
+
<time class="post-card-meta-date" datetime="{{ post.date | date:'%e %B %Y' }}">{{ post.date | date:'%e %B %Y' }}</time>
|
45
|
+
{% if post.reading_time %}
|
46
|
+
<span class="post-card-meta-length">{{post.reading_time}}</span>
|
47
|
+
{% endif %}
|
48
|
+
{% assign words = post.content | strip_html | number_of_words %}
|
49
|
+
{% if words <= words_per_minute %}
|
50
|
+
<span class="post-card-meta-length">1 min read</span>
|
51
|
+
{% else %}
|
52
|
+
<span class="post-card-meta-length">{{ words | divided_by:words_per_minute }} min read</span>
|
53
|
+
{% endif %}
|
54
|
+
</footer>
|
55
|
+
|
56
|
+
</div>
|
57
|
+
|
58
|
+
</article>
|
@@ -0,0 +1,65 @@
|
|
1
|
+
---
|
2
|
+
layout: default
|
3
|
+
---
|
4
|
+
|
5
|
+
<main id="site-main" class="site-main outer">
|
6
|
+
<div class="post-feed inner">
|
7
|
+
|
8
|
+
<section class="post-card post-card-large">
|
9
|
+
{%if page.feature_image %}
|
10
|
+
<div class="post-card-image-link">
|
11
|
+
<img class="post-card-image"
|
12
|
+
src="{{ site.baseurl }}{{ page.feature_image }}" alt="{{ page.name }}"
|
13
|
+
/>
|
14
|
+
</div>
|
15
|
+
{% endif %}
|
16
|
+
|
17
|
+
<div class="post-card-content">
|
18
|
+
<div class="post-card-content-link">
|
19
|
+
|
20
|
+
{%if page.picture %}
|
21
|
+
<img class="author-profile-pic" src="{{ site.baseurl }}{{ page.picture }}" alt="{{page.name}}" />
|
22
|
+
{% endif %}
|
23
|
+
|
24
|
+
<header class="post-card-header">
|
25
|
+
<h2 class="post-card-title">{{page.name}}</h2>
|
26
|
+
</header>
|
27
|
+
|
28
|
+
{%if page.bio %}
|
29
|
+
<div class="post-card-excerpt">{{page.bio}}</div>
|
30
|
+
{% endif %}
|
31
|
+
|
32
|
+
<footer class="author-profile-footer">
|
33
|
+
{%if page.location %}
|
34
|
+
<div class="author-profile-location">{{page.location}}</div>
|
35
|
+
{% endif %}
|
36
|
+
<div class="author-profile-meta">
|
37
|
+
{%if page.website %}
|
38
|
+
<a class="author-profile-social-link" href="{{page.website}}" target="_blank" rel="noopener">{{page.website}}</a>
|
39
|
+
{% endif %}
|
40
|
+
{%if page.twitter_url %}
|
41
|
+
<a class="author-profile-social-link" href="{{page.twitter_url}}" target="_blank" rel="noopener">{% include icons/twitter.html %}</a>
|
42
|
+
{% endif %}
|
43
|
+
{%if page.facebook_url %}
|
44
|
+
<a class="author-profile-social-link" href="{{page.facebook_url}}" target="_blank" rel="noopener">{% include icons/facebook.html %}</a>
|
45
|
+
{% endif %}
|
46
|
+
|
47
|
+
{% if page.location %}
|
48
|
+
<div class="author-location">{{ page.location }} <span class="bull">•</span></div>
|
49
|
+
{% endif %}
|
50
|
+
</div>
|
51
|
+
</footer>
|
52
|
+
|
53
|
+
</div>
|
54
|
+
</div>
|
55
|
+
|
56
|
+
</section>
|
57
|
+
|
58
|
+
{% assign filtered_posts = site.posts | where: 'author', page.username %}
|
59
|
+
{% for post in filtered_posts %}
|
60
|
+
{% include post-card.html post=post %}
|
61
|
+
{% endfor %}
|
62
|
+
|
63
|
+
</div>
|
64
|
+
</main>
|
65
|
+
|
@@ -0,0 +1,118 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html lang="{{ site.locale }}"{% if site.color_scheme == "Dark" %} class="dark-mode"{% elsif site.color_scheme == "Auto" %} class="auto-color"{% endif %}>
|
3
|
+
<head>
|
4
|
+
|
5
|
+
{% include dynamic_title.html %}
|
6
|
+
<title>{% if title %}{{ title }}{% elsif page.title %}{{ page.title }}{% else %}{{ site.title }}{% endif %}</title>
|
7
|
+
|
8
|
+
<meta charset="utf-8" />
|
9
|
+
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
10
|
+
<meta name="HandheldFriendly" content="True" />
|
11
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
12
|
+
|
13
|
+
<link rel="stylesheet" type="text/css" href="{{ "/assets/built/global.css" | relative_url }}">
|
14
|
+
<link rel="stylesheet" type="text/css" href="{{ "/assets/built/screen.css" | relative_url }}">
|
15
|
+
|
16
|
+
{% include head.html %}
|
17
|
+
|
18
|
+
</head>
|
19
|
+
<body class="{% if paginator.page > 1 %}paged archive-template{% elsif page.class %}{{ page.class }}{% else %}home-template{% endif %}
|
20
|
+
{% if site.title_font == "Elegant serif" %} has-serif-title{% endif %}{% if site.body_font == "Modern sans-serif" %} has-sans-body{% endif %}
|
21
|
+
{% if site.cover or page.cover %} has-cover {% endif %}{% if page.current == "home" %}{% unless site.show_logo_in_navigation %} no-logo{% endunless %}{% endif %}">
|
22
|
+
<div class="viewport">
|
23
|
+
<header id="gh-head" class="gh-head outer">
|
24
|
+
<nav class="gh-head-inner inner">
|
25
|
+
<div class="gh-head-brand">
|
26
|
+
<a class="gh-head-logo{% unless site.logo %} no-image{% endunless %}" href="{{ site.url }}{{ site.baseurl }}">
|
27
|
+
{% if site.logo %}
|
28
|
+
<img src="{{ site.baseurl }}{{ site.logo }}" alt="{{ site.title }}" />
|
29
|
+
{% else %}
|
30
|
+
{{ site.title }}
|
31
|
+
{% endif %}
|
32
|
+
</a>
|
33
|
+
<div class="gh-head-brand-wrapper">
|
34
|
+
<a class="gh-burger" role="button">
|
35
|
+
<div class="gh-burger-box">
|
36
|
+
<div class="gh-burger-inner"></div>
|
37
|
+
</div>
|
38
|
+
</a>
|
39
|
+
</div>
|
40
|
+
</div>
|
41
|
+
<div class="gh-head-menu">
|
42
|
+
<ul class="nav" role="menu">
|
43
|
+
<li class="nav-home" role="menuitem"><a href="{{site.baseurl}}">Home</a></li>
|
44
|
+
<li class="nav-about" role="menuitem"><a href="{{site.baseurl}}about/">About</a></li>
|
45
|
+
<li class="nav-try-ghost" role="menuitem"><a href="{{site.baseurl}}impressum/">Impressum/Datenschutz</a></li>
|
46
|
+
</ul>
|
47
|
+
</div>
|
48
|
+
<div class="gh-head-actions">
|
49
|
+
<div class="gh-social">
|
50
|
+
{% if site.facebook %}<a href="https://facebook.com/{{ site.facebook }}" target="_blank" rel="noopener" class="gh-social-link gh-social-facebook">Facebook</a>{% endif %}
|
51
|
+
{% if site.twitter %}<a href="https://twitter.com/{{ site.twitter }}" target="_blank" rel="noopener" class="gh-social-link gh-social-twitter">Twitter</a>{% endif %}
|
52
|
+
{% if site.github %}<a href="https://github.com/{{ site.github }}" target="_blank" rel="noopener" class="gh-social-link gh-social-github">{% include icons/github.html %}</a>{% endif %}
|
53
|
+
{% if site.rss %}<a href="{{ site.baseurl }}{% if site.feed.path %}{{site.feed.path}}{% else %}feed.xml{% endif %}" target="_blank" rel="noopener" class="gh-social-link gh-social-rss">{% include icons/rss.html %}</a>{% endif %}
|
54
|
+
</div>
|
55
|
+
<!-- The big email subscribe modal content -->
|
56
|
+
{% if site.subscribers %}
|
57
|
+
<div id="subscribe" class="subscribe-overlay">
|
58
|
+
<a class="subscribe-overlay-close gh-head-button" href="#"></a>
|
59
|
+
<div class="subscribe-overlay-content">
|
60
|
+
{% if site.logo %}
|
61
|
+
<img class="subscribe-overlay-logo" src="{{ site.baseurl }}{{ site.logo }}" alt="{{ site.title }}" />
|
62
|
+
{% endif %}
|
63
|
+
<h1 class="subscribe-overlay-title">Subscribe to {{ site.title }}</h1>
|
64
|
+
<p class="subscribe-overlay-description">Stay up to date! Get all the latest & greatest posts delivered straight to your inbox</p>
|
65
|
+
{% include subscribe-form.html placeholder="youremail@example.com" %}
|
66
|
+
</div>
|
67
|
+
</div>
|
68
|
+
{% endif %}
|
69
|
+
</div>
|
70
|
+
</nav>
|
71
|
+
</header>
|
72
|
+
|
73
|
+
|
74
|
+
<div class="site-content">
|
75
|
+
{{ content }}
|
76
|
+
<!-- Previous/next page links - displayed on every page -->
|
77
|
+
|
78
|
+
</div>
|
79
|
+
|
80
|
+
|
81
|
+
<footer class="site-footer outer">
|
82
|
+
<div class="inner">
|
83
|
+
<section class="copyright"><a href="{{ site.url }}">{{ site.title }}</a> © {{ site.time | date: '%Y' }}</section>
|
84
|
+
<nav class="site-footer-nav">
|
85
|
+
{% include footer-nav.html %}
|
86
|
+
</nav>
|
87
|
+
<div><a href="https://ghost.org/" target="_blank" rel="noopener">Powered by Jekyll & Kaschber</a></div>
|
88
|
+
</div>
|
89
|
+
</footer>
|
90
|
+
</div>
|
91
|
+
</body>
|
92
|
+
|
93
|
+
|
94
|
+
|
95
|
+
<script
|
96
|
+
src="https://code.jquery.com/jquery-3.5.1.min.js"
|
97
|
+
integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0="
|
98
|
+
crossorigin="anonymous">
|
99
|
+
</script>
|
100
|
+
|
101
|
+
<script src="{{ "assets/built/kaschber.js" | relative_url }}"></script>
|
102
|
+
|
103
|
+
|
104
|
+
<script>
|
105
|
+
$(document).ready(function () {
|
106
|
+
// Mobile Menu Trigger
|
107
|
+
$('.gh-burger').click(function () {
|
108
|
+
$('body').toggleClass('gh-head-open');
|
109
|
+
});
|
110
|
+
// FitVids - Makes video embeds responsive
|
111
|
+
$(".gh-content").fitVids();
|
112
|
+
});
|
113
|
+
</script>
|
114
|
+
|
115
|
+
{% include custom-js.html %}
|
116
|
+
|
117
|
+
</body>
|
118
|
+
</html>
|
data/_layouts/home.html
ADDED
@@ -0,0 +1,45 @@
|
|
1
|
+
---
|
2
|
+
layout: default
|
3
|
+
current: home
|
4
|
+
class: 'home-template'
|
5
|
+
---
|
6
|
+
|
7
|
+
<div class="site-header-content outer{% if site.header_style == "Left aligned" %} left-aligned{% endif %}{% unless site.cover %}{% if site.header_style == "Hidden" %} no-content{% endif %}{% endunless %}">
|
8
|
+
|
9
|
+
{% if site.cover or page.cover %}
|
10
|
+
<img class="site-header-cover"
|
11
|
+
src="{{ site.baseurl }}{% if page.cover %}{{ page.cover }}{% elsif site.cover %}{{ site.cover }}{% endif %}"
|
12
|
+
style="{% unless page.cover or site.cover %} no-cover {% endunless %}"
|
13
|
+
alt="{{ site.title }}"
|
14
|
+
/>
|
15
|
+
{% endif %}
|
16
|
+
|
17
|
+
{% if site.header_style != "Hidden" %}
|
18
|
+
<div class="site-header-inner inner">
|
19
|
+
{% unless site.show_logo_in_navigation %}
|
20
|
+
{% if site.logo %}
|
21
|
+
<img class="site-logo" src="{{ site.logo }}" alt="{{ site.title }}">
|
22
|
+
{% else %}
|
23
|
+
<h1 class="site-title">{{ site.title }}</h1>
|
24
|
+
{% endif %}
|
25
|
+
{% endunless %}
|
26
|
+
{% if site.description %}
|
27
|
+
<p class="site-description">{{ site.description }}</p>
|
28
|
+
{% endif %}
|
29
|
+
</div>
|
30
|
+
{% endif %}
|
31
|
+
|
32
|
+
</div>
|
33
|
+
|
34
|
+
<main id="site-main" class="site-main outer">
|
35
|
+
<div class="inner posts">
|
36
|
+
|
37
|
+
<div class="post-feed">
|
38
|
+
{% assign posts = paginator.posts | default: site.posts %}
|
39
|
+
{% for post in posts %}
|
40
|
+
{% include post-card.html post=post%}
|
41
|
+
{% endfor %}
|
42
|
+
</div>
|
43
|
+
|
44
|
+
</div>
|
45
|
+
</main>
|
data/_layouts/page.html
ADDED
@@ -0,0 +1,35 @@
|
|
1
|
+
---
|
2
|
+
layout: default
|
3
|
+
current: page
|
4
|
+
class: page-template
|
5
|
+
disqus: false
|
6
|
+
---
|
7
|
+
|
8
|
+
<main id="site-main" class="site-main">
|
9
|
+
<article class="article {{post_class}}">
|
10
|
+
|
11
|
+
<header class="article-header gh-canvas">
|
12
|
+
|
13
|
+
<h1 class="article-title">{{page.title}}</h1>
|
14
|
+
|
15
|
+
{% if page.cover %}
|
16
|
+
<figure class="article-image">
|
17
|
+
<img
|
18
|
+
src="{{ site.baseurl }}{{ page.cover }}"
|
19
|
+
alt="{% if page.cover_alt %}{{page.cover_alt}}{% else %}{{page.title}}{% endif %}"
|
20
|
+
/>
|
21
|
+
{% if page.cover_caption %}
|
22
|
+
<figcaption>{{page.cover_caption}}</figcaption>
|
23
|
+
{% endif %}
|
24
|
+
</figure>
|
25
|
+
{% endif %}
|
26
|
+
|
27
|
+
</header>
|
28
|
+
|
29
|
+
<section class="gh-content gh-canvas">
|
30
|
+
{{content}}
|
31
|
+
</section>
|
32
|
+
|
33
|
+
</article>
|
34
|
+
</main>
|
35
|
+
|