jekyll-web-novel 0.1.8 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/_boilerplates/chapter.md +1 -1
- data/_boilerplates/preview.md +1 -3
- data/_boilerplates/{page.md → tab.md} +3 -2
- data/_boilerplates/volume.md +1 -1
- data/_config.yml +7 -2
- data/_includes/alerts.html +5 -0
- data/_includes/header.html +18 -12
- data/_includes/reader.html +1 -3
- data/_includes/toc.html +1 -1
- data/_layouts/chapter.html +1 -1
- data/_layouts/home.html +1 -1
- data/_layouts/page.html +1 -1
- data/_layouts/preview.html +8 -0
- data/_layouts/root.html +5 -0
- data/_sass/jekyll-web-novel.sass +10 -5
- data/_sass/web-novel/alerts.sass +45 -0
- data/_sass/web-novel/colors.sass +3 -2
- data/_sass/web-novel/reader.sass +1 -2
- data/_sass/web-novel/scrollNav.sass +3 -0
- data/admin/config.yml +5 -2
- data/assets/js/CopyBtn.js +56 -0
- data/assets/js/bookReader.js +44 -11
- metadata +10 -9
- data/pages/chapters.md +0 -9
- data/pages/home.md +0 -16
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bfd69738895f6a9f448a7a7f1d7051feb43cbc65343d59042ad4b8d4ae3ba4e9
|
4
|
+
data.tar.gz: cfc5bb72afe4e8279634c9d25155bce896011a3bb315b30b150bff1565d37fd7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 063da2bdcff1144efb9e56fb0044db4d4243c1eb219790f470a3152d3d55b3bc696245074328e2f4b138dcfd5242ca4310ef0c2454739ec3439942a5caecd6cd
|
7
|
+
data.tar.gz: f6e6908d27d5c9dbcc4250f6a7eea1e988a6b4feb4e09edc96903e5d633cdb753382ce9d7814fab668d89ce7a1e5e64ec112e03bb83e014c49130510ae8ebfa2
|
data/_boilerplates/chapter.md
CHANGED
data/_boilerplates/preview.md
CHANGED
@@ -3,10 +3,8 @@ _boilerplate:
|
|
3
3
|
path: '_previews'
|
4
4
|
timestamp: false
|
5
5
|
title: title
|
6
|
-
slug: "{{ vol }}-{{ cht }}-{{ title }}
|
6
|
+
slug: "{{ vol }}-{{ cht }}-{{ title }}"
|
7
7
|
vol: '01'
|
8
|
-
localhost:
|
9
|
-
baseurl:
|
10
8
|
|
11
9
|
# http://localhost:4000/chapters/{{ boilerplate.random_url }}#reader
|
12
10
|
# https://example.com/chapters/{{ boilerplate.random_url }}#reader
|
@@ -1,11 +1,12 @@
|
|
1
1
|
---
|
2
2
|
_boilerplate:
|
3
|
-
path:
|
3
|
+
path: _tabs
|
4
|
+
order: 0
|
4
5
|
|
5
6
|
title: {{ boilerplate.title }}
|
6
7
|
created: {{ boilerplate.time }}
|
7
8
|
permalink: {{ boilerplate.slug }}
|
8
|
-
|
9
|
+
order: {{ boilerplate.order }}
|
9
10
|
---
|
10
11
|
|
11
12
|
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
|
data/_boilerplates/volume.md
CHANGED
data/_config.yml
CHANGED
@@ -22,6 +22,7 @@ novel:
|
|
22
22
|
title: "The Upper Crust"
|
23
23
|
author: "John Doe"
|
24
24
|
lang: en
|
25
|
+
start_chapter: 1
|
25
26
|
copyright:
|
26
27
|
short: >-
|
27
28
|
**The Upper Crust, Vol 1**
|
@@ -44,10 +45,12 @@ collections:
|
|
44
45
|
previews:
|
45
46
|
sort_by: chapter
|
46
47
|
output: true
|
47
|
-
layout: chapter
|
48
48
|
volumes:
|
49
49
|
sort_by: volume
|
50
50
|
output: false
|
51
|
+
tabs:
|
52
|
+
sort_by: order
|
53
|
+
output: true
|
51
54
|
|
52
55
|
|
53
56
|
defaults:
|
@@ -61,10 +64,12 @@ defaults:
|
|
61
64
|
values:
|
62
65
|
layout: "preview"
|
63
66
|
type: 'previews'
|
67
|
+
published: false
|
64
68
|
- scope:
|
65
|
-
path: "
|
69
|
+
path: "_tabs/*"
|
66
70
|
values:
|
67
71
|
layout: "page"
|
72
|
+
type: 'tabs'
|
68
73
|
|
69
74
|
plugins:
|
70
75
|
- jekyll-feed
|
data/_includes/header.html
CHANGED
@@ -1,16 +1,22 @@
|
|
1
1
|
|
2
2
|
<header scroll-nav class="hbox nav hbox:long">
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
3
|
+
<h1>
|
4
|
+
<a href={{site.baseurl}}>
|
5
|
+
{{ site.title }}
|
6
|
+
</a>
|
7
|
+
</h1>
|
8
8
|
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
<a
|
14
|
-
|
15
|
-
|
9
|
+
<div class="hbox nav">
|
10
|
+
|
11
|
+
{% for tab in site.tabs %}
|
12
|
+
{% unless page.path == tab.path %}
|
13
|
+
<a href="{{ tab.url }}">{{ tab.title }}</a>
|
14
|
+
{% endunless %}
|
15
|
+
{% endfor %}
|
16
|
+
|
17
|
+
{% if site.novel.start_chapter %}
|
18
|
+
{% assign cht1 = site.chapters | find: 'chapter', page.start_chapter %}
|
19
|
+
<a go-to-bookmark class="big-link" href="{{ cht1.url }}#reader">Read</a>
|
20
|
+
{% endif %}
|
21
|
+
</div>
|
16
22
|
</header>
|
data/_includes/reader.html
CHANGED
@@ -1,8 +1,6 @@
|
|
1
1
|
|
2
|
-
<div data-page="{{ page.chapter }}" class="reader" id="reader" lang="{{ site.novel.lang }}">
|
2
|
+
<div data-page="{{ page.chapter }}" class="reader container" id="reader" lang="{{ site.novel.lang }}">
|
3
3
|
<div class="chapter__content">
|
4
4
|
{{ content }}
|
5
5
|
</div>
|
6
6
|
</div>
|
7
|
-
|
8
|
-
<script src="{{ '/assets/js/bookReader.js' | relative_url }}"></script>
|
data/_includes/toc.html
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
|
2
2
|
<h1 id="#{{page.title | slugify }}">{{ page.title }}</h1>
|
3
3
|
|
4
|
-
{% assign volumes =
|
4
|
+
{% assign volumes = include.chapters | group_by: 'volume' %}
|
5
5
|
{% for vol in volumes %}
|
6
6
|
|
7
7
|
{% assign volume = site.volumes | find: 'volume', vol.name %}
|
data/_layouts/chapter.html
CHANGED
data/_layouts/home.html
CHANGED
data/_layouts/page.html
CHANGED
data/_layouts/preview.html
CHANGED
data/_layouts/root.html
CHANGED
@@ -5,11 +5,16 @@
|
|
5
5
|
</head>
|
6
6
|
<body>
|
7
7
|
|
8
|
+
{% include alerts.html %}
|
8
9
|
|
9
10
|
{{content}}
|
10
11
|
|
11
12
|
{% include footer.html %}
|
12
13
|
|
14
|
+
|
15
|
+
<script src="{{ '/assets/js/bookReader.js' | relative_url }}"></script>
|
13
16
|
<script src="{{ '/assets/js/scrollNav.js' | relative_url }}"></script>
|
17
|
+
<!-- vvv keep as last script to run vvv -->
|
18
|
+
<script src="{{ '/assets/js/CopyBtn.js' | relative_url }}"></script>
|
14
19
|
</body>
|
15
20
|
</html>
|
data/_sass/jekyll-web-novel.sass
CHANGED
@@ -5,14 +5,11 @@
|
|
5
5
|
@import 'web-novel/footer'
|
6
6
|
@import 'web-novel/header'
|
7
7
|
@import 'web-novel/scrollNav'
|
8
|
+
@import 'web-novel/alerts'
|
8
9
|
|
9
10
|
\:root
|
10
11
|
font-size: 16px
|
11
12
|
|
12
|
-
html
|
13
|
-
scroll-behavior: smooth
|
14
|
-
|
15
|
-
|
16
13
|
.hbox
|
17
14
|
display: grid
|
18
15
|
grid-auto-flow: column
|
@@ -23,6 +20,9 @@ html
|
|
23
20
|
.vbox > * + *
|
24
21
|
margin-top: 2em
|
25
22
|
|
23
|
+
.vbox > *
|
24
|
+
display: block
|
25
|
+
|
26
26
|
h1 a
|
27
27
|
color: var(--text-main)
|
28
28
|
text-decoration: none
|
@@ -42,7 +42,7 @@ h1 a
|
|
42
42
|
|
43
43
|
margin: 1em 0
|
44
44
|
|
45
|
-
.
|
45
|
+
.container
|
46
46
|
max-width: 35em
|
47
47
|
margin: 0 auto
|
48
48
|
|
@@ -54,6 +54,11 @@ h1 a
|
|
54
54
|
line-height: 1em
|
55
55
|
margin: 1em 0
|
56
56
|
|
57
|
+
.mt
|
58
|
+
margin-top: 2em
|
59
|
+
|
60
|
+
button
|
61
|
+
border: solid 2px var(--text-muted, #888)
|
57
62
|
|
58
63
|
|
59
64
|
@media only screen and (max-width: 40rem)
|
@@ -0,0 +1,45 @@
|
|
1
|
+
|
2
|
+
.alerts
|
3
|
+
font-size: 1.4rem
|
4
|
+
position: fixed
|
5
|
+
color: var(--text-bright)
|
6
|
+
right: 0
|
7
|
+
left: 0
|
8
|
+
bottom: 0
|
9
|
+
margin: 3px
|
10
|
+
max-width: 100vw
|
11
|
+
pointer-events: none
|
12
|
+
|
13
|
+
@keyframes slideOutRight
|
14
|
+
0%
|
15
|
+
transform: translateX(0) scaleY(100%)
|
16
|
+
90%
|
17
|
+
transform: translateX(0) scaleY(100%)
|
18
|
+
opacity: 1
|
19
|
+
99%
|
20
|
+
transform: translateX(00%) scaleY(0%)
|
21
|
+
opacity: 0
|
22
|
+
margin-top: 2em
|
23
|
+
100%
|
24
|
+
margin-top: 0
|
25
|
+
|
26
|
+
.alerts > *
|
27
|
+
outline: solid 1px var(--selection)
|
28
|
+
box-shadow: 0 0 20px 5px var(--background-body)
|
29
|
+
background-color: var(--button-base)
|
30
|
+
padding: .2em .6em
|
31
|
+
border-radius: 6px
|
32
|
+
transform: translateX(200%)
|
33
|
+
animation: 2s ease-in 0s slideOutRight
|
34
|
+
// transform: translateX(0)
|
35
|
+
// transition: transform 150ms ease-in 1s
|
36
|
+
// transform: translateX(200%)
|
37
|
+
|
38
|
+
@media only screen and (min-width: 40rem)
|
39
|
+
.alerts
|
40
|
+
padding-bottom: 5rem
|
41
|
+
@media only screen and (min-width: 60rem)
|
42
|
+
.alerts
|
43
|
+
left: unset
|
44
|
+
max-width: 60%
|
45
|
+
padding-right: 5rem
|
data/_sass/web-novel/colors.sass
CHANGED
data/_sass/web-novel/reader.sass
CHANGED
data/admin/config.yml
CHANGED
@@ -13,9 +13,9 @@ public_folder: "/assets/uploads"
|
|
13
13
|
site_url: https://example.com
|
14
14
|
|
15
15
|
collections:
|
16
|
-
- name:
|
16
|
+
- name: tabs
|
17
17
|
label: 'Pages'
|
18
|
-
folder: '
|
18
|
+
folder: '_tabs/'
|
19
19
|
create: false
|
20
20
|
slug: "{{slug}}"
|
21
21
|
summery: "{{title}}"
|
@@ -23,6 +23,7 @@ collections:
|
|
23
23
|
preview: false
|
24
24
|
fields:
|
25
25
|
- { label: 'Title', name: "title", widget: 'string' }
|
26
|
+
- { label: 'Published', name: 'published', widget: 'boolean', default: true, required: false }
|
26
27
|
- { label: 'Permalink', name: "permalink", widget: 'string', default: '/:basename/', required: false }
|
27
28
|
- { label: 'Body', name: 'body', widget: 'markdown' }
|
28
29
|
|
@@ -36,6 +37,7 @@ collections:
|
|
36
37
|
preview: false
|
37
38
|
fields:
|
38
39
|
- { label: 'Title', name: "title", widget: 'string' }
|
40
|
+
- { label: 'Published', name: 'published', widget: 'boolean', default: true, required: false }
|
39
41
|
- { label: 'Chapter', name: "chapter", widget: 'number', default: 01, value_type: 'int' }
|
40
42
|
- { label: 'Volume', name: "volume", widget: 'number', default: 01, value_type: 'int' }
|
41
43
|
- { label: 'Permalink', name: "permalink", widget: 'string', default: '/:basename/', required: false }
|
@@ -51,6 +53,7 @@ collections:
|
|
51
53
|
preview: false
|
52
54
|
fields:
|
53
55
|
- { label: 'Title', name: "title", widget: 'string' }
|
56
|
+
- { label: 'Published', name: 'published', widget: 'boolean', default: false, required: false }
|
54
57
|
- { label: 'Chapter', name: "chapter", widget: 'number', default: 01, value_type: 'int' }
|
55
58
|
- { label: 'Volume', name: "volume", widget: 'number', default: 01, value_type: 'int' }
|
56
59
|
- { label: 'Permalink', name: "permalink", widget: 'string', default: '/:basename/', required: false }
|
@@ -0,0 +1,56 @@
|
|
1
|
+
class CopyBtn {
|
2
|
+
constructor(
|
3
|
+
target = '[copy]',
|
4
|
+
attr = 'copy',
|
5
|
+
fun = (t) => {
|
6
|
+
alert(CopyBtn.copyMsg(t));
|
7
|
+
return(t);
|
8
|
+
}
|
9
|
+
) {
|
10
|
+
this.target = target;
|
11
|
+
this.field = attr;
|
12
|
+
this.fun = fun;
|
13
|
+
this.activateButtons();
|
14
|
+
}
|
15
|
+
|
16
|
+
activateButtons() {
|
17
|
+
document.querySelectorAll(this.target).forEach((b)=>{
|
18
|
+
b.addEventListener('click', (e)=>{
|
19
|
+
this.copyElementText(b);
|
20
|
+
})
|
21
|
+
})
|
22
|
+
}
|
23
|
+
|
24
|
+
copyElementText(el) {
|
25
|
+
var text = el.getAttribute(this.field);
|
26
|
+
console.log(text)
|
27
|
+
navigator.clipboard.writeText(this.fun(text, el));
|
28
|
+
}
|
29
|
+
|
30
|
+
static copyMsg(m) {
|
31
|
+
return('Copied: <code>'+m+'</code>');
|
32
|
+
}
|
33
|
+
}
|
34
|
+
|
35
|
+
|
36
|
+
// TODO: figure out how to import this vv
|
37
|
+
custom_alert_function = function(msg) {
|
38
|
+
var sp = document.createElement('span');
|
39
|
+
sp.innerHTML = msg;
|
40
|
+
document.querySelector('#alerts').appendChild(sp);
|
41
|
+
};
|
42
|
+
|
43
|
+
|
44
|
+
|
45
|
+
window.addEventListener('load', (e) => {
|
46
|
+
new CopyBtn('button[copy]', 'copy', (t) => {
|
47
|
+
custom_alert_function(CopyBtn.copyMsg(t));
|
48
|
+
return(t);
|
49
|
+
});
|
50
|
+
new CopyBtn('a[copy]', 'copy', (t)=>{
|
51
|
+
var cUrl = new URL(window.location);
|
52
|
+
cUrl.hash = t;
|
53
|
+
custom_alert_function(CopyBtn.copyMsg(cUrl));
|
54
|
+
return(cUrl);
|
55
|
+
});
|
56
|
+
});
|
data/assets/js/bookReader.js
CHANGED
@@ -1,18 +1,24 @@
|
|
1
1
|
class BookReader {
|
2
|
-
constructor (selector = '#reader', getCurrent = true) {
|
2
|
+
constructor (selector = '#reader', getCurrent = true, anchorTag = 'href') {
|
3
3
|
this.pNodes = document.querySelectorAll(`${selector} p`);
|
4
4
|
this.reader = document.querySelector(selector);
|
5
|
-
this.
|
6
|
-
this.
|
7
|
-
|
8
|
-
|
9
|
-
this.
|
10
|
-
|
5
|
+
this.setBookMarkLink();
|
6
|
+
if(this.reader) {
|
7
|
+
this.pSelected = null;
|
8
|
+
this.anchorTag = anchorTag;
|
9
|
+
this.anchorParagraphs();
|
10
|
+
this.scrollToAnchor();
|
11
|
+
if(getCurrent){
|
12
|
+
this.tackSelectedParagraph();
|
13
|
+
};
|
14
|
+
}
|
11
15
|
}
|
12
16
|
|
13
17
|
tackSelectedParagraph() {
|
14
18
|
this.pNodes.forEach((p, i) => {
|
15
|
-
p.addEventListener('click',(e) =>
|
19
|
+
p.addEventListener('click',(e) => {
|
20
|
+
this.setCurrent(p)
|
21
|
+
});
|
16
22
|
p.addEventListener('select',(e) => this.setCurrent(p));
|
17
23
|
});
|
18
24
|
}
|
@@ -33,11 +39,13 @@ class BookReader {
|
|
33
39
|
|
34
40
|
anchorParagraphs() {
|
35
41
|
var c = 0;
|
42
|
+
var anchorTag = this.anchorTag;
|
36
43
|
this.pNodes.forEach(function(p){
|
37
44
|
if(p.innerHTML.match('...')) {
|
38
45
|
c = c+1;
|
39
|
-
var a = document.createElement('a')
|
40
|
-
a.
|
46
|
+
var a = document.createElement('a');
|
47
|
+
a.addEventListener('click',(e)=>{BookReader.saveBookMark(c)});
|
48
|
+
a.setAttribute(anchorTag, `#p${c}`)
|
41
49
|
a.setAttribute('class', `anchor`)
|
42
50
|
p.setAttribute('id', `p${c}`)
|
43
51
|
a.innerHTML = String(c)
|
@@ -54,7 +62,32 @@ class BookReader {
|
|
54
62
|
document.querySelector(hash).scrollIntoView()
|
55
63
|
};
|
56
64
|
}
|
65
|
+
|
66
|
+
static saveBookMark(id) {
|
67
|
+
var url = new URL(window.location);
|
68
|
+
url.hash = '#p'+String(id);
|
69
|
+
window.localStorage.setItem('bookmark', url.href)
|
70
|
+
custom_alert_function('Saved Bookmark')
|
71
|
+
}
|
72
|
+
|
73
|
+
setBookMarkLink() {
|
74
|
+
var bm = new URL(window.localStorage.getItem('bookmark'));
|
75
|
+
if(bm != undefined) {
|
76
|
+
document.querySelectorAll('[go-to-bookmark]').forEach((b)=>{
|
77
|
+
b.setAttribute('href', bm.href)
|
78
|
+
b.setAttribute('title', 'Bookmark: '+bm.pathname+bm.hash)
|
79
|
+
})
|
80
|
+
}
|
81
|
+
}
|
57
82
|
}
|
83
|
+
|
84
|
+
// TODO: figure out how to import this vv
|
85
|
+
custom_alert_function = function(msg) {
|
86
|
+
var sp = document.createElement('span');
|
87
|
+
sp.innerHTML = msg;
|
88
|
+
document.querySelector('#alerts').appendChild(sp);
|
89
|
+
};
|
90
|
+
|
58
91
|
window.addEventListener('load', (e) => {
|
59
|
-
new BookReader('#reader', true);
|
92
|
+
new BookReader('#reader', true, 'copy');
|
60
93
|
});
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jekyll-web-novel
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- opsaaaaa
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-05-
|
11
|
+
date: 2022-05-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: webrick
|
@@ -36,20 +36,20 @@ dependencies:
|
|
36
36
|
requirements:
|
37
37
|
- - "~>"
|
38
38
|
- !ruby/object:Gem::Version
|
39
|
-
version: '4.
|
39
|
+
version: '4.3'
|
40
40
|
- - ">="
|
41
41
|
- !ruby/object:Gem::Version
|
42
|
-
version: 4.
|
42
|
+
version: 4.3.0
|
43
43
|
type: :development
|
44
44
|
prerelease: false
|
45
45
|
version_requirements: !ruby/object:Gem::Requirement
|
46
46
|
requirements:
|
47
47
|
- - "~>"
|
48
48
|
- !ruby/object:Gem::Version
|
49
|
-
version: '4.
|
49
|
+
version: '4.3'
|
50
50
|
- - ">="
|
51
51
|
- !ruby/object:Gem::Version
|
52
|
-
version: 4.
|
52
|
+
version: 4.3.0
|
53
53
|
- !ruby/object:Gem::Dependency
|
54
54
|
name: jekyll
|
55
55
|
requirement: !ruby/object:Gem::Requirement
|
@@ -103,10 +103,11 @@ files:
|
|
103
103
|
- LICENSE.txt
|
104
104
|
- README.md
|
105
105
|
- _boilerplates/chapter.md
|
106
|
-
- _boilerplates/page.md
|
107
106
|
- _boilerplates/preview.md
|
107
|
+
- _boilerplates/tab.md
|
108
108
|
- _boilerplates/volume.md
|
109
109
|
- _config.yml
|
110
|
+
- _includes/alerts.html
|
110
111
|
- _includes/chapter_header.html
|
111
112
|
- _includes/chapter_list.html
|
112
113
|
- _includes/chapter_nav.html
|
@@ -124,6 +125,7 @@ files:
|
|
124
125
|
- _layouts/root.html
|
125
126
|
- _layouts/volume.html
|
126
127
|
- _sass/jekyll-web-novel.sass
|
128
|
+
- _sass/web-novel/alerts.sass
|
127
129
|
- _sass/web-novel/chapter.sass
|
128
130
|
- _sass/web-novel/colors.sass
|
129
131
|
- _sass/web-novel/footer.sass
|
@@ -134,12 +136,11 @@ files:
|
|
134
136
|
- admin/index.html
|
135
137
|
- assets/404.html
|
136
138
|
- assets/css/style.sass
|
139
|
+
- assets/js/CopyBtn.js
|
137
140
|
- assets/js/bookReader.js
|
138
141
|
- assets/js/forwardNetlifyIdentityToken.js
|
139
142
|
- assets/js/scrollNav.js
|
140
143
|
- exe/jekyll-web-novel
|
141
|
-
- pages/chapters.md
|
142
|
-
- pages/home.md
|
143
144
|
homepage: https://github.com/opsaaaaa/web_novel_theme
|
144
145
|
licenses:
|
145
146
|
- MIT
|
data/pages/chapters.md
DELETED
data/pages/home.md
DELETED
@@ -1,16 +0,0 @@
|
|
1
|
-
---
|
2
|
-
title: Web Novel Theme for Jekyll
|
3
|
-
permalink: /
|
4
|
-
layout: home
|
5
|
-
start_chapter: 1
|
6
|
-
---
|
7
|
-
|
8
|
-
# {{ site.novel.title }}
|
9
|
-
|
10
|
-
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Orci porta non pulvinar neque laoreet suspendisse interdum. Ut porttitor leo a diam sollicitudin tempor id eu nisl.
|
11
|
-
{: .big-text}
|
12
|
-
|
13
|
-
|
14
|
-
{% assign cht1 = site.chapters | find: 'chapter', page.start_chapter %}
|
15
|
-
[Read Now]({{ cht1.url | relative_url}}#reader){: .mega-link}
|
16
|
-
|