jekyll-theme-twail 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/LICENSE.txt +21 -0
- data/README.md +41 -0
- data/_config.yml +98 -0
- data/_includes/analytics-providers/custom.html +3 -0
- data/_includes/analytics-providers/google-gtag.html +9 -0
- data/_includes/analytics-providers/google-universal.html +7 -0
- data/_includes/analytics-providers/google.html +14 -0
- data/_includes/analytics.html +13 -0
- data/_includes/comments-providers/custom.html +3 -0
- data/_includes/comments-providers/disqus.html +16 -0
- data/_includes/comments-providers/utterances.html +11 -0
- data/_includes/comments.html +8 -0
- data/_includes/footer.html +6 -0
- data/_includes/head.html +19 -0
- data/_includes/head__seo.html +101 -0
- data/_includes/pager.html +38 -0
- data/_includes/postlist.html +37 -0
- data/_includes/profile.html +32 -0
- data/_includes/tagnav.html +10 -0
- data/_layouts/autopage_tags.html +5 -0
- data/_layouts/default.html +30 -0
- data/_layouts/home.html +5 -0
- data/_layouts/post.html +50 -0
- data/_sass/_custom.scss +4 -0
- data/_sass/_variables.scss +144 -0
- data/_sass/components/_comments.scss +10 -0
- data/_sass/components/_footer.scss +20 -0
- data/_sass/components/_pager.scss +39 -0
- data/_sass/components/_postlist.scss +76 -0
- data/_sass/components/_profile.scss +71 -0
- data/_sass/components/_tagnav.scss +46 -0
- data/_sass/main.scss +56 -0
- data/_sass/pages/_deafult.scss +41 -0
- data/_sass/pages/_post.scss +87 -0
- data/_sass/vendors/_buttons.scss +95 -0
- data/_sass/vendors/_forms.scss +360 -0
- data/_sass/vendors/_markdown-body.scss +960 -0
- data/_sass/vendors/_mixins.scss +37 -0
- data/_sass/vendors/_notices.scss +92 -0
- data/_sass/vendors/_syntax.scss +348 -0
- data/assets/css/styles.scss +5 -0
- data/assets/images/500x300.png +0 -0
- data/assets/images/avatar.png +0 -0
- data/assets/images/jekyll-theme-twail.png +0 -0
- data/assets/images/unsplash-image-1.jpg +0 -0
- data/assets/images/unsplash-image-2.jpg +0 -0
- data/assets/images/unsplash-image-3.jpg +0 -0
- data/assets/images/unsplash-image-4.jpg +0 -0
- metadata +148 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: f71f5b9f7ed34e39a73710d91dd45f22ed44a16c222d2fd8a4b47d1cc143ca00
|
4
|
+
data.tar.gz: e70dbc8e495b439b6ada3dce5fb8d1b286041b0872e4bb19a014efe2b3d418c6
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 562f7f11cbd211f2881e751df402f1279e264233c34258b189bdb0f811b88b749c5ad8ae86214901a42317249c68bd0c6e4263c88c1f6f8d3eee95c003a0a3db
|
7
|
+
data.tar.gz: 7c87f44c83cb03e0f75a5459a526325bfe2874f10adfbc7fc2cf4e63fe6214c1037e8790c2ea359f4f78f3e2a4a4493b226b7c030bd572b0609bfd8c67c37474
|
data/LICENSE.txt
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
The MIT License (MIT)
|
2
|
+
|
3
|
+
Copyright (c) 2022 leetaewook
|
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
|
13
|
+
all 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
|
21
|
+
THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,41 @@
|
|
1
|
+
# Jekyll theme Twail
|
2
|
+
Card style Jekyll theme for blog.
|
3
|
+
|
4
|
+
![jekyll-theme-twail](https://user-images.githubusercontent.com/72855455/149628922-61eaf762-6aba-4bbb-9ee0-f43f49bb8360.png)
|
5
|
+
|
6
|
+
<br>
|
7
|
+
|
8
|
+
## Demo
|
9
|
+
[Demo site](https://leetaewook.github.io/jekyll-theme-twail/)
|
10
|
+
|
11
|
+
<br>
|
12
|
+
|
13
|
+
## Installation
|
14
|
+
This theme uses [jekyll-paginate-v2](https://github.com/sverrirs/jekyll-paginate-v2), which is not natively supported by Github Pages.
|
15
|
+
But don't worry. You can still easily deploy to Github Pages.
|
16
|
+
|
17
|
+
### How to Install
|
18
|
+
1. You will need Ruby and Jekyll. [Install Ruby and Jekyll](https://jekyllrb.com/docs/installation/).
|
19
|
+
2. Fork [this repo](https://github.com/leetaewook/jekyll-theme-twail).
|
20
|
+
3. Write your own posts, and make your own settings in `_config.yml`.
|
21
|
+
```yaml
|
22
|
+
title: "Jekyll theme Twail"
|
23
|
+
description: "Card stlye Jekyll theme for blog"
|
24
|
+
|
25
|
+
baseurl: # TODO: If your Github Pages URL is https://usename.github.io/SOMETHING/, baseurl should be set to "/SOMETHING"
|
26
|
+
```
|
27
|
+
4. Change `Rakefile`.
|
28
|
+
```ruby
|
29
|
+
# TODO: Write your Github Repository name
|
30
|
+
GITHUB_REPONAME="github-user-name/repo-name"
|
31
|
+
```
|
32
|
+
5. Run command `rake publish`.
|
33
|
+
6. Change your Github Pages settings to use branch `gh-pages`.
|
34
|
+
|
35
|
+
<br>
|
36
|
+
|
37
|
+
## References
|
38
|
+
|
39
|
+
- [minimal-mistakes](https://github.com/mmistakes/minimal-mistakes)
|
40
|
+
- [hugo-theme-stack](https://github.com/CaiJimmy/hugo-theme-stack)
|
41
|
+
- [github-markdown-css](https://github.com/sindresorhus/github-markdown-css)
|
data/_config.yml
ADDED
@@ -0,0 +1,98 @@
|
|
1
|
+
# Site settings
|
2
|
+
title: 'Jeykll theme Twail'
|
3
|
+
description: 'Card style Jekyll theme for blog'
|
4
|
+
title_seperator: '-' # "-" (default), "|", ...
|
5
|
+
locale: null # null (default), en-US, zh-CN, ...
|
6
|
+
date_format: # "%B %-d, %Y" (default), "%Y. %m. %d", ... https://www.shortcutfoo.com/app/dojos/ruby-date-format-strftime/cheatsheet
|
7
|
+
footer_copyright: '© 2022~ Twail demo site'
|
8
|
+
og_image: 'assets/images/jekyll-theme-twail.png' # Default OpenGraph Image
|
9
|
+
baseurl: '/jekyll-theme-twail' # TODO: If your Github Pages URL is https://usename.github.io/SOMETHING/, baseurl should be set to "/SOMETHING"
|
10
|
+
|
11
|
+
# Profile
|
12
|
+
profile:
|
13
|
+
name: 'Twail'
|
14
|
+
description: 'Card style Jekyll theme for blog'
|
15
|
+
avatar: 'assets/images/avatar.png'
|
16
|
+
socials:
|
17
|
+
github: 'https://github.com/leetaewook/jekyll-theme-twail'
|
18
|
+
twitter: 'https://twitter.com/'
|
19
|
+
facebook: 'https://facebook.com/'
|
20
|
+
instagram: 'https://instagram.com/'
|
21
|
+
youtube: 'https://youtube.com/'
|
22
|
+
|
23
|
+
# Comments
|
24
|
+
comments:
|
25
|
+
provider: false # false (default), "utterances", "disqus"
|
26
|
+
utterances:
|
27
|
+
repo: # "github_username/repo_name"
|
28
|
+
theme: # "github-light" (default), "github-dark", "preferred-color-scheme", "github-dark-orange", "icy-dark", "dark-blue", "photon-dark", "boxy-light", "gruvbox-dark"
|
29
|
+
issue_term: # "pathname" (default)
|
30
|
+
label: # null (default), Yout github repo issue label
|
31
|
+
disqus:
|
32
|
+
shortname:
|
33
|
+
|
34
|
+
# SEO Related
|
35
|
+
google_site_verification:
|
36
|
+
bing_site_verification:
|
37
|
+
naver_site_verification:
|
38
|
+
yandex_site_verification:
|
39
|
+
baidu_site_verification:
|
40
|
+
|
41
|
+
# Analytics
|
42
|
+
analytics:
|
43
|
+
provider: false # false (default), "google", "google-universal", "google-gtag"
|
44
|
+
google:
|
45
|
+
tracking_id:
|
46
|
+
anonymize_ip: # true, false (default)
|
47
|
+
|
48
|
+
# Your post default values
|
49
|
+
defaults:
|
50
|
+
- values:
|
51
|
+
layout: post
|
52
|
+
comments: true
|
53
|
+
|
54
|
+
permalink: /:title # "/:title", ":year:month:day/:title", ... https://jekyllrb.com/docs/permalinks/
|
55
|
+
|
56
|
+
# Pagination
|
57
|
+
pagination:
|
58
|
+
enabled: true
|
59
|
+
per_page: 4 # Posts per page
|
60
|
+
permalink: '/page:num/'
|
61
|
+
limit: 0
|
62
|
+
sort_field: 'date'
|
63
|
+
sort_reverse: true
|
64
|
+
trail:
|
65
|
+
before: 2
|
66
|
+
after: 2
|
67
|
+
|
68
|
+
autopages:
|
69
|
+
enabled: true
|
70
|
+
collections:
|
71
|
+
enabled: false
|
72
|
+
categories:
|
73
|
+
enabled: false
|
74
|
+
tags:
|
75
|
+
enabled: true
|
76
|
+
layouts:
|
77
|
+
- autopage_tags.html
|
78
|
+
|
79
|
+
markdown: kramdown
|
80
|
+
highlighter: rouge
|
81
|
+
lsi: false
|
82
|
+
excerpt_separator: "\n\n"
|
83
|
+
incremental: false
|
84
|
+
|
85
|
+
kramdown:
|
86
|
+
input: GFM
|
87
|
+
hard_wrap: false
|
88
|
+
auto_ids: true
|
89
|
+
footnote_nr: 1
|
90
|
+
entity_output: as_char
|
91
|
+
toc_levels: 1..6
|
92
|
+
smart_quotes: lsquo,rsquo,ldquo,rdquo
|
93
|
+
enable_coderay: false
|
94
|
+
|
95
|
+
plugins:
|
96
|
+
- jekyll-paginate-v2
|
97
|
+
- jekyll-sitemap
|
98
|
+
- jekyll-gist
|
@@ -0,0 +1,9 @@
|
|
1
|
+
<!-- Global site tag (gtag.js) - Google Analytics -->
|
2
|
+
<script async src="https://www.googletagmanager.com/gtag/js?id={{ site.analytics.google.tracking_id }}"></script>
|
3
|
+
<script>
|
4
|
+
window.dataLayer = window.dataLayer || [];
|
5
|
+
function gtag(){dataLayer.push(arguments);}
|
6
|
+
gtag('js', new Date());
|
7
|
+
|
8
|
+
gtag('config', '{{ site.analytics.google.tracking_id }}', { 'anonymize_ip': {{ site.analytics.google.anonymize_ip | default: false }}});
|
9
|
+
</script>
|
@@ -0,0 +1,7 @@
|
|
1
|
+
<script>
|
2
|
+
window.ga=function(){ga.q.push(arguments)};ga.q=[];ga.l=+new Date;
|
3
|
+
ga('create','{{ site.analytics.google.tracking_id }}','auto');
|
4
|
+
ga('set', 'anonymizeIp', {{ site.analytics.google.anonymize_ip | default: false }});
|
5
|
+
ga('send','pageview')
|
6
|
+
</script>
|
7
|
+
<script src="https://www.google-analytics.com/analytics.js" async></script>
|
@@ -0,0 +1,14 @@
|
|
1
|
+
<script>
|
2
|
+
var _gaq = _gaq || [];
|
3
|
+
_gaq.push(['_setAccount', '{{ site.analytics.google.tracking_id }}']);
|
4
|
+
{% if site.analytics.google.anonymize_ip == true %}
|
5
|
+
_gaq.push(['_gat._anonymizeIp']);
|
6
|
+
{% endif %}
|
7
|
+
_gaq.push(['_trackPageview']);
|
8
|
+
|
9
|
+
(function() {
|
10
|
+
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
|
11
|
+
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
|
12
|
+
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
|
13
|
+
})();
|
14
|
+
</script>
|
@@ -0,0 +1,13 @@
|
|
1
|
+
|
2
|
+
{% if jekyll.environment == 'production' and site.analytics.provider and page.analytics != false %}
|
3
|
+
{% case site.analytics.provider %}
|
4
|
+
{% when "google" %}
|
5
|
+
{% include analytics-providers/google.html %}
|
6
|
+
{% when "google-universal" %}
|
7
|
+
{% include analytics-providers/google-universal.html %}
|
8
|
+
{% when "google-gtag" %}
|
9
|
+
{% include analytics-providers/google-gtag.html %}
|
10
|
+
{% when "custom" %}
|
11
|
+
{% include analytics-providers/custom.html %}
|
12
|
+
{% endcase %}
|
13
|
+
{% endif %}
|
@@ -0,0 +1,16 @@
|
|
1
|
+
{% if site.comments.disqus.shortname %}
|
2
|
+
<div id="disqus_thread"></div>
|
3
|
+
<script>
|
4
|
+
var disqus_config = function () {
|
5
|
+
this.page.url = "{{ page.url | absolute_url }}"; /* Replace PAGE_URL with your page's canonical URL variable */
|
6
|
+
this.page.identifier = "{{ page.id }}"; /* Replace PAGE_IDENTIFIER with your page's unique identifier variable */
|
7
|
+
};
|
8
|
+
(function() { /* DON'T EDIT BELOW THIS LINE */
|
9
|
+
var d = document, s = d.createElement('script');
|
10
|
+
s.src = 'https://{{ site.comments.disqus.shortname }}.disqus.com/embed.js';
|
11
|
+
s.setAttribute('data-timestamp', +new Date());
|
12
|
+
(d.head || d.body).appendChild(s);
|
13
|
+
})();
|
14
|
+
</script>
|
15
|
+
<noscript>Please enable JavaScript to view the <a href="https://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
|
16
|
+
{% endif %}
|
@@ -0,0 +1,11 @@
|
|
1
|
+
<script src="https://utteranc.es/client.js"
|
2
|
+
repo="{{ site.comments.utterances.repo }}"
|
3
|
+
issue-term="{{ site.comments.utterances.issue_term | default: 'pathname' }}"
|
4
|
+
theme="{{ site.comments.utterances.theme | default: 'github-light' }}"
|
5
|
+
crossorigin="anonymous"
|
6
|
+
async
|
7
|
+
{% if site.comments.utterances.label %}
|
8
|
+
label="{{ site.comments.utterances.label }}"
|
9
|
+
{% endif %}
|
10
|
+
>
|
11
|
+
</script>
|
@@ -0,0 +1,6 @@
|
|
1
|
+
<footer class="footer">
|
2
|
+
{% if site.footer_copyright %}
|
3
|
+
<section class="copyright">{{ site.footer_copyright }}</section>
|
4
|
+
{% endif %}
|
5
|
+
<section class="powerby">Powered by <a href="https://jekyllrb.com/">Jekyll</a> & <a href="https://github.com/leetaewook/jekyll-theme-twail">Twail theme</a></section>
|
6
|
+
</footer>
|
data/_includes/head.html
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
{% assign title_separator = site.title_separator | default: '-' | replace: '|', '|' %}
|
2
|
+
|
3
|
+
{% if paginator %}
|
4
|
+
{% assign title = site.title %}
|
5
|
+
{% else %}
|
6
|
+
{% assign title = page.title | append: " " | append: title_separator | append: " " | append: site.title %}
|
7
|
+
{% endif %}
|
8
|
+
{% assign title = title | markdownify | strip_html | strip_newlines | escape_once %}
|
9
|
+
|
10
|
+
<head>
|
11
|
+
<meta charset="UTF-8" />
|
12
|
+
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
13
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
14
|
+
|
15
|
+
{% include head__seo.html %}
|
16
|
+
|
17
|
+
<link rel="stylesheet" href="{{ '/assets/css/styles.css' | relative_url }}" />
|
18
|
+
<link href="https://cdn.jsdelivr.net/npm/remixicon@2.5.0/fonts/remixicon.css" rel="stylesheet">
|
19
|
+
</head>
|
@@ -0,0 +1,101 @@
|
|
1
|
+
{% assign title_separator = site.title_separator | default: '-' | replace: '|', '|' %}
|
2
|
+
|
3
|
+
{% if site.url %}
|
4
|
+
{% assign seo_url = site.url | append: site.baseurl %}
|
5
|
+
{% endif %}
|
6
|
+
|
7
|
+
{% if paginator %}
|
8
|
+
{% assign seo_title = site.title %}
|
9
|
+
{% else %}
|
10
|
+
{% assign seo_title = page.title | append: " " | append: title_separator | append: " " | append: site.title %}
|
11
|
+
{% endif %}
|
12
|
+
{% assign seo_title = title | markdownify | strip_html | strip_newlines | escape_once %}
|
13
|
+
|
14
|
+
{% if page.canonical_url %}
|
15
|
+
{% assign canonical_url = page.canonical_url %}
|
16
|
+
{% else %}
|
17
|
+
{% assign canonical_url = page.url | replace: "index.html", "" | absolute_url %}
|
18
|
+
{% endif %}
|
19
|
+
|
20
|
+
{% assign seo_description = page.description | default: page.excerpt | default: site.description -%}
|
21
|
+
{% if seo_description %}
|
22
|
+
{% assign seo_description = seo_description | markdownify | strip_html | newline_to_br | strip_newlines | replace: '<br />', ' ' | escape_once | strip %}
|
23
|
+
{% endif %}
|
24
|
+
|
25
|
+
{% if page.cover %}
|
26
|
+
{% assign og_image = page.cover | absolute_url %}
|
27
|
+
{% elsif site.og_image %}
|
28
|
+
{% assign og_image = site.og_image | absolute_url %}
|
29
|
+
{% endif %}
|
30
|
+
{% assign og_image = og_image | escape %}
|
31
|
+
|
32
|
+
{% if page.date %}
|
33
|
+
{% assign og_type = "article" %}
|
34
|
+
{% else %}
|
35
|
+
{% assign og_type = "website" %}
|
36
|
+
{% endif %}
|
37
|
+
|
38
|
+
<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>
|
39
|
+
|
40
|
+
<meta name="description" content="{{ seo_description }}">
|
41
|
+
|
42
|
+
{% if page.tags and page.tags.size > 0 %}
|
43
|
+
<meta name="keywords" content="{{ page.tags | join: ','}}">
|
44
|
+
{% endif %}
|
45
|
+
|
46
|
+
{% if profile.name %}
|
47
|
+
<meta name="author" content="{{ profile.name | default: author }}">
|
48
|
+
{% if og_type == "article" %}
|
49
|
+
<meta property="article:author" content="{{ profile.name | default: author }}">
|
50
|
+
{% endif %}
|
51
|
+
{% endif %}
|
52
|
+
|
53
|
+
<meta property="og:title" content="{{ 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 %}">
|
54
|
+
<meta property="og:description" content="{{ seo_description }}">
|
55
|
+
<meta property="og:site_name" content="{{ site.title }}">
|
56
|
+
<meta property="og:url" content="{{ canonical_url }}">
|
57
|
+
<meta property="og:type" content="{{ og_type }}">
|
58
|
+
|
59
|
+
{% if site.locale %}
|
60
|
+
<meta property="og:locale" content="{{ site.locale | replace: "-", "_" }}">
|
61
|
+
{% endif %}
|
62
|
+
|
63
|
+
{% if og_image %}
|
64
|
+
<meta property="og:image" content="{{ og_image }}">
|
65
|
+
{% endif %}
|
66
|
+
|
67
|
+
{% if page.date %}
|
68
|
+
<meta property="article:published_time" content="{{ page.date | date_to_xmlschema }}">
|
69
|
+
{% endif %}
|
70
|
+
|
71
|
+
{% if og_type == "article" and page.last_modified_at %}
|
72
|
+
<meta property="article:modified_time" content="{{ page.last_modified_at | date_to_xmlschema }}">
|
73
|
+
{% endif %}
|
74
|
+
|
75
|
+
<link rel="canonical" href="{{ canonical_url }}">
|
76
|
+
|
77
|
+
{% if paginator.previous_page %}
|
78
|
+
<link rel="prev" href="{{ paginator.previous_page_path | absolute_url }}">
|
79
|
+
{% endif %}
|
80
|
+
{% if paginator.next_page %}
|
81
|
+
<link rel="next" href="{{ paginator.next_page_path | absolute_url }}">
|
82
|
+
{% endif %}
|
83
|
+
|
84
|
+
{% if site.google_site_verification %}
|
85
|
+
<meta name="google-site-verification" content="{{ site.google_site_verification }}" />
|
86
|
+
{% endif %}
|
87
|
+
{% if site.bing_site_verification %}
|
88
|
+
<meta name="msvalidate.01" content="{{ site.bing_site_verification }}">
|
89
|
+
{% endif %}
|
90
|
+
{% if site.alexa_site_verification %}
|
91
|
+
<meta name="alexaVerifyID" content="{{ site.alexa_site_verification }}">
|
92
|
+
{% endif %}
|
93
|
+
{% if site.yandex_site_verification %}
|
94
|
+
<meta name="yandex-verification" content="{{ site.yandex_site_verification }}">
|
95
|
+
{% endif %}
|
96
|
+
{% if site.naver_site_verification %}
|
97
|
+
<meta name="naver-site-verification" content="{{ site.naver_site_verification }}">
|
98
|
+
{% endif %}
|
99
|
+
{% if site.baidu_site_verification %}
|
100
|
+
<meta name="baidu-site-verification" content="{{ site.baidu_site_verification }}">
|
101
|
+
{% endif %}
|
@@ -0,0 +1,38 @@
|
|
1
|
+
{% assign pageurl = page.url | remove: 'index.html' %}
|
2
|
+
{% assign trail_first_page = paginator.page_trail[0].num %}
|
3
|
+
{% assign trail_last_page = paginator.page_trail[-1].num %}
|
4
|
+
|
5
|
+
{% if paginator.total_pages > 1 %}
|
6
|
+
<ul class="pager">
|
7
|
+
{% if paginator.first_page %}
|
8
|
+
<li class="pager__item{% if pageurl == paginator.first_page_path %} selected{% endif %}">
|
9
|
+
<a class="pager__link" href="{{ paginator.first_page_path | prepend: site.baseurl | replace: '//', '/' }}">1</a>
|
10
|
+
</li>
|
11
|
+
{% endif %}
|
12
|
+
|
13
|
+
{% if trail_first_page > paginator.first_page %}
|
14
|
+
<li class="pager__item disabled"><span class="pager__link">…</span></li>
|
15
|
+
{% endif %}
|
16
|
+
|
17
|
+
{% if paginator.page_trail %}
|
18
|
+
{% for trail in paginator.page_trail %}
|
19
|
+
{% assign path = trail.path | remove: 'index.html' %}
|
20
|
+
{% if path != paginator.first_page_path and path != paginator.last_page_path %}
|
21
|
+
<li class="pager__item{% if page.url == trail.path %} selected{% endif %}">
|
22
|
+
<a class="pager__link" href="{{ trail.path | prepend: site.baseurl | replace: '//', '/' }}" title="{{trail.title}}">{{ trail.num }}</a>
|
23
|
+
</li>
|
24
|
+
{% endif %}
|
25
|
+
{% endfor %}
|
26
|
+
{% endif %}
|
27
|
+
|
28
|
+
{% if trail_last_page < paginator.last_page %}
|
29
|
+
<li class="pager__item disabled"><span class="pager__link">…</span></li>
|
30
|
+
{% endif %}
|
31
|
+
|
32
|
+
{% if paginator.last_page %}
|
33
|
+
<li class="pager__item{% if pageurl == paginator.last_page_path %} selected{% endif %}">
|
34
|
+
<a class="pager__link" href="{{ paginator.last_page_path | prepend: site.baseurl | replace: '//', '/' }}">{{ paginator.last_page }}</a>
|
35
|
+
</li>
|
36
|
+
{% endif %}
|
37
|
+
</ul>
|
38
|
+
{% endif %}
|
@@ -0,0 +1,37 @@
|
|
1
|
+
{% assign date_format = site.date_format | default: "%B %-d, %Y" %}
|
2
|
+
|
3
|
+
<section class="postlist">
|
4
|
+
{% for post in paginator.posts %}
|
5
|
+
|
6
|
+
{% if post.description %}
|
7
|
+
{% assign description = post.description | markdownify | strip_html | truncatewords: 48 %}
|
8
|
+
{% elsif post.description != false %}
|
9
|
+
{% assign description = post.content | markdownify | strip_html | truncatewords: 48 %}
|
10
|
+
{% endif %}
|
11
|
+
|
12
|
+
<article class="post">
|
13
|
+
<a href="{{ post.url | relative_url }}">
|
14
|
+
{% if post.cover %}
|
15
|
+
<div class="post-cover">
|
16
|
+
<img src="{{ post.cover | relative_url }}">
|
17
|
+
</div>
|
18
|
+
{% endif %}
|
19
|
+
<div class="post-details">
|
20
|
+
{% if post.tags and post.tags.size > 0 %}
|
21
|
+
<ul class="post-tags">
|
22
|
+
{% for tag in post.tags %}
|
23
|
+
<li><h4 class="post-tag">{{ tag }}</h4></li>
|
24
|
+
{% endfor %}
|
25
|
+
</ul>
|
26
|
+
{% endif %}
|
27
|
+
<h1 class="post-title">{{ post.title | markdownify | strip_html | truncatewords: 32 }}</h1>
|
28
|
+
<h2 class="post-description">{{ description }}</h2>
|
29
|
+
<div class="post-time">
|
30
|
+
<i class="ri-calendar-line"></i>
|
31
|
+
<time>{{ post.date | date: date_format }}</time>
|
32
|
+
</div>
|
33
|
+
</div>
|
34
|
+
</a>
|
35
|
+
</article>
|
36
|
+
{% endfor %}
|
37
|
+
</section>
|
@@ -0,0 +1,32 @@
|
|
1
|
+
<header class="profile">
|
2
|
+
<figure class="profile__avatar">
|
3
|
+
{% if site.profile.avatar %}
|
4
|
+
<a href="{{ '/' | relative_url }}"><img src="{{ site.profile.avatar | relative_url }}" loading="lazy" {% if site.title %}alt="{{ site.title }}"{% endif %} /></a>
|
5
|
+
{% endif %}
|
6
|
+
</figure>
|
7
|
+
<div>
|
8
|
+
<div>
|
9
|
+
<a href="{{ '/' | relative_url }}">
|
10
|
+
<h1 class="profile__name">{{ site.profile.name }}</h1>
|
11
|
+
<h2 class="profile__description">{{ site.profile.description }}</h2>
|
12
|
+
</a>
|
13
|
+
</div>
|
14
|
+
<ul class="profile__socials">
|
15
|
+
{% if site.profile.socials.github %}
|
16
|
+
<li><a href="{{ site.profile.socials.github }}" target="_blank"><i class="ri-github-fill"></i></a></li>
|
17
|
+
{% endif %}
|
18
|
+
{% if site.profile.socials.twitter %}
|
19
|
+
<li><a href="{{ site.profile.socials.github }}" target="_blank"><i class="ri-twitter-fill"></i></a></li>
|
20
|
+
{% endif %}
|
21
|
+
{% if site.profile.socials.facebook %}
|
22
|
+
<li><a href="{{ site.profile.socials.github }}" target="_blank"><i class="ri-facebook-fill"></i></a></li>
|
23
|
+
{% endif %}
|
24
|
+
{% if site.profile.socials.instagram %}
|
25
|
+
<li><a href="{{ site.profile.socials.github }}" target="_blank"><i class="ri-instagram-fill"></i></a></li>
|
26
|
+
{% endif %}
|
27
|
+
{% if site.profile.socials.youtube %}
|
28
|
+
<li><a href="{{ site.profile.socials.github }}" target="_blank"><i class="ri-youtube-fill"></i></a></li>
|
29
|
+
{% endif %}
|
30
|
+
</ul>
|
31
|
+
</div>
|
32
|
+
</header>
|
@@ -0,0 +1,10 @@
|
|
1
|
+
<section class="tagnav">
|
2
|
+
<h2 class="tagnav__title"><i class="ri-price-tag-3-line"></i><span>TAGS</span></h2>
|
3
|
+
<nav class="tagnav__wrapper">
|
4
|
+
{% for page in site.pages %}
|
5
|
+
{% if page.title and page.autogen == nil and page.autopage != nil %}
|
6
|
+
<a class="tagnav__item" href="{{ page.url | relative_url }}">{{ page.autopage.display_name }}</a>
|
7
|
+
{% endif %}
|
8
|
+
{% endfor %}
|
9
|
+
</nav>
|
10
|
+
</section>
|
@@ -0,0 +1,30 @@
|
|
1
|
+
{% if page.layout == 'home' %}
|
2
|
+
{% assign section_title = "All posts" %}
|
3
|
+
{% elsif page.autopages %}
|
4
|
+
{% assign section_title = page.autopages.display_name %}
|
5
|
+
{% endif %}
|
6
|
+
|
7
|
+
<!DOCTYPE html>
|
8
|
+
<html {% if site.locale %}lang="{{ site.locale }}"{% endif %}>
|
9
|
+
{% include head.html %}
|
10
|
+
|
11
|
+
<body>
|
12
|
+
<div class="main-container{% if page.layout == 'post' %} post{% endif %}">
|
13
|
+
<aside class="main-container__aside">
|
14
|
+
{% include profile.html %}
|
15
|
+
{% include tagnav.html %}
|
16
|
+
</aside>
|
17
|
+
<div class="content">
|
18
|
+
{% if section_title %}
|
19
|
+
<h3 class="section-title">{{section_title}}</h3>
|
20
|
+
{% endif %}
|
21
|
+
<main>{{ content }}</main>
|
22
|
+
{% include pager.html %}
|
23
|
+
{% include footer.html %}
|
24
|
+
</div>
|
25
|
+
</div>
|
26
|
+
|
27
|
+
{% include analytics.html %}
|
28
|
+
|
29
|
+
</body>
|
30
|
+
</html>
|
data/_layouts/home.html
ADDED
data/_layouts/post.html
ADDED
@@ -0,0 +1,50 @@
|
|
1
|
+
---
|
2
|
+
layout: default
|
3
|
+
---
|
4
|
+
|
5
|
+
{% assign date_format = site.date_format | default: "%B %-d, %Y" %}
|
6
|
+
|
7
|
+
<article class="post-container">
|
8
|
+
{% if page.cover %}
|
9
|
+
<section class="post-cover">
|
10
|
+
<a href="{{ page.url | relative_url }}"><img src="{{ page.cover | relative_url }}"></a>
|
11
|
+
</section>
|
12
|
+
{% endif %}
|
13
|
+
|
14
|
+
<header class="post-summary">
|
15
|
+
{% if page.tags and page.tags.size > 0 %}
|
16
|
+
<ul class="post-tags">
|
17
|
+
{% for tag in page.tags %}
|
18
|
+
<li><h4 class="post-tag">{{ tag }}</h4></li>
|
19
|
+
{% endfor %}
|
20
|
+
</ul>
|
21
|
+
{% endif %}
|
22
|
+
|
23
|
+
{% if page.title %}
|
24
|
+
<h1 class="post-title">{{ page.title | markdownify | strip_html }}</h1>
|
25
|
+
{% endif %}
|
26
|
+
|
27
|
+
{% if page.description %}
|
28
|
+
<h2 class="post-description">{{ page.description | markdownify | strip_html }}</h2>
|
29
|
+
{% endif %}
|
30
|
+
|
31
|
+
{% if page.date %}
|
32
|
+
<div class="post-time">
|
33
|
+
<i class="ri-calendar-line"></i>
|
34
|
+
<time>{{ page.date | date: date_format }}</time>
|
35
|
+
</div>
|
36
|
+
{% endif %}
|
37
|
+
|
38
|
+
</header>
|
39
|
+
|
40
|
+
<section class="post-content markdown-body">
|
41
|
+
{{ content }}
|
42
|
+
</section>
|
43
|
+
|
44
|
+
</article>
|
45
|
+
|
46
|
+
{% if page.comments and site.comments.provider %}
|
47
|
+
<section class="comments-container">
|
48
|
+
{% include comments.html %}
|
49
|
+
</section>
|
50
|
+
{% endif %}
|
data/_sass/_custom.scss
ADDED
@@ -0,0 +1,4 @@
|
|
1
|
+
@import url('https://cdn.jsdelivr.net/gh/orioncactus/pretendard/dist/web/static/pretendard-dynamic-subset.css');
|
2
|
+
|
3
|
+
$font-main: Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Roboto, 'Helvetica Neue', 'Segoe UI',
|
4
|
+
'Apple SD Gothic Neo', 'Noto Sans KR', 'Malgun Gothic', sans-serif;
|