mirror of
https://github.com/cotes2020/jekyll-theme-chirpy.git
synced 2025-12-20 14:42:46 +00:00
Compare commits
24 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b28724b4d4 | ||
|
|
75c57d1725 | ||
|
|
032f5c7f83 | ||
|
|
75e462a9e9 | ||
|
|
ef3860004e | ||
|
|
032706d27f | ||
|
|
02a269910f | ||
|
|
abdf73fff4 | ||
|
|
be1d1554ea | ||
|
|
a2deea6537 | ||
|
|
1a2767ca24 | ||
|
|
cfb67a1cb9 | ||
|
|
171faafc67 | ||
|
|
db5eb0a18a | ||
|
|
582ea30459 | ||
|
|
064cefd9ff | ||
|
|
a57baf7e2c | ||
|
|
473ab64f74 | ||
|
|
c5783c1289 | ||
|
|
a64d00c1e6 | ||
|
|
7382eaa953 | ||
|
|
bcd394598b | ||
|
|
6d38f643ae | ||
|
|
532e7ad451 |
4
.github/CONTRIBUTING.md
vendored
4
.github/CONTRIBUTING.md
vendored
@@ -2,12 +2,12 @@
|
|||||||
|
|
||||||
I want to thank you for sparing a time to improve this project! Here are some guidelines for contributing:
|
I want to thank you for sparing a time to improve this project! Here are some guidelines for contributing:
|
||||||
|
|
||||||
To ensure that the blog design is not confused, this project do not accept suggestions for design changes, such as colors scheme, fonts, typography, etc. If your request is about enhancement, it is recommended to first submit a `Feature Request` type issue to discuss whether your idea fits the project.
|
To ensure that the blog design is not confused, this project does not accept suggestions for design changes, such as color scheme, fonts, typography, etc. If your request is about an enhancement, it is recommended to first submit a `Feature Request` type issue to discuss whether your idea fits the project.
|
||||||
|
|
||||||
Generally, contribute to the project by:
|
Generally, contribute to the project by:
|
||||||
|
|
||||||
1. Fork this project.
|
1. Fork this project.
|
||||||
2. Create a new branch `my-new-freature`(or `fix-a-bug`), then complete the development, commit and push.
|
2. Create a new branch `my-new-feature`(or `fix-a-bug`), then complete the development, commit and push.
|
||||||
3. Submit a new `Pull Request`.
|
3. Submit a new `Pull Request`.
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
2
.github/workflows/ci.yml
vendored
2
.github/workflows/ci.yml
vendored
@@ -1,4 +1,4 @@
|
|||||||
name: build
|
name: 'Continuous Integration'
|
||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches-ignore:
|
branches-ignore:
|
||||||
|
|||||||
23
.github/workflows/issues-cleaner.yml
vendored
Normal file
23
.github/workflows/issues-cleaner.yml
vendored
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
name: "Close stale issues"
|
||||||
|
on:
|
||||||
|
schedule:
|
||||||
|
- cron: "0 0 * * *"
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
stale:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- env:
|
||||||
|
DAYS_TO_STALE: ${{ 5 }}
|
||||||
|
DAYS_TO_CLOSE: ${{ 2 }}
|
||||||
|
uses: actions/stale@v3
|
||||||
|
with:
|
||||||
|
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
stale-issue-message: 'This issue is stale because it has been open ${{ env.DAYS_TO_STALE }} days with no activity. Remove stale label or comment or this will be closed in ${{ env.DAYS_TO_STALE }} days'
|
||||||
|
stale-pr-message: 'Stale pull request message'
|
||||||
|
stale-issue-label: 'no-activity'
|
||||||
|
exempt-issue-labels: 'pending,in-progress'
|
||||||
|
stale-pr-label: 'no-activity'
|
||||||
|
exempt-pr-labels: 'pending,in-progress'
|
||||||
|
days-before-stale: ${{ env.DAYS_TO_STALE }}
|
||||||
|
days-before-close: ${{ env.DAYS_TO_CLOSE }}
|
||||||
@@ -28,6 +28,7 @@ A minimal, sidebar, responsive web design Jekyll theme, focusing on text present
|
|||||||
* Table of Contents
|
* Table of Contents
|
||||||
* Automatically recommend related posts
|
* Automatically recommend related posts
|
||||||
* Syntax highlighting
|
* Syntax highlighting
|
||||||
|
* Mathematical expressions
|
||||||
* Search
|
* Search
|
||||||
* Atom Feeds
|
* Atom Feeds
|
||||||
* Disqus Comments
|
* Disqus Comments
|
||||||
@@ -39,7 +40,7 @@ A minimal, sidebar, responsive web design Jekyll theme, focusing on text present
|
|||||||
|
|
||||||
### Prerequisites
|
### Prerequisites
|
||||||
|
|
||||||
Follow the [Jekyll Docs](https://jekyllrb.com/docs/installation/) to complete the installtion of basic environment (`Ruby `, `RubyGems` and `Bundler`).
|
Follow the [Jekyll Docs](https://jekyllrb.com/docs/installation/) to complete the installation of basic environment (`Ruby`, `RubyGems` and `Bundler`).
|
||||||
|
|
||||||
To improve the writing experience, we need to use some script tools. If your machine is running Debian or macOS, make sure that [GNU coreutils](https://www.gnu.org/software/coreutils/) is installed. Otherwise, install by:
|
To improve the writing experience, we need to use some script tools. If your machine is running Debian or macOS, make sure that [GNU coreutils](https://www.gnu.org/software/coreutils/) is installed. Otherwise, install by:
|
||||||
|
|
||||||
@@ -126,7 +127,7 @@ Generally, go to `_config.yml` and configure the variables as needed. Some of th
|
|||||||
|
|
||||||
* `avatar`
|
* `avatar`
|
||||||
|
|
||||||
It defines the image file location of avatar. The sample image is `/assets/img/sample/avatar.jpg`, and should be replaced by your own one(a square image). Notice that a huge image file will increase the load time of your site, so keep your avatar image size as samll as possible(may be *<https://tinypng.com/>* will help).
|
It defines the image file location of avatar. The sample image is `/assets/img/sample/avatar.jpg`, and should be replaced by your own one(a square image). Notice that a huge image file will increase the load time of your site, so keep your avatar image size as small as possible(may be *<https://tinypng.com/>* will help).
|
||||||
|
|
||||||
* `timezone`
|
* `timezone`
|
||||||
|
|
||||||
@@ -150,7 +151,7 @@ You may want to preview the site content before publishing, so just run the scri
|
|||||||
$ bash tools/run.sh
|
$ bash tools/run.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
Open a modern brower and visit at <http://localhost:4000>.
|
Open a modern browser and visit at <http://localhost:4000>.
|
||||||
|
|
||||||
Few days later, you may find that the file modification(e.g. edits to a post) does not refresh in real time by using `run.sh`. Don't worry, the advanced option `-r` (or `--realtime`) will solve this problem, but it requires [**fswatch**](http://emcrisostomo.github.io/fswatch/) to be installed on your machine. Type `-h` for more information.
|
Few days later, you may find that the file modification(e.g. edits to a post) does not refresh in real time by using `run.sh`. Don't worry, the advanced option `-r` (or `--realtime`) will solve this problem, but it requires [**fswatch**](http://emcrisostomo.github.io/fswatch/) to be installed on your machine. Type `-h` for more information.
|
||||||
|
|
||||||
|
|||||||
@@ -158,11 +158,6 @@ defaults:
|
|||||||
-
|
-
|
||||||
label: Home
|
label: Home
|
||||||
url: /
|
url: /
|
||||||
-
|
|
||||||
scope:
|
|
||||||
path: assets/data
|
|
||||||
values:
|
|
||||||
layout: compress
|
|
||||||
|
|
||||||
|
|
||||||
sass:
|
sass:
|
||||||
@@ -181,7 +176,7 @@ compress_html:
|
|||||||
envs: []
|
envs: []
|
||||||
|
|
||||||
exclude:
|
exclude:
|
||||||
- vendor # Avoid Jekyll mistakenly read the vender directory on Travis-CI's VM .
|
- vendor # Avoid Jekyll mistakenly read the vendor directory on Travis-CI's VM .
|
||||||
- Gemfile.lock
|
- Gemfile.lock
|
||||||
- Gemfile
|
- Gemfile
|
||||||
- tools
|
- tools
|
||||||
|
|||||||
28
_data/contact.yml
Normal file
28
_data/contact.yml
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
# The contact options.
|
||||||
|
# v2.3
|
||||||
|
# https://github.com/cotes2020/jekyll-theme-chirpy
|
||||||
|
# © 2020 Cotes Chung
|
||||||
|
# MIT Licensed
|
||||||
|
|
||||||
|
-
|
||||||
|
type: github
|
||||||
|
icon: 'fab fa-github-alt'
|
||||||
|
-
|
||||||
|
type: twitter
|
||||||
|
icon: 'fab fa-twitter'
|
||||||
|
-
|
||||||
|
type: email
|
||||||
|
icon: 'fas fa-envelope'
|
||||||
|
noblank: true # open link in current tab
|
||||||
|
-
|
||||||
|
type: rss
|
||||||
|
icon: 'fas fa-rss'
|
||||||
|
noblank: true
|
||||||
|
|
||||||
|
# Complete the url below to enable more contact options
|
||||||
|
-
|
||||||
|
icon: 'fab fa-linkedin' # icons powered by <https://fontawesome.com/>
|
||||||
|
url: '' # Fill with your Linkedin homepage
|
||||||
|
-
|
||||||
|
icon: 'fab fa-stack-overflow'
|
||||||
|
url: '' # Fill with your stackoverflow homepage
|
||||||
@@ -24,6 +24,11 @@ platforms:
|
|||||||
|
|
||||||
# Uncomment below if you need to.
|
# Uncomment below if you need to.
|
||||||
# -
|
# -
|
||||||
|
# type: Linkedin
|
||||||
|
# icon: "fab fa-linkedin"
|
||||||
|
# link: "https://www.linkedin.com/sharing/share-offsite/?url=URL"
|
||||||
|
#
|
||||||
|
# -
|
||||||
# type: Weibo
|
# type: Weibo
|
||||||
# icon: "fab fa-weibo"
|
# icon: "fab fa-weibo"
|
||||||
# link: "http://service.weibo.com/share/share.php?title=TITLE&url=URL"
|
# link: "http://service.weibo.com/share/share.php?title=TITLE&url=URL"
|
||||||
|
|||||||
54
_includes/css-selector.html
Normal file
54
_includes/css-selector.html
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
<!--
|
||||||
|
CSS selector for site.
|
||||||
|
Chirpy v2.3
|
||||||
|
https://github.com/cotes2020/jekyll-theme-chirpy
|
||||||
|
© 2020 Cotes Chung
|
||||||
|
MIT Licensed
|
||||||
|
-->
|
||||||
|
|
||||||
|
{% if page.layout == 'home' %}
|
||||||
|
<link rel="preload" href="{{ '/assets/css/home.css' | relative_url }}" as="style">
|
||||||
|
<link rel="stylesheet" href="{{ '/assets/css/home.css' | relative_url }}">
|
||||||
|
|
||||||
|
{% elsif page.layout == 'page' %}
|
||||||
|
|
||||||
|
{% if page.title == 'Categories' %}
|
||||||
|
|
||||||
|
<link rel="preload" href="{{ '/assets/css/categories.css' | relative_url }}" as="style">
|
||||||
|
<link rel="stylesheet" href="{{ '/assets/css/categories.css' | relative_url }}">
|
||||||
|
|
||||||
|
{% elsif page.title == 'Tags' %}
|
||||||
|
|
||||||
|
<link rel="preload" href="{{ '/assets/css/tags.css' | relative_url }}" as="style">
|
||||||
|
<link rel="stylesheet" href="{{ '/assets/css/tags.css' | relative_url }}">
|
||||||
|
|
||||||
|
{% elsif page.title == 'Archives' %}
|
||||||
|
|
||||||
|
<link rel="preload" href="{{ '/assets/css/archives.css' | relative_url }}" as="style">
|
||||||
|
<link rel="stylesheet" href="{{ '/assets/css/archives.css' | relative_url }}">
|
||||||
|
|
||||||
|
{% else %}
|
||||||
|
|
||||||
|
<link rel="preload" href="{{ '/assets/css/page.css' | relative_url }}" as="style">
|
||||||
|
<link rel="stylesheet" href="{{ '/assets/css/page.css' | relative_url }}">
|
||||||
|
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% elsif page.layout == 'category' or page.layout == 'tag' %}
|
||||||
|
|
||||||
|
<link rel="preload" href="{{ '/assets/css/category-tag.css' | relative_url }}" as="style">
|
||||||
|
<link rel="stylesheet" href="{{ '/assets/css/category-tag.css' | relative_url }}">
|
||||||
|
|
||||||
|
{% elsif page.layout == 'post' %}
|
||||||
|
|
||||||
|
<link rel="preload" as="style" href="{{ '/assets/css/post.css' | relative_url }}">
|
||||||
|
<link rel="stylesheet" href="{{ '/assets/css/post.css' | relative_url }}">
|
||||||
|
|
||||||
|
{% if site.toc and page.toc %}
|
||||||
|
|
||||||
|
<link rel="preload" as="style" href="{{ '/assets/css/lib/bootstrap-toc.min.css' | relative_url }}">
|
||||||
|
<link rel="stylesheet" href="{{ '/assets/css/lib/bootstrap-toc.min.css' | relative_url }}" />
|
||||||
|
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% endif %}
|
||||||
@@ -11,7 +11,7 @@
|
|||||||
<p class="font-italic text-muted small">Comments powered by <a href="https://disqus.com/">Disqus</a>.</p>
|
<p class="font-italic text-muted small">Comments powered by <a href="https://disqus.com/">Disqus</a>.</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script src="{{ site.baseurl }}/assets/lib/jquery.disqusloader.min.js"></script>
|
<script src="{{ site.baseurl }}/assets/js/lib/jquery.disqusloader.min.js"></script>
|
||||||
<script>
|
<script>
|
||||||
var options = {
|
var options = {
|
||||||
scriptUrl: '//{{ site.disqus.shortname }}.disqus.com/embed.js',
|
scriptUrl: '//{{ site.disqus.shortname }}.disqus.com/embed.js',
|
||||||
|
|||||||
@@ -11,22 +11,21 @@
|
|||||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||||
|
|
||||||
<title>
|
<title>
|
||||||
{%- if page.layout == "home" -%}
|
{%- unless page.layout == "home" -%}
|
||||||
{{- site.title -}}
|
{{ page.title | append: " | "}}
|
||||||
{%- else -%}
|
{%- endunless -%}
|
||||||
{{ page.title }} | {{ site.title }}
|
{{ site.title }}
|
||||||
{%- endif -%}
|
|
||||||
</title>
|
</title>
|
||||||
|
|
||||||
{% seo title=false %}
|
{% seo title=false %}
|
||||||
|
|
||||||
{% include favicons.html %}
|
{% include favicons.html %}
|
||||||
|
|
||||||
<!-- google fonts -->
|
<!-- Google Fonts -->
|
||||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin="anonymous">
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin="anonymous">
|
||||||
<link rel="dns-prefetch" href="https://fonts.gstatic.com">
|
<link rel="dns-prefetch" href="https://fonts.gstatic.com">
|
||||||
|
|
||||||
<!-- ga -->
|
<!-- GA -->
|
||||||
{% if jekyll.environment == 'production' %}
|
{% if jekyll.environment == 'production' %}
|
||||||
<link rel="preconnect" href="https://www.google-analytics.com" crossorigin="use-credentials">
|
<link rel="preconnect" href="https://www.google-analytics.com" crossorigin="use-credentials">
|
||||||
<link rel="dns-prefetch" href="https://www.google-analytics.com">
|
<link rel="dns-prefetch" href="https://www.google-analytics.com">
|
||||||
@@ -40,111 +39,37 @@
|
|||||||
{% endif %}
|
{% endif %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
<!-- jsdelivr CDN -->
|
<!-- jsDelivr CDN -->
|
||||||
<link rel="preconnect" href="cdn.jsdelivr.net">
|
<link rel="preconnect" href="cdn.jsdelivr.net">
|
||||||
<link rel="dns-prefetch" href="cdn.jsdelivr.net">
|
<link rel="dns-prefetch" href="cdn.jsdelivr.net">
|
||||||
|
|
||||||
|
<!-- Bootstrap -->
|
||||||
<link rel="preload" as="style"
|
<link rel="preload" as="style"
|
||||||
href="https://cdn.jsdelivr.net/npm/bootstrap@4.0.0/dist/css/bootstrap.min.css"
|
href="https://cdn.jsdelivr.net/npm/bootstrap@4.0.0/dist/css/bootstrap.min.css"
|
||||||
integrity="sha256-LA89z+k9fjgMKQ/kq4OO2Mrf8VltYml/VES+Rg0fh20=" crossorigin>
|
integrity="sha256-LA89z+k9fjgMKQ/kq4OO2Mrf8VltYml/VES+Rg0fh20=" crossorigin>
|
||||||
|
|
||||||
<link rel="preload" as="style"
|
|
||||||
href="https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@5.11.2/css/all.min.css"
|
|
||||||
integrity="sha256-+N4/V/SbAFiW1MPBCXnfnP9QSN3+Keu+NlB+0ev/YKQ="
|
|
||||||
crossorigin="anonymous">
|
|
||||||
|
|
||||||
<link rel="stylesheet"
|
<link rel="stylesheet"
|
||||||
href="https://cdn.jsdelivr.net/npm/bootstrap@4.0.0/dist/css/bootstrap.min.css"
|
href="https://cdn.jsdelivr.net/npm/bootstrap@4.0.0/dist/css/bootstrap.min.css"
|
||||||
integrity="sha256-LA89z+k9fjgMKQ/kq4OO2Mrf8VltYml/VES+Rg0fh20=" crossorigin="anonymous">
|
integrity="sha256-LA89z+k9fjgMKQ/kq4OO2Mrf8VltYml/VES+Rg0fh20=" crossorigin="anonymous">
|
||||||
|
|
||||||
|
<!-- Font Awesome -->
|
||||||
<link rel="stylesheet"
|
<link rel="stylesheet"
|
||||||
href="https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@5.11.2/css/all.min.css"
|
href="https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@5.11.2/css/all.min.css"
|
||||||
integrity="sha256-+N4/V/SbAFiW1MPBCXnfnP9QSN3+Keu+NlB+0ev/YKQ="
|
integrity="sha256-+N4/V/SbAFiW1MPBCXnfnP9QSN3+Keu+NlB+0ev/YKQ="
|
||||||
crossorigin="anonymous">
|
crossorigin="anonymous">
|
||||||
|
|
||||||
{% if page.layout == 'home' %}
|
{% include css-selector.html %}
|
||||||
<link rel="preload" href="{{ site.baseurl }}/assets/css/home.css" as="style">
|
|
||||||
<link rel="stylesheet" href="{{ site.baseurl }}/assets/css/home.css">
|
|
||||||
|
|
||||||
{% elsif page.layout == 'page' %}
|
<!-- JavaScripts -->
|
||||||
|
|
||||||
{% if page.title == 'Categories' %}
|
<link rel="preload" as="script" href="https://cdn.jsdelivr.net/npm/jquery@3.4.1"
|
||||||
<link rel="preload" href="{{ site.baseurl }}/assets/css/categories.css" as="style">
|
|
||||||
<link rel="stylesheet" href="{{ site.baseurl }}/assets/css/categories.css">
|
|
||||||
|
|
||||||
{% elsif page.title == 'Tags' %}
|
|
||||||
<link rel="preload" href="{{ site.baseurl }}/assets/css/tags.css" as="style">
|
|
||||||
<link rel="stylesheet" href="{{ site.baseurl }}/assets/css/tags.css">
|
|
||||||
|
|
||||||
{% elsif page.title == 'Archives' %}
|
|
||||||
<link rel="preload" href="{{ site.baseurl }}/assets/css/archives.css" as="style">
|
|
||||||
<link rel="stylesheet" href="{{ site.baseurl }}/assets/css/archives.css">
|
|
||||||
|
|
||||||
{% else %}
|
|
||||||
<link rel="preload" href="{{ site.baseurl }}/assets/css/page.css" as="style">
|
|
||||||
<link rel="stylesheet" href="{{ site.baseurl }}/assets/css/page.css">
|
|
||||||
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% elsif page.layout == 'category' or page.layout == 'tag' %}
|
|
||||||
<link rel="preload" href="{{ site.baseurl }}/assets/css/category-tag.css" as="style">
|
|
||||||
<link rel="stylesheet" href="{{ site.baseurl }}/assets/css/category-tag.css">
|
|
||||||
|
|
||||||
{% elsif page.layout == 'post' %}
|
|
||||||
<link rel="preload" as="style" href="{{ site.baseurl }}/assets/css/post.css">
|
|
||||||
<link rel="stylesheet" href="{{ site.baseurl }}/assets/css/post.css">
|
|
||||||
|
|
||||||
{% if site.toc and page.toc %}
|
|
||||||
<link rel="preload" as="style" href="{{ site.baseurl }}/assets/lib/bootstrap-toc-1.0.1/bootstrap-toc.min.css">
|
|
||||||
<link rel="stylesheet" href="{{ site.baseurl }}/assets/lib/bootstrap-toc-1.0.1/bootstrap-toc.min.css" />
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
|
|
||||||
<!-- jquery -->
|
|
||||||
<link rel="preload" as="script"
|
|
||||||
href="https://cdn.jsdelivr.net/npm/jquery@3.4.1/dist/jquery.min.js"
|
|
||||||
integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous">
|
integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous">
|
||||||
|
|
||||||
<!-- popper -->
|
<script src="https://cdn.jsdelivr.net/npm/jquery@3.4.1"
|
||||||
<link rel="preload" as="script"
|
|
||||||
href="https://cdn.jsdelivr.net/npm/popper.js@1.15.0/dist/umd/popper.min.js"
|
|
||||||
integrity="sha256-fTuUgtT7O2rqoImwjrhDgbXTKUwyxxujIMRIK7TbuNU=" crossorigin>
|
|
||||||
|
|
||||||
<script src="https://cdn.jsdelivr.net/npm/jquery@3.4.1/dist/jquery.min.js"
|
|
||||||
integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script>
|
integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script>
|
||||||
|
|
||||||
<script>
|
<script src="https://cdn.jsdelivr.net/combine/npm/popper.js@1.15.0,npm/bootstrap@4.0.0/dist/js/bootstrap.min.js" async></script>
|
||||||
window.jQuery || document.write('<script src="{{ site.baseurl }}/assets/lib/jquery-3.4.1.min.js"><\/script>');
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.15.0/dist/umd/popper.min.js"
|
{% include js-selector.html %}
|
||||||
integrity="sha256-fTuUgtT7O2rqoImwjrhDgbXTKUwyxxujIMRIK7TbuNU=" crossorigin="anonymous"></script>
|
|
||||||
|
|
||||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.0.0/dist/js/bootstrap.min.js"
|
|
||||||
integrity="sha256-5+02zu5UULQkO7w1GIr6vftCgMfFdZcAHeDtFnKZsBs=" crossorigin="anonymous" async></script>
|
|
||||||
|
|
||||||
<script src="{{ site.baseurl }}/assets/js/dist/commons.js" async></script>
|
|
||||||
|
|
||||||
{% if page.layout == 'home' or page.layout == 'post' %}
|
|
||||||
<script src="{{ site.baseurl }}/assets/js/dist/timeago.min.js" async></script>
|
|
||||||
{% if site.google_analytics.pv.enabled %}
|
|
||||||
<script src="{{ site.baseurl }}/assets/data/pv-data.json"></script>
|
|
||||||
<script src="{{ site.baseurl }}/assets/lib/countUp.min.js" async></script>
|
|
||||||
<script src="{{ site.baseurl }}/assets/js/dist/pageviews.min.js" async></script>
|
|
||||||
{% endif %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% if site.toc and page.toc and page.layout == 'post' %}
|
|
||||||
<link rel="preload" as="script" href="{{ site.baseurl }}/assets/lib/bootstrap-toc-1.0.1/bootstrap-toc.min.js">
|
|
||||||
<script src="{{ site.baseurl }}/assets/lib/bootstrap-toc-1.0.1/bootstrap-toc.min.js" async></script>
|
|
||||||
<script src="{{ site.baseurl }}/assets/js/dist/toc.min.js" async></script>
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
<script src="{{ site.baseurl }}/assets/js/dist/tooltip-loader.min.js" async></script>
|
|
||||||
|
|
||||||
<!-- PWA -->
|
|
||||||
<script src="{{ '/app.js' | relative_url }}" defer></script>
|
|
||||||
|
|
||||||
</head>
|
</head>
|
||||||
41
_includes/js-selector.html
Normal file
41
_includes/js-selector.html
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
<!--
|
||||||
|
JS selector for site.
|
||||||
|
Chirpy v2.3
|
||||||
|
https://github.com/cotes2020/jekyll-theme-chirpy
|
||||||
|
© 2020 Cotes Chung
|
||||||
|
MIT Licensed
|
||||||
|
-->
|
||||||
|
|
||||||
|
{% if page.layout == 'home' %}
|
||||||
|
|
||||||
|
<script src="{{ '/assets/js/home.min.js' | relative_url }}" async></script>
|
||||||
|
|
||||||
|
{% elsif page.layout == 'post' %}
|
||||||
|
|
||||||
|
<script src="{{ '/assets/js/post.min.js' | relative_url }}" async></script>
|
||||||
|
|
||||||
|
{% if page.math %}
|
||||||
|
<!-- MathJax -->
|
||||||
|
<script src="https://polyfill.io/v3/polyfill.min.js?features=es6"></script>
|
||||||
|
<script src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js" async></script>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% elsif page.layout == 'page' %}
|
||||||
|
|
||||||
|
{% if page.title == 'Categories' %}
|
||||||
|
<script src="{{ '/assets/js/categories.min.js' | relative_url }}" async></script>
|
||||||
|
{% else %}
|
||||||
|
<script src="{{ '/assets/js/page.min.js' | relative_url }}" async></script>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% else %}
|
||||||
|
|
||||||
|
<script src="{{ '/assets/js/page.min.js' | relative_url }}" async></script>
|
||||||
|
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
|
||||||
|
<!-- PWA -->
|
||||||
|
{% if jekyll.environment == 'production' %}
|
||||||
|
<script src="{{ '/app.js' | relative_url }}" defer></script>
|
||||||
|
{% endif %}
|
||||||
@@ -1,7 +1,8 @@
|
|||||||
<!-- image lazy load: https://github.com/ApoorvSaxena/lozad.js -->
|
<!-- image lazy load: https://github.com/ApoorvSaxena/lozad.js -->
|
||||||
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/lozad/dist/lozad.min.js"></script>
|
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/lozad/dist/lozad.min.js"></script>
|
||||||
|
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
const el = document.querySelectorAll('#post-wrapper img');
|
const imgs = document.querySelectorAll('#post-wrapper img');
|
||||||
const observer = lozad(el);
|
const observer = lozad(imgs);
|
||||||
observer.observe();
|
observer.observe();
|
||||||
</script>
|
</script>
|
||||||
@@ -27,7 +27,7 @@
|
|||||||
{% assign post = site.posts | where: "url", post_url | first %}
|
{% assign post = site.posts | where: "url", post_url | first %}
|
||||||
|
|
||||||
{% if post %}
|
{% if post %}
|
||||||
{% assign url = post.url | prepend: site.baseurl %}
|
{% assign url = post.url | relative_url %}
|
||||||
|
|
||||||
<li><a href="{{ url }}">{{ post.title }}</a></li>
|
<li><a href="{{ url }}">{{ post.title }}</a></li>
|
||||||
|
|
||||||
@@ -45,18 +45,22 @@
|
|||||||
|
|
||||||
{% endif %} <!-- site.data.updates -->
|
{% endif %} <!-- site.data.updates -->
|
||||||
|
|
||||||
|
{% include trending_tags.html %}
|
||||||
|
|
||||||
|
{% if trending_tags.size > 0 %}
|
||||||
<div id="access-tags">
|
<div id="access-tags">
|
||||||
<h3 data-toc-skip>
|
<h3 data-toc-skip>
|
||||||
{{- site.data.label.panel.trending_tags -}}
|
{{- site.data.label.panel.trending_tags -}}
|
||||||
</h3>
|
</h3>
|
||||||
<div class="d-flex flex-wrap mt-3 mb-1 mr-3">
|
<div class="d-flex flex-wrap mt-3 mb-1 mr-3">
|
||||||
{% include trending-tags.html %}
|
|
||||||
{% for tag in trending_tags %}
|
{% for tag in trending_tags %}
|
||||||
{% capture url %}/tags/{{ tag | downcase | url_encode }}/{% endcapture %}
|
{% capture url %}/tags/{{ tag | downcase | url_encode }}/{% endcapture %}
|
||||||
<a class="post-tag" href="{{ url | relative_url }}">{{ tag | replace: '-', ' ' }}</a>
|
<a class="post-tag" href="{{ url | relative_url }}">{{ tag | replace: '-', ' ' }}</a>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
</div> <!-- .access -->
|
</div> <!-- .access -->
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,6 @@
|
|||||||
© 2017-2019 Cotes Chung
|
© 2017-2019 Cotes Chung
|
||||||
MIT License
|
MIT License
|
||||||
-->
|
-->
|
||||||
<script src="https://cdn.jsdelivr.net/npm/simple-jekyll-search@1.7.3/dest/simple-jekyll-search.min.js" integrity="sha256-qcLR00zq6pJk4je3MLgAri8Nn+ZumUlXgTKR2H/xCY0=" crossorigin="anonymous"></script>
|
|
||||||
|
|
||||||
{% capture result_elem %}
|
{% capture result_elem %}
|
||||||
<div class="pl-1 pr-1 pl-sm-2 pr-sm-2 pl-lg-4 pr-lg-4 pl-xl-0 pr-xl-0">
|
<div class="pl-1 pr-1 pl-sm-2 pr-sm-2 pl-lg-4 pr-lg-4 pl-xl-0 pr-xl-0">
|
||||||
@@ -20,11 +19,13 @@
|
|||||||
|
|
||||||
{% capture not_found %}<p class="mt-5">Oops! No result founds.</p>{% endcapture %}
|
{% capture not_found %}<p class="mt-5">Oops! No result founds.</p>{% endcapture %}
|
||||||
|
|
||||||
|
<script src="https://cdn.jsdelivr.net/npm/simple-jekyll-search@1.7.3/dest/simple-jekyll-search.min.js"></script>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
SimpleJekyllSearch({
|
SimpleJekyllSearch({
|
||||||
searchInput: document.getElementById('search-input'),
|
searchInput: document.getElementById('search-input'),
|
||||||
resultsContainer: document.getElementById('search-results'),
|
resultsContainer: document.getElementById('search-results'),
|
||||||
json: '{{ site.baseurl }}/assets/data/search.json',
|
json: '{{ site.baseurl }}/assets/js/data/search.json',
|
||||||
searchResultTemplate: '{{ result_elem | strip_newlines }}',
|
searchResultTemplate: '{{ result_elem | strip_newlines }}',
|
||||||
noResultsText: '{{ not_found }}'
|
noResultsText: '{{ not_found }}'
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
<div class="col-12 col-xl-11 post-content">
|
<div class="col-12 col-xl-11 post-content">
|
||||||
<div id="search-hints">
|
<div id="search-hints">
|
||||||
<h4 class="text-muted mb-4">{{ site.data.label.panel.trending_tags }}</h4>
|
<h4 class="text-muted mb-4">{{ site.data.label.panel.trending_tags }}</h4>
|
||||||
{% include trending-tags.html %}
|
{% include trending_tags.html %}
|
||||||
{% for tag in trending_tags %}
|
{% for tag in trending_tags %}
|
||||||
{% capture url %}/tags/{{ tag | downcase | url_encode }}/{% endcapture %}
|
{% capture url %}/tags/{{ tag | downcase | url_encode }}/{% endcapture %}
|
||||||
<a class="post-tag" href="{{ url | relative_url }}">{{ tag | replace: '-', ' ' }}</a>
|
<a class="post-tag" href="{{ url | relative_url }}">{{ tag | replace: '-', ' ' }}</a>
|
||||||
|
|||||||
@@ -20,10 +20,10 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="profile-text mt-3">
|
<div class="profile-text mt-3">
|
||||||
<div id="site-title">
|
<div class="site-title">
|
||||||
<a href="{{ site.baseurl }}/">{{- site.title -}}</a>
|
<a href="{{ '/' | relative_url }}">{{- site.title -}}</a>
|
||||||
</div>
|
</div>
|
||||||
<div id="site-subtitle" class="font-italic">{{- site.tagline -}}</div>
|
<div class="site-subtitle font-italic">{{- site.tagline -}}</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -64,18 +64,27 @@
|
|||||||
<span class="icon-border"></span>
|
<span class="icon-border"></span>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
<a href="https://github.com/{{ site.github.username }}" target="_blank">
|
{% for entry in site.data.contact %}
|
||||||
<i class="fab fa-github-alt"></i>
|
{% capture url %}
|
||||||
</a>
|
{%- if entry.type == 'github' -%}
|
||||||
<a href="https://twitter.com/{{ site.twitter.username }}" target="_blank">
|
https://github.com/{{ site.github.username }}
|
||||||
<i class="fab fa-twitter"></i>
|
{%- elsif entry.type == 'twitter' -%}
|
||||||
</a>
|
https://twitter.com/{{ site.twitter.username }}
|
||||||
{% assign email = site.social.email | split: '@' %}
|
{%- elsif entry.type == 'email' -%}
|
||||||
<a href="javascript:window.open('mailto:' + ['{{ email[0] }}','{{ email[1] }}'].join('@'))">
|
{% assign email = site.social.email | split: '@' %}
|
||||||
<i class="fas fa-envelope"></i>
|
javascript:window.open('mailto:' + ['{{ email[0] }}','{{ email[1] }}'].join('@'))
|
||||||
</a>
|
{%- elsif entry.type == 'rss' -%}
|
||||||
<a href="{{ site.baseurl }}/feed.xml" target="_blank">
|
{{ "/feed.xml" | relative_url }}
|
||||||
<i class="fas fa-rss"></i>
|
{%- else -%}
|
||||||
</a>
|
{{ entry.url }}
|
||||||
|
{%- endif -%}
|
||||||
|
{% endcapture %}
|
||||||
|
|
||||||
|
{% if url != '' %}
|
||||||
|
<a href="{{ url }}" {% unless entry.noblank %}target="_blank"{% endunless %}>
|
||||||
|
<i class="{{ entry.icon }}"></i>
|
||||||
|
</a>
|
||||||
|
{% endif %}
|
||||||
|
{% endfor %}
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
@@ -16,7 +16,7 @@ layout: page
|
|||||||
<ul class="post-content pl-0">
|
<ul class="post-content pl-0">
|
||||||
{% for post in site.categories[page.category] %}
|
{% for post in site.categories[page.category] %}
|
||||||
<li class="d-flex justify-content-between pl-md-3 pr-md-3">
|
<li class="d-flex justify-content-between pl-md-3 pr-md-3">
|
||||||
<a href="{{ post.url | absolute_url }}">{{ post.title }}</a>
|
<a href="{{ post.url | relative_url }}">{{ post.title }}</a>
|
||||||
<span class="dash flex-grow-1"></span>
|
<span class="dash flex-grow-1"></span>
|
||||||
<span class="text-muted small">{{ post.date | date: site.data.date_format.post }}</span>
|
<span class="text-muted small">{{ post.date | date: site.data.date_format.post }}</span>
|
||||||
</li>
|
</li>
|
||||||
|
|||||||
@@ -9,13 +9,19 @@ layout: compress
|
|||||||
|
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
|
|
||||||
|
{% if site.lang %}
|
||||||
|
{% assign lang = site.lang | split: "_" | first %}
|
||||||
|
{% else %}
|
||||||
|
{% assign lang = 'en' %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
{% capture prefer_mode %}
|
{% capture prefer_mode %}
|
||||||
{% if site.theme_mode != "dual" %}
|
{% if site.theme_mode != "dual" %}
|
||||||
mode="{{ site.theme_mode }}"
|
mode="{{ site.theme_mode }}"
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endcapture %}
|
{% endcapture %}
|
||||||
|
|
||||||
<html lang="en" {{ prefer_mode }} >
|
<html lang="{{ lang }}" {{ prefer_mode }} >
|
||||||
|
|
||||||
{% include head.html %}
|
{% include head.html %}
|
||||||
|
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ layout: page
|
|||||||
{% for post in paginator.posts %}
|
{% for post in paginator.posts %}
|
||||||
<div class="post-preview">
|
<div class="post-preview">
|
||||||
<h1>
|
<h1>
|
||||||
<a href="{{ site.baseurl }}{{ post.url }}">{{ post.title }}</a>
|
<a href="{{ post.url | relative_url }}">{{ post.title }}</a>
|
||||||
</h1>
|
</h1>
|
||||||
<div class="post-content">
|
<div class="post-content">
|
||||||
<p>
|
<p>
|
||||||
|
|||||||
@@ -64,13 +64,15 @@ layout: default
|
|||||||
</div> <!-- .post-meta -->
|
</div> <!-- .post-meta -->
|
||||||
|
|
||||||
<div class="post-content">
|
<div class="post-content">
|
||||||
|
|
||||||
{% if page.image %}
|
{% if page.image %}
|
||||||
<img src="{{ page.image }}">
|
<img src="{{ page.image }}">
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
<!-- Using lozad. See: <https://github.com/ApoorvSaxena/lozad.js#usage> -->
|
||||||
{{ content }}
|
{% if content contains '<img src=' %}
|
||||||
|
{{ content | replace: '<img src=', '<img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" data-src=' }}
|
||||||
|
{% else %}
|
||||||
|
{{ content }}
|
||||||
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="post-tail-wrapper text-muted">
|
<div class="post-tail-wrapper text-muted">
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ layout: page
|
|||||||
<ul class="post-content pl-0">
|
<ul class="post-content pl-0">
|
||||||
{% for post in site.tags[page.tag] %}
|
{% for post in site.tags[page.tag] %}
|
||||||
<li class="d-flex justify-content-between pl-md-3 pr-md-3">
|
<li class="d-flex justify-content-between pl-md-3 pr-md-3">
|
||||||
<a href="{{ post.url | absolute_url }}">{{ post.title }}</a>
|
<a href="{{ post.url | relative_url }}">{{ post.title }}</a>
|
||||||
<span class="dash flex-grow-1"></span>
|
<span class="dash flex-grow-1"></span>
|
||||||
<span class="text-muted small">{{ post.date | date: site.data.date_format.post }}</span>
|
<span class="text-muted small">{{ post.date | date: site.data.date_format.post }}</span>
|
||||||
</li>
|
</li>
|
||||||
|
|||||||
@@ -4,9 +4,10 @@ author: Cotes Chung
|
|||||||
date: 2019-08-08 11:33:00 +0800
|
date: 2019-08-08 11:33:00 +0800
|
||||||
categories: [Blogging, Demo]
|
categories: [Blogging, Demo]
|
||||||
tags: [typography]
|
tags: [typography]
|
||||||
|
math: true
|
||||||
---
|
---
|
||||||
|
|
||||||
This Jekyll template totally compatible with Markdown syntax. Now, let's take a look for the text and typography in this theme.
|
This Jekyll template totally compatible with Markdown syntax. Now, let's take a look for the text and typography in here.
|
||||||
|
|
||||||
## Titles
|
## Titles
|
||||||
|
|
||||||
@@ -49,7 +50,7 @@ Fluttering and dancing in the breeze.
|
|||||||
|
|
||||||
## Link
|
## Link
|
||||||
|
|
||||||
[http://127.0.0.1:4000](http://127.0.0.1:4000)
|
<http://127.0.0.1:4000>
|
||||||
|
|
||||||
|
|
||||||
## Footnote
|
## Footnote
|
||||||
@@ -66,6 +67,15 @@ Click the hook will locate the footnote[^footnote].
|
|||||||
|
|
||||||
This is an example of `Inline Code`.
|
This is an example of `Inline Code`.
|
||||||
|
|
||||||
|
## Mathematics
|
||||||
|
|
||||||
|
The mathematics powered by [**MathJax**](https://www.mathjax.org/):
|
||||||
|
|
||||||
|
$$ \sum_{n=1}^\infty 1/n^2 = \frac{\pi^2}{6} $$
|
||||||
|
|
||||||
|
When \\(a \ne 0\\), there are two solutions to \\(ax^2 + bx + c = 0\\) and they are
|
||||||
|
|
||||||
|
$$ x = {-b \pm \sqrt{b^2-4ac} \over 2a} $$
|
||||||
|
|
||||||
## Code Snippet
|
## Code Snippet
|
||||||
|
|
||||||
|
|||||||
@@ -87,7 +87,7 @@ The last modified date of a post is obtained according to its latest git commit
|
|||||||
...
|
...
|
||||||
```
|
```
|
||||||
|
|
||||||
You can choose to create this file manually, but as you may notice, the better approach is to let it be automatically generated by a tool script. And `_scripts/sh/dump_lastmod.py` was born for this! Similar to the another script `_scripts/sh/create_pages.sh` mentioned above, it is also be called from `tools/init.sh`, so it doesn't have to be used separately.
|
You can choose to create this file manually, but as you may notice, the better approach is to let it be automatically generated by a tool script. And `_scripts/sh/dump_lastmod.sh` was born for this! Similar to the another script `_scripts/sh/create_pages.sh` mentioned above, it is also be called from `tools/init.sh`, so it doesn't have to be used separately.
|
||||||
|
|
||||||
When some posts have been modified since their published date and also the file `_data/updates.yml` was created correctly, a list with the label **Recent Updates** will be displayed in the right panel of the desktop view, which records the five most recently modified articles.
|
When some posts have been modified since their published date and also the file `_data/updates.yml` was created correctly, a list with the label **Recent Updates** will be displayed in the right panel of the desktop view, which records the five most recently modified articles.
|
||||||
|
|
||||||
@@ -113,6 +113,17 @@ comments: false
|
|||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
## Mathematics
|
||||||
|
|
||||||
|
For website performance reasons, the mathematical feature won't be loaded by default. But it can be enabled by:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
---
|
||||||
|
math: true
|
||||||
|
---
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
## Code Block
|
## Code Block
|
||||||
|
|
||||||
Markdown symbols <code class="highlighter-rouge">```</code> can easily create a code block as following examples.
|
Markdown symbols <code class="highlighter-rouge">```</code> can easily create a code block as following examples.
|
||||||
@@ -136,7 +147,7 @@ items:
|
|||||||
quantity: 4
|
quantity: 4
|
||||||
```
|
```
|
||||||
|
|
||||||
#### Liquid codes
|
#### Liquid Codes
|
||||||
|
|
||||||
If you want to display the **Liquid** snippet, surround the liquid code with `{% raw %}{%{% endraw %} raw {%raw%}%}{%endraw%}` and `{% raw %}{%{% endraw %} endraw {%raw%}%}{%endraw%}` .
|
If you want to display the **Liquid** snippet, surround the liquid code with `{% raw %}{%{% endraw %} raw {%raw%}%}{%endraw%}` and `{% raw %}{%{% endraw %} endraw {%raw%}%}{%endraw%}` .
|
||||||
|
|
||||||
@@ -148,6 +159,8 @@ If you want to display the **Liquid** snippet, surround the liquid code with `{%
|
|||||||
```
|
```
|
||||||
{% endraw %}
|
{% endraw %}
|
||||||
|
|
||||||
|
|
||||||
## Learn More
|
## Learn More
|
||||||
|
|
||||||
For more knowledge about Jekyll posts, visit the [Jekyll Docs: Posts](https://jekyllrb.com/docs/posts/).
|
For more knowledge about Jekyll posts, visit the [Jekyll Docs: Posts](https://jekyllrb.com/docs/posts/).
|
||||||
|
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ tags: [getting started]
|
|||||||
|
|
||||||
## Prerequisites
|
## Prerequisites
|
||||||
|
|
||||||
Follow the [Jekyll Docs](https://jekyllrb.com/docs/installation/) to complete the installtion of basic environment (`Ruby `, `RubyGems` and `Bundler`).
|
Follow the [Jekyll Docs](https://jekyllrb.com/docs/installation/) to complete the installation of basic environment (`Ruby`, `RubyGems` and `Bundler`).
|
||||||
|
|
||||||
To improve the writing experience, we need to use some script tools. If your machine is running Debian or macOS, make sure that [GNU coreutils](https://www.gnu.org/software/coreutils/) is installed. Otherwise, install by:
|
To improve the writing experience, we need to use some script tools. If your machine is running Debian or macOS, make sure that [GNU coreutils](https://www.gnu.org/software/coreutils/) is installed. Otherwise, install by:
|
||||||
|
|
||||||
@@ -91,7 +91,7 @@ Generally, go to `_config.yml` and configure the variables as needed. Some of th
|
|||||||
|
|
||||||
* `avatar`
|
* `avatar`
|
||||||
|
|
||||||
It defines the image file location of avatar. The sample image is `/assets/img/sample/avatar.jpg`, and should be replaced by your own one(a square image). Notice that a huge image file will increase the load time of your site, so keep your avatar image size as samll as possible(may be *<https://tinypng.com/>* will help).
|
It defines the image file location of avatar. The sample image is `/assets/img/sample/avatar.jpg`, and should be replaced by your own one (a square image). Notice that a huge image file will increase the load time of your site, so keep your avatar image size as small as possible (may be *<https://tinypng.com/>* will help).
|
||||||
|
|
||||||
* `timezone`
|
* `timezone`
|
||||||
|
|
||||||
@@ -115,7 +115,7 @@ You may want to preview the site content before publishing, so just run the scri
|
|||||||
$ bash tools/run.sh
|
$ bash tools/run.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
Open a brower and visit <http://localhost:4000>.
|
Open a browser and visit <http://localhost:4000>.
|
||||||
|
|
||||||
Few days later, you may find that the file changes does not refresh in real time by using `run.sh`. Don't worry, the advanced option `-r` (or `--realtime`) will solve this problem, but it requires [**fswatch**](http://emcrisostomo.github.io/fswatch/) to be installed on your machine.
|
Few days later, you may find that the file changes does not refresh in real time by using `run.sh`. Don't worry, the advanced option `-r` (or `--realtime`) will solve this problem, but it requires [**fswatch**](http://emcrisostomo.github.io/fswatch/) to be installed on your machine.
|
||||||
|
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ toc: false
|
|||||||
|
|
||||||
In [**Chirpy**](https://github.com/cotes2020/jekyll-theme-chirpy/), the image files of [Favicons](https://www.favicon-generator.org/about/) are placed in `assets/img/favicons/`. You may need to replace them with your own. So let's see how to customize these Favicons.
|
In [**Chirpy**](https://github.com/cotes2020/jekyll-theme-chirpy/), the image files of [Favicons](https://www.favicon-generator.org/about/) are placed in `assets/img/favicons/`. You may need to replace them with your own. So let's see how to customize these Favicons.
|
||||||
|
|
||||||
Whit a square image (PNG, JPG or GIF) in hand, open the site [*Favicon & App Icon Generator*](https://www.favicon-generator.org/) and upload your original image.
|
With a square image (PNG, JPG or GIF) in hand, open the site [*Favicon & App Icon Generator*](https://www.favicon-generator.org/) and upload your original image.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# Files sync monitoer
|
# Files sync monitor
|
||||||
# v2.0
|
# v2.0
|
||||||
# https://github.com/cotes2020/jekyll-theme-chirpy
|
# https://github.com/cotes2020/jekyll-theme-chirpy
|
||||||
# © 2019 Cotes Chung
|
# © 2019 Cotes Chung
|
||||||
@@ -8,7 +8,7 @@
|
|||||||
|
|
||||||
# $1 -> the origin file with absolute path.
|
# $1 -> the origin file with absolute path.
|
||||||
# $2 -> the origin sync directory
|
# $2 -> the origin sync directory
|
||||||
# $3 -> the destination sync direcotry
|
# $3 -> the destination sync directory
|
||||||
|
|
||||||
# Omit the system temp file
|
# Omit the system temp file
|
||||||
if [[ ! -f $1 ]]; then
|
if [[ ! -f $1 ]]; then
|
||||||
|
|||||||
@@ -77,11 +77,34 @@ $sidebar-display: "sidebar-display";
|
|||||||
overflow-y: auto;
|
overflow-y: auto;
|
||||||
width: $sidebar-width-medium;
|
width: $sidebar-width-medium;
|
||||||
z-index: 99;
|
z-index: 99;
|
||||||
background: rgb(42, 30, 107);
|
|
||||||
background: var(--sidebar-bg);
|
background: var(--sidebar-bg);
|
||||||
a {
|
a {
|
||||||
@include sidebar-links;
|
@include sidebar-links;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.site-title {
|
||||||
|
text-align: center;
|
||||||
|
a {
|
||||||
|
// color: var(--site-title-color);
|
||||||
|
font-weight: 900;
|
||||||
|
font-size: 1.5rem;
|
||||||
|
letter-spacing: .5px;
|
||||||
|
&:hover {
|
||||||
|
color: #fff;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.site-subtitle {
|
||||||
|
font-size: 95%;
|
||||||
|
text-align: center;
|
||||||
|
color: #828282;
|
||||||
|
line-height: 1.2rem;
|
||||||
|
word-spacing: 1px;
|
||||||
|
margin: .5rem 1.5rem 2rem 1.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
.sidebar-bottom {
|
.sidebar-bottom {
|
||||||
.icon-border+a { // the icon behide mode-toggle
|
.icon-border+a { // the icon behide mode-toggle
|
||||||
margin-left: .1rem;
|
margin-left: .1rem;
|
||||||
@@ -239,29 +262,6 @@ $sidebar-display: "sidebar-display";
|
|||||||
}
|
}
|
||||||
} // #avatar
|
} // #avatar
|
||||||
|
|
||||||
#site-title {
|
|
||||||
text-align: center;
|
|
||||||
a {
|
|
||||||
// color: var(--site-title-color);
|
|
||||||
font-weight: 900;
|
|
||||||
font-size: 1.5rem;
|
|
||||||
letter-spacing: .5px;
|
|
||||||
&:hover {
|
|
||||||
color: #fff;
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#site-subtitle {
|
|
||||||
font-size: 95%;
|
|
||||||
text-align: center;
|
|
||||||
color: #828282;
|
|
||||||
line-height: 1.2rem;
|
|
||||||
word-spacing: 1px;
|
|
||||||
margin: .5rem 1.5rem 2rem 1.5rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
#search-result-wrapper {
|
#search-result-wrapper {
|
||||||
display: none;
|
display: none;
|
||||||
position: fixed;
|
position: fixed;
|
||||||
@@ -946,7 +946,7 @@ table {
|
|||||||
height: 5rem;
|
height: 5rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
#site-subtitle {
|
.site-subtitle {
|
||||||
@include ml-mr(1.8rem);
|
@include ml-mr(1.8rem);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1188,12 +1188,12 @@ table {
|
|||||||
max-width: 700px;
|
max-width: 700px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#site-title {
|
.site-title {
|
||||||
font-size: 1.3rem;
|
font-size: 1.3rem;
|
||||||
margin-left: 0!important;
|
margin-left: 0!important;
|
||||||
}
|
}
|
||||||
|
|
||||||
#site-subtitle {
|
.site-subtitle {
|
||||||
font-size: 90%;
|
font-size: 90%;
|
||||||
@include ml-mr(1rem);
|
@include ml-mr(1rem);
|
||||||
}
|
}
|
||||||
@@ -1352,56 +1352,54 @@ table {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#profile-wrapper {
|
#profile-wrapper {
|
||||||
margin-top: 4rem;
|
margin: 4rem 2rem 3rem 4rem;
|
||||||
margin-bottom: 3rem;
|
|
||||||
padding-left: 18%;
|
|
||||||
-ms-flex-direction: column!important;
|
-ms-flex-direction: column!important;
|
||||||
}
|
|
||||||
|
|
||||||
#avatar {
|
#avatar {
|
||||||
-webkit-box-pack: normal !important;
|
-webkit-box-pack: normal !important;
|
||||||
-ms-flex-pack: normal !important;
|
-ms-flex-pack: normal !important;
|
||||||
justify-content: normal !important;
|
justify-content: normal !important;
|
||||||
>a {
|
>a {
|
||||||
width: 6.2rem;
|
width: 6.2rem;
|
||||||
height: 6.2rem;
|
height: 6.2rem;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
.profile-text {
|
.profile-text {
|
||||||
padding-left: .5rem;
|
margin-left: .5rem;
|
||||||
/* .d-flex */
|
/* .d-flex */
|
||||||
display: -webkit-box!important;
|
display: -webkit-box!important;
|
||||||
display: -ms-flexbox!important;
|
display: -ms-flexbox!important;
|
||||||
display: flex!important;
|
display: flex!important;
|
||||||
/* .flex-wrap */
|
/* .flex-wrap */
|
||||||
-ms-flex-wrap: wrap!important;
|
-ms-flex-wrap: wrap!important;
|
||||||
flex-wrap: wrap!important;
|
flex-wrap: wrap!important;
|
||||||
/* .align-content-center */
|
/* .align-content-center */
|
||||||
-ms-flex-line-pack: center!important;
|
-ms-flex-line-pack: center!important;
|
||||||
align-content: center!important;
|
align-content: center!important;
|
||||||
}
|
>div {
|
||||||
|
text-align: left !important;
|
||||||
#site-title a {
|
width: 100%;
|
||||||
font-size: 1.7rem;
|
}
|
||||||
letter-spacing: 1px;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
.profile-text>div {
|
|
||||||
text-align: left !important;
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
#site-subtitle {
|
|
||||||
word-spacing: 0;
|
|
||||||
padding-right: 3rem;
|
|
||||||
margin: .3rem 0 0 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#sidebar {
|
#sidebar {
|
||||||
width: $sidebar-width-large;
|
width: $sidebar-width-large;
|
||||||
|
|
||||||
|
.site-title a {
|
||||||
|
font-size: 1.7rem;
|
||||||
|
letter-spacing: 1px;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.site-subtitle {
|
||||||
|
word-spacing: 0;
|
||||||
|
margin: .3rem 0 0 0;
|
||||||
|
}
|
||||||
|
|
||||||
ul {
|
ul {
|
||||||
margin-left: 5%;
|
margin-left: 3%;
|
||||||
>li>a {
|
>li>a {
|
||||||
padding-left: 2.5rem;
|
padding-left: 2.5rem;
|
||||||
-webkit-box-pack: start!important;
|
-webkit-box-pack: start!important;
|
||||||
@@ -1457,10 +1455,8 @@ table {
|
|||||||
margin-left: 0;
|
margin-left: 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
} // .sidebar-bottom
|
} // .sidebar-bottom
|
||||||
} // #sidebar
|
} // #sidebar
|
||||||
|
|
||||||
footer>div.d-flex {
|
footer>div.d-flex {
|
||||||
width: 87%;
|
width: 87%;
|
||||||
max-width: 1140px;
|
max-width: 1140px;
|
||||||
@@ -1475,6 +1471,7 @@ table {
|
|||||||
|
|
||||||
} // min-width: 1650px
|
} // min-width: 1650px
|
||||||
|
|
||||||
|
|
||||||
@media all and (min-width: 1700px) {
|
@media all and (min-width: 1700px) {
|
||||||
#topbar-wrapper {
|
#topbar-wrapper {
|
||||||
padding-right: calc(100% - #{$sidebar-width-large}
|
padding-right: calc(100% - #{$sidebar-width-large}
|
||||||
|
|||||||
@@ -38,6 +38,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
%heading {
|
%heading {
|
||||||
|
font-weight: 400;
|
||||||
font-family: 'Lato', 'Microsoft Yahei', sans-serif;
|
font-family: 'Lato', 'Microsoft Yahei', sans-serif;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -49,8 +50,8 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
%anchor {
|
%anchor {
|
||||||
.post-content &,
|
.post-content>&,
|
||||||
#page & {
|
#page>& {
|
||||||
padding-top: 3.5rem;
|
padding-top: 3.5rem;
|
||||||
margin-top: -2.5rem;
|
margin-top: -2.5rem;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -71,8 +71,8 @@
|
|||||||
|
|
||||||
.highlight .gh { } /* Generic Heading & Diff Header */
|
.highlight .gh { } /* Generic Heading & Diff Header */
|
||||||
.highlight .gu { color: #75715e; } /* Generic.Subheading & Diff Unified/Comment? */
|
.highlight .gu { color: #75715e; } /* Generic.Subheading & Diff Unified/Comment? */
|
||||||
.highlight .gd { color: #f92672; } /* Generic.Deleted & Diff Deleted */
|
.highlight .gd { color: #f92672; background-color: #561c08 } /* Generic.Deleted & Diff Deleted */
|
||||||
.highlight .gi { color: #a6e22e; } /* Generic.Inserted & Diff Inserted */
|
.highlight .gi { color: #a6e22e; background-color: #0b5858 } /* Generic.Inserted & Diff Inserted */
|
||||||
|
|
||||||
|
|
||||||
/*----- My styles ------*/
|
/*----- My styles ------*/
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
--link-color: rgb(138, 180, 248);
|
--link-color: rgb(138, 180, 248);
|
||||||
--link-underline-color: rgb(82, 108, 150);
|
--link-underline-color: rgb(82, 108, 150);
|
||||||
--main-border-color: rgb(44, 45, 45);
|
--main-border-color: rgb(44, 45, 45);
|
||||||
--button-bg: rgb(39, 40, 33);
|
--button-bg: rgb(39, 40, 43);
|
||||||
--blockquote-border-color: rgb(66, 66, 66);
|
--blockquote-border-color: rgb(66, 66, 66);
|
||||||
--blockquote-text-color: rgb(117, 117, 117);
|
--blockquote-text-color: rgb(117, 117, 117);
|
||||||
|
|
||||||
@@ -32,7 +32,6 @@
|
|||||||
--btn-backtotop-border-color: var(--btn-border-color);
|
--btn-backtotop-border-color: var(--btn-border-color);
|
||||||
--btn-box-shadow: var(--main-wrapper-bg);
|
--btn-box-shadow: var(--main-wrapper-bg);
|
||||||
|
|
||||||
--card-bg: rgb(39, 40, 33);
|
|
||||||
--card-header-bg: rgb(51, 50, 50);
|
--card-header-bg: rgb(51, 50, 50);
|
||||||
--label-color: rgb(108, 117, 125);
|
--label-color: rgb(108, 117, 125);
|
||||||
|
|
||||||
@@ -56,14 +55,15 @@
|
|||||||
--toc-highlight: rgb(116, 178, 243);
|
--toc-highlight: rgb(116, 178, 243);
|
||||||
--tag-bg: rgb(41, 40, 40);
|
--tag-bg: rgb(41, 40, 40);
|
||||||
--tag-hover: rgb(43, 56, 62);
|
--tag-hover: rgb(43, 56, 62);
|
||||||
--tb-odd-bg: rgba(52, 53, 42, 0.52); /* odd rows of the posts' table */
|
--tb-odd-bg: rgba(42, 47, 53, 0.52); /* odd rows of the posts' table */
|
||||||
--tb-even-bg: rgb(31, 31, 34); /* even rows of the posts' table */
|
--tb-even-bg: rgb(31, 31, 34); /* even rows of the posts' table */
|
||||||
--tb-border-color: var(--tb-odd-bg);
|
--tb-border-color: var(--tb-odd-bg);
|
||||||
--footnote-target-bg: rgb(63, 81, 181);
|
--footnote-target-bg: rgb(63, 81, 181);
|
||||||
--btn-share-color: #6c757d;
|
--btn-share-color: #6c757d;
|
||||||
--btn-share-hover-color: #bfc1ca;
|
--btn-share-hover-color: #bfc1ca;
|
||||||
--relate-post-date: var(--text-muted-color);
|
--relate-post-date: var(--text-muted-color);
|
||||||
--card-border-color: var(--main-wrapper-bg);
|
--card-bg: rgb(39, 40, 43);
|
||||||
|
--card-border-color: rgb(53, 53, 60);
|
||||||
--card-box-shadow: var(--main-wrapper-bg);
|
--card-box-shadow: var(--main-wrapper-bg);
|
||||||
|
|
||||||
/* tags */
|
/* tags */
|
||||||
|
|||||||
@@ -17,11 +17,11 @@
|
|||||||
.highlight .cp { color: #999999; font-weight: bold; font-style: italic } /* Comment.Preproc */
|
.highlight .cp { color: #999999; font-weight: bold; font-style: italic } /* Comment.Preproc */
|
||||||
.highlight .c1 { color: #999988; font-style: italic } /* Comment.Single */
|
.highlight .c1 { color: #999988; font-style: italic } /* Comment.Single */
|
||||||
.highlight .cs { color: #999999; font-weight: bold; font-style: italic } /* Comment.Special */
|
.highlight .cs { color: #999999; font-weight: bold; font-style: italic } /* Comment.Special */
|
||||||
.highlight .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */
|
.highlight .gd { color: #d01040; background-color: #ffdddd } /* Generic.Deleted */
|
||||||
.highlight .ge { color: #000000; font-style: italic } /* Generic.Emph */
|
.highlight .ge { color: #000000; font-style: italic } /* Generic.Emph */
|
||||||
.highlight .gr { color: #aa0000 } /* Generic.Error */
|
.highlight .gr { color: #aa0000 } /* Generic.Error */
|
||||||
.highlight .gh { color: #999999 } /* Generic.Heading */
|
.highlight .gh { color: #999999 } /* Generic.Heading */
|
||||||
.highlight .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */
|
.highlight .gi { color: #008080; background-color: #ddffdd } /* Generic.Inserted */
|
||||||
.highlight .go { color: #888888 } /* Generic.Output */
|
.highlight .go { color: #888888 } /* Generic.Output */
|
||||||
.highlight .gp { color: #555555 } /* Generic.Prompt */
|
.highlight .gp { color: #555555 } /* Generic.Prompt */
|
||||||
.highlight .gs { font-weight: bold } /* Generic.Strong */
|
.highlight .gs { font-weight: bold } /* Generic.Strong */
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ layout: compress
|
|||||||
# MIT License
|
# MIT License
|
||||||
---
|
---
|
||||||
|
|
||||||
{% assign icon_url = "/assets/img/favicons/" | relative_url %}
|
{% assign icon_url = "/assets/img/favicons" | relative_url %}
|
||||||
|
|
||||||
{
|
{
|
||||||
"name": "{{ site.title }}",
|
"name": "{{ site.title }}",
|
||||||
|
|||||||
21
assets/js/_commons.js
Normal file
21
assets/js/_commons.js
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
/*!
|
||||||
|
Aggregation of common JS.
|
||||||
|
Chirpy@2.3
|
||||||
|
https://github.com/cotes2020/jekyll-theme-chirpy
|
||||||
|
© 2020 Cotes Chung
|
||||||
|
MIT License
|
||||||
|
*/
|
||||||
|
|
||||||
|
{% include_relative _commons/back-to-top.js %}
|
||||||
|
|
||||||
|
{% include_relative _commons/search-display.js %}
|
||||||
|
|
||||||
|
{% include_relative _commons/sidebar.js %}
|
||||||
|
|
||||||
|
{% include_relative _commons/topbar-switch.js %}
|
||||||
|
|
||||||
|
{% include_relative _commons/topbar-title.js %}
|
||||||
|
|
||||||
|
{% include_relative _commons/copy-link.js %}
|
||||||
|
|
||||||
|
{% include_relative _utils/tooltip-loader.js %}
|
||||||
@@ -5,6 +5,7 @@
|
|||||||
* © 2018-2019 Cotes Chung
|
* © 2018-2019 Cotes Chung
|
||||||
* MIT License
|
* MIT License
|
||||||
*/
|
*/
|
||||||
|
|
||||||
$(function() {
|
$(function() {
|
||||||
|
|
||||||
var didScroll;
|
var didScroll;
|
||||||
@@ -13,7 +14,7 @@ $(function() {
|
|||||||
var topbarHeight = $('#topbar-wrapper').outerHeight();
|
var topbarHeight = $('#topbar-wrapper').outerHeight();
|
||||||
|
|
||||||
$(window).scroll(function(event) {
|
$(window).scroll(function(event) {
|
||||||
if ($("#topbar-title").is(":hidden")) { // Not in small screens
|
if ($("#topbar-title").is(":hidden")) { /* Not in small screens */
|
||||||
didScroll = true;
|
didScroll = true;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -28,12 +29,12 @@ $(function() {
|
|||||||
function hasScrolled() {
|
function hasScrolled() {
|
||||||
var st = $(this).scrollTop();
|
var st = $(this).scrollTop();
|
||||||
|
|
||||||
// Make sure they scroll more than delta
|
/* Make sure they scroll more than delta */
|
||||||
if (Math.abs(lastScrollTop - st) <= delta)
|
if (Math.abs(lastScrollTop - st) <= delta)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (st > lastScrollTop && st > topbarHeight) {
|
if (st > lastScrollTop && st > topbarHeight) {
|
||||||
// Scroll Down
|
/* Scroll Down */
|
||||||
$('#topbar-wrapper').removeClass('topbar-down').addClass('topbar-up');
|
$('#topbar-wrapper').removeClass('topbar-down').addClass('topbar-up');
|
||||||
|
|
||||||
if ( $('#toc-wrapper').length > 0) {
|
if ( $('#toc-wrapper').length > 0) {
|
||||||
@@ -45,11 +46,11 @@ $(function() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ($('#search-input').is(':focus')) {
|
if ($('#search-input').is(':focus')) {
|
||||||
$('#search-input').blur(); // remove focus
|
$('#search-input').blur(); /* remove focus */
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
// Scroll Up
|
/* Scroll Up */
|
||||||
if (st + $(window).height() < $(document).height()) {
|
if (st + $(window).height() < $(document).height()) {
|
||||||
$('#topbar-wrapper').removeClass('topbar-up').addClass('topbar-down');
|
$('#topbar-wrapper').removeClass('topbar-up').addClass('topbar-down');
|
||||||
if ( $('#toc-wrapper').length > 0) {
|
if ( $('#toc-wrapper').length > 0) {
|
||||||
@@ -5,7 +5,8 @@
|
|||||||
* © 2018-2019 Cotes Chung
|
* © 2018-2019 Cotes Chung
|
||||||
* MIT License
|
* MIT License
|
||||||
*/
|
*/
|
||||||
$(function(){
|
|
||||||
|
$(function() {
|
||||||
|
|
||||||
var DEFAULT = $("#topbar-title").text().trim();
|
var DEFAULT = $("#topbar-title").text().trim();
|
||||||
var title = ($("div.post>h1").length > 0) ?
|
var title = ($("div.post>h1").length > 0) ?
|
||||||
@@ -18,12 +19,12 @@ $(function(){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Replace topbar title while scroll screens.
|
/* Replace topbar title while scroll screens. */
|
||||||
$(window).scroll(function () {
|
$(window).scroll(function () {
|
||||||
if ($("#post-list").length // in Home page
|
if ($("#post-list").length /* in Home page */
|
||||||
|| $("div.post>h1").is(":hidden") // is tab pages
|
|| $("div.post>h1").is(":hidden") /* is tab pages */
|
||||||
|| $("#topbar-title").is(":hidden") // not mobile screens
|
|| $("#topbar-title").is(":hidden") /* not mobile screens */
|
||||||
|| $("#sidebar.sidebar-expand").length) { // when the sidebar trigger is clicked
|
|| $("#sidebar.sidebar-expand").length) { /* when the sidebar trigger is clicked */
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -36,9 +37,9 @@ $(function(){
|
|||||||
$("#topbar-title").text(DEFAULT);
|
$("#topbar-title").text(DEFAULT);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
});
|
||||||
|
|
||||||
// Click title remove hover effect.
|
/* Click title remove hover effect. */
|
||||||
$('#topbar-title').click(function() {
|
$('#topbar-title').click(function() {
|
||||||
$('body,html').animate({scrollTop: 0}, 800);
|
$('body,html').animate({scrollTop: 0}, 800);
|
||||||
});
|
});
|
||||||
22
assets/js/_home-post.js
Normal file
22
assets/js/_home-post.js
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
/*!
|
||||||
|
JS group for layout Home or Post
|
||||||
|
Chirpy v2.3
|
||||||
|
https://github.com/cotes2020/jekyll-theme-chirpy
|
||||||
|
© 2020 Cotes Chung
|
||||||
|
MIT License
|
||||||
|
*/
|
||||||
|
|
||||||
|
{% include_relative _commons.js %}
|
||||||
|
|
||||||
|
{% include_relative _utils/timeago.js %}
|
||||||
|
|
||||||
|
|
||||||
|
{% if site.google_analytics.pv.enabled %}
|
||||||
|
|
||||||
|
{% include_relative data/pv-data.js %}
|
||||||
|
|
||||||
|
{% include_relative _utils/pageviews.js %}
|
||||||
|
|
||||||
|
{% include_relative lib/_countUp.min.js %}
|
||||||
|
|
||||||
|
{% endif %}
|
||||||
@@ -10,8 +10,8 @@ $(function() {
|
|||||||
var child_prefix = "l_";
|
var child_prefix = "l_";
|
||||||
var parent_prefix = "h_";
|
var parent_prefix = "h_";
|
||||||
|
|
||||||
// close up top-category
|
/* close up top-category */
|
||||||
$(".collapse").on("hide.bs.collapse", function() { // Bootstrap collapse events.
|
$(".collapse").on("hide.bs.collapse", function() { /* Bootstrap collapse events. */
|
||||||
var parent_id = parent_prefix + $(this).attr('id').substring(child_prefix.length);
|
var parent_id = parent_prefix + $(this).attr('id').substring(child_prefix.length);
|
||||||
if (parent_id) {
|
if (parent_id) {
|
||||||
$("#" + parent_id + " .far.fa-folder-open").attr("class", "far fa-folder fa-fw");
|
$("#" + parent_id + " .far.fa-folder-open").attr("class", "far fa-folder fa-fw");
|
||||||
@@ -20,7 +20,7 @@ $(function() {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// expand the top category
|
/* expand the top category */
|
||||||
$(".collapse").on("show.bs.collapse", function() {
|
$(".collapse").on("show.bs.collapse", function() {
|
||||||
var parent_id = parent_prefix + $(this).attr('id').substring(child_prefix.length);
|
var parent_id = parent_prefix + $(this).attr('id').substring(child_prefix.length);
|
||||||
if (parent_id) {
|
if (parent_id) {
|
||||||
@@ -35,7 +35,7 @@ function countPV(path, rows) {
|
|||||||
if (gaPath == path ||
|
if (gaPath == path ||
|
||||||
gaPath == _v2_url ||
|
gaPath == _v2_url ||
|
||||||
gaPath.concat('/') == _v2_url ||
|
gaPath.concat('/') == _v2_url ||
|
||||||
gaPath.slice(gaPath.lastIndexOf('/') + 1) === fileName) { // old permalink record
|
gaPath.slice(gaPath.lastIndexOf('/') + 1) === fileName) { /* old permalink record */
|
||||||
count += parseInt(rows[i][1]);
|
count += parseInt(rows[i][1]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -67,13 +67,13 @@ function displayPageviews(data) {
|
|||||||
var hasInit = getInitStatus();
|
var hasInit = getInitStatus();
|
||||||
var rows = data.rows;
|
var rows = data.rows;
|
||||||
|
|
||||||
if ($("#post-list").length > 0) { // the Home page
|
if ($("#post-list").length > 0) { /* the Home page */
|
||||||
$(".post-preview").each(function() {
|
$(".post-preview").each(function() {
|
||||||
var path = $(this).children("h1").children("a").attr("href");
|
var path = $(this).children("h1").children("a").attr("href");
|
||||||
tacklePV(rows, path, $(this).find('.pageviews'), hasInit);
|
tacklePV(rows, path, $(this).find('.pageviews'), hasInit);
|
||||||
});
|
});
|
||||||
|
|
||||||
} else if ($(".post").length > 0) { // the post
|
} else if ($(".post").length > 0) { /* the post */
|
||||||
var path = window.location.pathname;
|
var path = window.location.pathname;
|
||||||
tacklePV(rows, path, $('#pv'), hasInit);
|
tacklePV(rows, path, $('#pv'), hasInit);
|
||||||
}
|
}
|
||||||
@@ -133,12 +133,12 @@ var PvCache = (function() {
|
|||||||
isExpired: function() {
|
isExpired: function() {
|
||||||
if (PvCache.isOriginCache() ) {
|
if (PvCache.isOriginCache() ) {
|
||||||
let date = new Date(get(KEY_CREATION));
|
let date = new Date(get(KEY_CREATION));
|
||||||
date.setDate(date.getDate() + 1); // fetch origin-data every day
|
date.setDate(date.getDate() + 1); /* fetch origin-data every day */
|
||||||
return Date.now() >= date.getTime();
|
return Date.now() >= date.getTime();
|
||||||
|
|
||||||
} else if (PvCache.isProxyCache() ) {
|
} else if (PvCache.isProxyCache() ) {
|
||||||
let date = new Date(get(KEY_CREATION) );
|
let date = new Date(get(KEY_CREATION) );
|
||||||
date.setHours(date.getHours() + 1); // proxy-data is updated every hour
|
date.setHours(date.getHours() + 1); /* proxy-data is updated every hour */
|
||||||
return Date.now() >= date.getTime();
|
return Date.now() >= date.getTime();
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
@@ -151,7 +151,7 @@ var PvCache = (function() {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
})(); // PvCache
|
})(); /* PvCache */
|
||||||
|
|
||||||
|
|
||||||
function fetchOriginPageviews(pvData) {
|
function fetchOriginPageviews(pvData) {
|
||||||
@@ -164,7 +164,7 @@ function fetchOriginPageviews(pvData) {
|
|||||||
|
|
||||||
|
|
||||||
function fetchProxyPageviews() {
|
function fetchProxyPageviews() {
|
||||||
let proxy = JSON.parse(proxyData); // see file '/assets/data/pv-data.json'
|
let proxy = JSON.parse(proxyData); /* see file '/assets/data/pv-data.json' */
|
||||||
$.ajax({
|
$.ajax({
|
||||||
type: 'GET',
|
type: 'GET',
|
||||||
url: proxy.url,
|
url: proxy.url,
|
||||||
@@ -205,7 +205,7 @@ $(function() {
|
|||||||
fetchProxyPageviews();
|
fetchProxyPageviews();
|
||||||
}
|
}
|
||||||
|
|
||||||
} else { // still valid
|
} else { /* still valid */
|
||||||
displayPageviews(cache);
|
displayPageviews(cache);
|
||||||
|
|
||||||
if (PvCache.isOriginCache() ) {
|
if (PvCache.isOriginCache() ) {
|
||||||
@@ -7,4 +7,4 @@
|
|||||||
*/
|
*/
|
||||||
$(function () {
|
$(function () {
|
||||||
$('[data-toggle="tooltip"]').tooltip();
|
$('[data-toggle="tooltip"]').tooltip();
|
||||||
})
|
});
|
||||||
13
assets/js/categories.min.js
vendored
Normal file
13
assets/js/categories.min.js
vendored
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
---
|
||||||
|
layout: compress
|
||||||
|
|
||||||
|
# JS for layout tab Categories.
|
||||||
|
# Chirpy v2.3
|
||||||
|
# https://github.com/cotes2020/jekyll-theme-chirpy
|
||||||
|
# © 2020 Cotes Chung
|
||||||
|
# MIT License
|
||||||
|
---
|
||||||
|
|
||||||
|
{% include_relative _commons.js %}
|
||||||
|
|
||||||
|
{% include_relative _utils/category-collapse.js %}
|
||||||
@@ -1,4 +1,6 @@
|
|||||||
---
|
---
|
||||||
|
layout: compress
|
||||||
|
|
||||||
# The list to be cached by PWA
|
# The list to be cached by PWA
|
||||||
# Chirpy v2.2
|
# Chirpy v2.2
|
||||||
# https://github.com/cotes2020/jekyll-theme-chirpy
|
# https://github.com/cotes2020/jekyll-theme-chirpy
|
||||||
@@ -17,15 +19,13 @@ const include = [
|
|||||||
'{{ "/assets/css/page.css" | relative_url }}',
|
'{{ "/assets/css/page.css" | relative_url }}',
|
||||||
'{{ "/assets/css/post.css" | relative_url }}',
|
'{{ "/assets/css/post.css" | relative_url }}',
|
||||||
'{{ "/assets/css/category-tag.css" | relative_url }}',
|
'{{ "/assets/css/category-tag.css" | relative_url }}',
|
||||||
'{{ "/assets/lib/bootstrap-toc-1.0.1/bootstrap-toc.min.css" | relative_url }}',
|
'{{ "/assets/css/lib/bootstrap-toc.min.css" | relative_url }}',
|
||||||
|
|
||||||
/*--- Javascripts ---*/
|
/*--- Javascripts ---*/
|
||||||
|
|
||||||
'{{ "/assets/js/dist/commons.js" | relative_url }}',
|
'{{ "/assets/js/home.min.js" | relative_url }}',
|
||||||
'{{ "/assets/js/dist/timeago.min.js" | relative_url }}',
|
'{{ "/assets/js/page.min.js" | relative_url }}',
|
||||||
'{{ "/assets/js/dist/category-collapse.min.js" | relative_url }}',
|
'{{ "/assets/js/post.min.js" | relative_url }}',
|
||||||
'{{ "/assets/js/dist/toc.min.js" | relative_url }}',
|
|
||||||
'{{ "/assets/lib/bootstrap-toc-1.0.1/bootstrap-toc.min.js" | relative_url }}',
|
|
||||||
|
|
||||||
/*--- HTML ---*/
|
/*--- HTML ---*/
|
||||||
|
|
||||||
@@ -65,7 +65,7 @@ const include = [
|
|||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
||||||
/* Trending tags */
|
/* Trending tags */
|
||||||
{% include trending-tags.html %}
|
{% include trending_tags.html %}
|
||||||
{% for tag in trending_tags %}
|
{% for tag in trending_tags %}
|
||||||
{% capture tag_url %}/tags/{{ tag | downcase | url_encode }}/{% endcapture %}
|
{% capture tag_url %}/tags/{{ tag | downcase | url_encode }}/{% endcapture %}
|
||||||
'{{ tag_url | relative_url }}',
|
'{{ tag_url | relative_url }}',
|
||||||
@@ -98,12 +98,7 @@ const include = [
|
|||||||
|
|
||||||
/*--- Others ---*/
|
/*--- Others ---*/
|
||||||
|
|
||||||
{% if site.google_analytics.pv.enabled %}
|
'{{ "/assets/js/data/search.json" | relative_url }}',
|
||||||
'{{ "/assets/lib/countUp.min.js" | relative_url }}',
|
|
||||||
'{{ "/assets/js/dist/pageviews.min.js" | relative_url }}',
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
'{{ "/assets/data/search.json" | relative_url }}',
|
|
||||||
'{{ "/404.html" | relative_url }}',
|
'{{ "/404.html" | relative_url }}',
|
||||||
|
|
||||||
'{{ "/app.js" | relative_url }}',
|
'{{ "/app.js" | relative_url }}',
|
||||||
@@ -111,6 +106,6 @@ const include = [
|
|||||||
];
|
];
|
||||||
|
|
||||||
const exclude = [
|
const exclude = [
|
||||||
'/assets/data/pv-data.json',
|
'/assets/js/data/pv-data.js',
|
||||||
'/img.shields.io/'
|
'/img.shields.io/'
|
||||||
];
|
];
|
||||||
@@ -1,12 +1,9 @@
|
|||||||
---
|
|
||||||
---
|
|
||||||
|
|
||||||
const proxyData = '{"url": "{{ site.google_analytics.pv.proxy_endpoint }}"}';
|
const proxyData = '{"url": "{{ site.google_analytics.pv.proxy_endpoint }}"}';
|
||||||
|
|
||||||
{%- capture pv_data -%}
|
{%- capture pv_data -%}
|
||||||
{%- if site.google_analytics.pv.cache and site.google_analytics.pv.enabled -%}
|
{%- if site.google_analytics.pv.cache and site.google_analytics.pv.enabled -%}
|
||||||
{% include_relative _pageviews.json %}
|
{% include_relative data/_pageviews.json %}
|
||||||
{%- endif -%}
|
{%- endif -%}
|
||||||
{%- endcapture -%}
|
{%- endcapture -%}
|
||||||
|
|
||||||
const pageviews = '{{ pv_data }}';
|
const pageviews = '{{ pv_data }}';
|
||||||
@@ -1,4 +1,5 @@
|
|||||||
---
|
---
|
||||||
|
layout: compress
|
||||||
---
|
---
|
||||||
|
|
||||||
[
|
[
|
||||||
1
assets/js/dist/_commons/back-to-top.min.js
vendored
1
assets/js/dist/_commons/back-to-top.min.js
vendored
@@ -1 +0,0 @@
|
|||||||
$(window).scroll(function(){if($(this).scrollTop()>50&&$("#sidebar-trigger").css("display")=="none"){$("#back-to-top").fadeIn()}else{$("#back-to-top").fadeOut()}});$(function(){$("#back-to-top").click(function(){$("body,html").animate({scrollTop:0},800);return false})});
|
|
||||||
1
assets/js/dist/_commons/copy-link.min.js
vendored
1
assets/js/dist/_commons/copy-link.min.js
vendored
@@ -1 +0,0 @@
|
|||||||
function copyLink(a){if(!a||0===a.length){a=window.location.href}var b=$("<input>");$("body").append(b);b.val(a).select();document.execCommand("copy");b.remove();alert("Link copied successfully!")};
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
$(function(){var j=$("#sidebar-trigger");var o=$("#search-trigger");var h=$("#search-cancel");var b=$("#search-cleaner");var e=$("#main");var c=$("#topbar-title");var k=$("#search-wrapper");var i=$("#search-result-wrapper");var g=$("#search-results");var l=$("#search-input");var a=$("#search-hints");var d=(function(){var p=0;return{block:function(){p=$(window).scrollTop()},release:function(){$("html,body").scrollTop(p)},getOffset:function(){return p}}})();var m=(function(){return{on:function(){j.addClass("unloaded");c.addClass("unloaded");o.addClass("unloaded");k.addClass("d-flex");h.addClass("loaded")},off:function(){h.removeClass("loaded");k.removeClass("d-flex");j.removeClass("unloaded");c.removeClass("unloaded");o.removeClass("unloaded")}}})();var n=(function(){var p=false;return{on:function(){if(!p){i.removeClass("unloaded");e.addClass("hidden");p=true;d.block()}},off:function(){if(p){g.empty();if(a.hasClass("unloaded")){a.removeClass("unloaded")}i.addClass("unloaded");b.removeClass("visable");e.removeClass("hidden");l.val("");p=false;d.release()}},isVisable:function(){return p}}})();function f(){return h.hasClass("loaded")}o.click(function(){m.on();n.on();l.focus()});h.click(function(){m.off();n.off()});l.focus(function(){k.addClass("input-focus")});l.focusout(function(){k.removeClass("input-focus")});l.on("keyup",function(p){if(p.keyCode==8&&l.val()==""){if(!f()){n.off()}else{a.removeClass("unloaded")}}else{if(l.val()!=""){n.on();if(!b.hasClass("visible")){b.addClass("visable")}if(f()){a.addClass("unloaded")}}}});b.on("click",function(){l.val("");if(f()){a.removeClass("unloaded");g.empty()}else{n.off()}l.focus();b.removeClass("visable")})});
|
|
||||||
1
assets/js/dist/_commons/sidebar.min.js
vendored
1
assets/js/dist/_commons/sidebar.min.js
vendored
@@ -1 +0,0 @@
|
|||||||
$(function(){var a=(function(){const c="sidebar-display";var d=false;var b=$("body");return{toggle:function(){if(d==false){b.attr(c,"")}else{b.removeAttr(c)}d=!d}}})();$("#sidebar-trigger").click(a.toggle);$("#mask").click(a.toggle)});
|
|
||||||
1
assets/js/dist/_commons/topbar-switch.min.js
vendored
1
assets/js/dist/_commons/topbar-switch.min.js
vendored
@@ -1 +0,0 @@
|
|||||||
$(function(){var d;var c=0;var e=5;var b=$("#topbar-wrapper").outerHeight();$(window).scroll(function(f){if($("#topbar-title").is(":hidden")){d=true}});setInterval(function(){if(d){a();d=false}},250);function a(){var f=$(this).scrollTop();if(Math.abs(c-f)<=e){return}if(f>c&&f>b){$("#topbar-wrapper").removeClass("topbar-down").addClass("topbar-up");if($("#toc-wrapper").length>0){$("#toc-wrapper").removeClass("topbar-down")}if($(".access").length>0){$(".access").removeClass("topbar-down")}if($("#search-input").is(":focus")){$("#search-input").blur()}}else{if(f+$(window).height()<$(document).height()){$("#topbar-wrapper").removeClass("topbar-up").addClass("topbar-down");if($("#toc-wrapper").length>0){$("#toc-wrapper").addClass("topbar-down")}if($(".access").length>0){$(".access").addClass("topbar-down")}}}c=f}});
|
|
||||||
1
assets/js/dist/_commons/topbar-title.min.js
vendored
1
assets/js/dist/_commons/topbar-title.min.js
vendored
@@ -1 +0,0 @@
|
|||||||
$(function(){var a=$("#topbar-title").text().trim();var b=($("div.post>h1").length>0)?$("div.post>h1").text().trim():$("h1").text().trim();if($("#page-category").length||$("#page-tag").length){if(/\s/.test(b)){b=b.replace(/[0-9]/g,"").trim()}}$(window).scroll(function(){if($("#post-list").length||$("div.post>h1").is(":hidden")||$("#topbar-title").is(":hidden")||$("#sidebar.sidebar-expand").length){return false}if($(this).scrollTop()>=95){if($("#topbar-title").text()!=b){$("#topbar-title").text(b)}}else{if($("#topbar-title").text()!=a){$("#topbar-title").text(a)}}});$("#topbar-title").click(function(){$("body,html").animate({scrollTop:0},800)})});
|
|
||||||
1
assets/js/dist/category-collapse.min.js
vendored
1
assets/js/dist/category-collapse.min.js
vendored
@@ -1 +0,0 @@
|
|||||||
$(function(){var b="l_";var a="h_";$(".collapse").on("hide.bs.collapse",function(){var c=a+$(this).attr("id").substring(b.length);if(c){$("#"+c+" .far.fa-folder-open").attr("class","far fa-folder fa-fw");$("#"+c+" i.fas").addClass("rotate");$("#"+c).removeClass("hide-border-bottom")}});$(".collapse").on("show.bs.collapse",function(){var c=a+$(this).attr("id").substring(b.length);if(c){$("#"+c+" .far.fa-folder").attr("class","far fa-folder-open fa-fw");$("#"+c+" i.fas").removeClass("rotate");$("#"+c).addClass("hide-border-bottom")}})});
|
|
||||||
12
assets/js/dist/commons.js
vendored
12
assets/js/dist/commons.js
vendored
@@ -1,12 +0,0 @@
|
|||||||
---
|
|
||||||
# Aggregation of common JS.
|
|
||||||
# © 2018-2019 Cotes Chung
|
|
||||||
# MIT License
|
|
||||||
---
|
|
||||||
|
|
||||||
{% include_relative _commons/back-to-top.min.js %}
|
|
||||||
{% include_relative _commons/search-display.min.js %}
|
|
||||||
{% include_relative _commons/sidebar.min.js %}
|
|
||||||
{% include_relative _commons/topbar-switch.min.js %}
|
|
||||||
{% include_relative _commons/topbar-title.min.js %}
|
|
||||||
{% include_relative _commons/copy-link.min.js %}
|
|
||||||
1
assets/js/dist/pageviews.min.js
vendored
1
assets/js/dist/pageviews.min.js
vendored
@@ -1 +0,0 @@
|
|||||||
function countUp(b,a,d){if(b<a){var c=new CountUp(d,b,a);if(!c.error){c.start()}else{console.error(c.error)}}}function countPV(f,e){var g=f.replace(/\/posts\//g,"").replace(/\//g,".html");var d=0;var c=f.replace(/posts\//g,"");for(var b=0;b<e.length;++b){var a=e[b][0];if(a==f||a==c||a.concat("/")==c||a.slice(a.lastIndexOf("/")+1)===g){d+=parseInt(e[b][1])}}return d}function tacklePV(e,f,d,b){var c=countPV(f,e);c=(c==0?1:c);if(!b){d.text(new Intl.NumberFormat().format(c))}else{var a=parseInt(d.text().replace(/,/g,""));if(c>a){countUp(a,c,d.attr("id"))}}}function displayPageviews(c){if(c===undefined){return}var a=getInitStatus();var b=c.rows;if($("#post-list").length>0){$(".post-preview").each(function(){var e=$(this).children("h1").children("a").attr("href");tacklePV(b,e,$(this).find(".pageviews"),a)})}else{if($(".post").length>0){var d=window.location.pathname;tacklePV(b,d,$("#pv"),a)}}}var getInitStatus=(function(){var a=false;return function(){let ret=a;if(!a){a=true}return ret}})();var PvCache=(function(){const e="pv";const b="pv-created-date";const d="pv-type";var c={ORIGIN:"origin",PROXY:"proxy"};function a(g){return localStorage.getItem(g)}function f(g,h){localStorage.setItem(g,h)}return{getData:function(){return JSON.parse(localStorage.getItem(e))},saveOriginCache:function(g){f(e,g);f(d,c.ORIGIN);f(b,new Date().toJSON())},saveProxyCache:function(g){f(e,g);f(d,c.PROXY);f(b,new Date().toJSON())},isOriginCache:function(){return a(d)==c.ORIGIN},isProxyCache:function(){return a(d)==c.PROXY},isExpired:function(){if(PvCache.isOriginCache()){let date=new Date(a(b));date.setDate(date.getDate()+1);return Date.now()>=date.getTime()}else{if(PvCache.isProxyCache()){let date=new Date(a(b));date.setHours(date.getHours()+1);return Date.now()>=date.getTime()}}return false},getAllPagevies:function(){return PvCache.getData().totalsForAllResults["ga:pageviews"]},newerThan:function(g){return PvCache.getAllPagevies()>g.totalsForAllResults["ga:pageviews"]}}})();function fetchOriginPageviews(a){if(a===undefined){return}displayPageviews(a);PvCache.saveOriginCache(JSON.stringify(a))}function fetchProxyPageviews(){let proxy=JSON.parse(proxyData);$.ajax({type:"GET",url:proxy.url,dataType:"jsonp",jsonpCallback:"displayPageviews",success:function(b,c,a){PvCache.saveProxyCache(JSON.stringify(b))},error:function(a,c,b){console.log("Failed to load pageviews from proxy server: "+b)}})}$(function(){if($(".pageviews").length>0){let cache=PvCache.getData();if(cache){if(PvCache.isExpired()){if(PvCache.isProxyCache()){let originPvData=pageviews?JSON.parse(pageviews):undefined;if(originPvData){if(PvCache.newerThan(originPvData)){displayPageviews(cache)}else{fetchOriginPageviews(originPvData)}}fetchProxyPageviews()}else{if(PvCache.isOriginCache()){fetchOriginPageviews(originPvData);fetchProxyPageviews()}}}else{displayPageviews(cache);if(PvCache.isOriginCache()){fetchProxyPageviews()}}}else{let originPvData=pageviews?JSON.parse(pageviews):undefined;fetchOriginPageviews(originPvData);fetchProxyPageviews()}}});
|
|
||||||
1
assets/js/dist/timeago.min.js
vendored
1
assets/js/dist/timeago.min.js
vendored
@@ -1 +0,0 @@
|
|||||||
$(function(){function d(h,g){var f=new Date();var o=new Date(h);var n=Math.floor((f-o)/1000);var l=Math.floor(n/31536000);if(l>=1){return l+" year"+(l>1?"s":"")+" ago"}var k=Math.floor(n/2592000);if(k>=1){return k+" month"+(k>1?"s":"")+" ago"}var e=Math.floor(n/604800);if(e>=1){return e+" week"+(e>1?"s":"")+" ago"}var m=Math.floor(n/86400);if(m>=1){return m+" day"+(m>1?"s":"")+" ago"}var j=Math.floor(n/3600);if(j>=1){return j+" hour"+(j>1?"s":"")+" ago"}var i=Math.floor(n/60);if(i>=1){return i+" minute"+(i>1?"s":"")+" ago"}return(g?"just":"Just")+" now"}function c(){$(".timeago").each(function(){if($(this).children("i").length>0){var g=$(this).hasClass("lastmod");var f=$(this).children("i");var e=f.text();$(this).text(d(e,g));$(this).append(f)}});if(a==0&&b!=undefined){clearInterval(b)}return a}var a=$(".timeago").length;if(a==0){return}if(c()>0){a=$(".timeago").length;var b=setInterval(c,60000)}});
|
|
||||||
1
assets/js/dist/toc.min.js
vendored
1
assets/js/dist/toc.min.js
vendored
@@ -1 +0,0 @@
|
|||||||
$(function(){if($("#post-wrapper .post-content h1").length==0&&$("#post-wrapper .post-content h2").length==0){$("#toc-wrapper").addClass("unloaded")}});
|
|
||||||
1
assets/js/dist/tooltip-loader.min.js
vendored
1
assets/js/dist/tooltip-loader.min.js
vendored
@@ -1 +0,0 @@
|
|||||||
$(function(){$('[data-toggle="tooltip"]').tooltip()});
|
|
||||||
11
assets/js/home.min.js
vendored
Normal file
11
assets/js/home.min.js
vendored
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
---
|
||||||
|
layout: compress
|
||||||
|
|
||||||
|
# JS for layout home.
|
||||||
|
# Chirpy v2.3
|
||||||
|
# https://github.com/cotes2020/jekyll-theme-chirpy
|
||||||
|
# © 2020 Cotes Chung
|
||||||
|
# MIT License
|
||||||
|
---
|
||||||
|
|
||||||
|
{% include_relative _home-post.js %}
|
||||||
11
assets/js/page.min.js
vendored
Normal file
11
assets/js/page.min.js
vendored
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
---
|
||||||
|
layout: compress
|
||||||
|
|
||||||
|
# JS for layout page by default.
|
||||||
|
# Chirpy v2.3
|
||||||
|
# https://github.com/cotes2020/jekyll-theme-chirpy
|
||||||
|
# © 2020 Cotes Chung
|
||||||
|
# MIT License
|
||||||
|
---
|
||||||
|
|
||||||
|
{% include_relative _commons.js %}
|
||||||
15
assets/js/post.min.js
vendored
Normal file
15
assets/js/post.min.js
vendored
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
---
|
||||||
|
layout: compress
|
||||||
|
|
||||||
|
# JS for layout post.
|
||||||
|
# Chirpy v2.3
|
||||||
|
# https://github.com/cotes2020/jekyll-theme-chirpy
|
||||||
|
# © 2020 Cotes Chung
|
||||||
|
# MIT License
|
||||||
|
---
|
||||||
|
|
||||||
|
{% include_relative _home-post.js %}
|
||||||
|
|
||||||
|
{% include_relative lib/_bootstrap-toc.min.js %}
|
||||||
|
|
||||||
|
{% include_relative _utils/toc-filter.js %}
|
||||||
2
assets/lib/jquery-3.4.1.min.js
vendored
2
assets/lib/jquery-3.4.1.min.js
vendored
File diff suppressed because one or more lines are too long
@@ -6,10 +6,12 @@
|
|||||||
[](https://github.com/cotes2020/jekyll-theme-chirpy/blob/master/LICENSE)
|
[](https://github.com/cotes2020/jekyll-theme-chirpy/blob/master/LICENSE)
|
||||||
[](https://996.icu)
|
[](https://996.icu)
|
||||||
|
|
||||||
一个不一样的响应式设计 Jekyll 主题(内附神秘工具),采用响应式设计,方便记录、管理、分享你的知识和经验。
|
一个不一样的 Jekyll 主题,采用响应式设计,方便记录、管理、分享你的知识和经验。[懂的进 »](https://chirpy.cotes.info)
|
||||||
|
|
||||||
[](https://chirpy.cotes.info)
|
[](https://chirpy.cotes.info)
|
||||||
|
|
||||||
|
> ⚠️ 中文版文档存在更新不及时的风险(开源文档以英文为主,请见谅)。如果发现中、英文内容不匹配的情况,一切以英文版内容为准。如果您愿意的话,可提交 issuse 提醒作者更新中文版 README,谢谢。
|
||||||
|
|
||||||
## 目录
|
## 目录
|
||||||
|
|
||||||
* [功能预览](#功能预览)
|
* [功能预览](#功能预览)
|
||||||
@@ -28,9 +30,10 @@
|
|||||||
* 自动推荐相关文章
|
* 自动推荐相关文章
|
||||||
* 语法高亮
|
* 语法高亮
|
||||||
* 二级目录
|
* 二级目录
|
||||||
|
* 数学表达式
|
||||||
* 搜索
|
* 搜索
|
||||||
* Atom 订阅
|
* Atom 订阅
|
||||||
* Disqus 评论
|
* Disqus 评论
|
||||||
* Google 分析
|
* Google 分析
|
||||||
* GA 浏览报告(高级功能)
|
* GA 浏览报告(高级功能)
|
||||||
* SEO 优化
|
* SEO 优化
|
||||||
@@ -41,9 +44,9 @@
|
|||||||
|
|
||||||
### 准备工作
|
### 准备工作
|
||||||
|
|
||||||
按照 [Jekyll 官方文档](https://jekyllrb.com/docs/installation/) 完成基础环境的安装 (Ruby,RubyGem,Bundler 和 Jekyll)。
|
按照 [Jekyll 官方文档](https://jekyllrb.com/docs/installation/) 完成基础环境的安装 (`Ruby`,`RubyGem`,`Bundler`)。
|
||||||
|
|
||||||
为了使用项目内免费提供的脚本工具提升你的写作体验,如果你的机器系统是 Debian 或者 macOS,则需要确保安装了 [GNU coreutils](https://www.gnu.org/software/coreutils/)。否则,通过以下方式获得:
|
为了使用项目内免费提供的脚本工具增进写作体验,如果你的机器系统是 Debian 或者 macOS,则需要确保安装了 [GNU coreutils](https://www.gnu.org/software/coreutils/)。否则,通过以下方式获得:
|
||||||
|
|
||||||
* Debian
|
* Debian
|
||||||
|
|
||||||
@@ -66,7 +69,6 @@ $ git clone git@github.com:USER/jekyll-theme-chirpy.git -b master
|
|||||||
把上述的`USER` 替换为你的 GitHub username。
|
把上述的`USER` 替换为你的 GitHub username。
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### 安装 Jekyll 插件
|
### 安装 Jekyll 插件
|
||||||
|
|
||||||
本地首次运行或编译,请在项目根目录下运行:
|
本地首次运行或编译,请在项目根目录下运行:
|
||||||
@@ -121,13 +123,25 @@ jekyll-theme-chirpy/
|
|||||||
|
|
||||||
根据个人需要去修改 `_config.yml` 的变量,大部分都有注释介绍用法。
|
根据个人需要去修改 `_config.yml` 的变量,大部分都有注释介绍用法。
|
||||||
|
|
||||||
* 头像
|
* `url`
|
||||||
|
|
||||||
示例的头像文件放置在:`/assets/img/sample/avatar.jpg`. 把它换成你自己的头像,路径不限定,越小越好。(压缩图像体积可上这个网站:*<https://tinypng.com/>* ).
|
定义网站 URL,注意结尾不带 `/`。格式: `<protocol>://<domain>`.
|
||||||
|
|
||||||
* 时区
|
* `avatar`
|
||||||
|
|
||||||
|
定义头像,示例的文件放置在:`/assets/img/sample/avatar.jpg`. 把它换成你自己的头像,路径不限定,越小越好。(压缩图像体积可上这个网站:*<https://tinypng.com/>* ).
|
||||||
|
|
||||||
时区由 `timezone` 定义,默认为 `亚洲/上海`,如果肉身翻墙要换城市可在此列表找到: [TimezoneConverter](http://www.timezoneconverter.com/cgi-bin/findzone/findzone) 或者 [Wikipedia](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones).
|
* `timezone`
|
||||||
|
|
||||||
|
定义时区 ,默认为 `亚洲/上海`,如果肉身翻墙要换城市可在此列表找到: [TimezoneConverter](http://www.timezoneconverter.com/cgi-bin/findzone/findzone) 或者 [Wikipedia](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones).
|
||||||
|
|
||||||
|
* `theme_mode`
|
||||||
|
|
||||||
|
定义颜色方案,有三种可选::
|
||||||
|
|
||||||
|
- **dual** - 自动跟随系统的 `深色`/`浅色` 设置,当系统或者浏览器不支持深色模式,则默认显示为浅色模式。无论如何,侧边栏左下角都会显示一个颜色切换按钮。
|
||||||
|
- **dark** - 全程深色模式。
|
||||||
|
- **light** - 全程浅色模式。
|
||||||
|
|
||||||
|
|
||||||
### 本地运行
|
### 本地运行
|
||||||
@@ -167,7 +181,18 @@ $ bash tools/init.sh
|
|||||||
|
|
||||||
>**注**: *最后更新* 列表根据文章的 git 修改记录生成,所以运行前先把 `_posts` 目录的修改提交。
|
>**注**: *最后更新* 列表根据文章的 git 修改记录生成,所以运行前先把 `_posts` 目录的修改提交。
|
||||||
|
|
||||||
它会自动生成文章的 *最后修改日期* 和 *分类 / 标签* 页面.
|
它会自动生成文章的 *最后修改日期* 和 *分类 / 标签* 页面,并自动提交一个 commit。输出日志类似如下:
|
||||||
|
|
||||||
|
```terminal
|
||||||
|
[INFO] Success to update lastmod for 4 post(s).
|
||||||
|
[INFO] Succeed! 3 category-pages created.
|
||||||
|
[INFO] Succeed! 4 tag-pages created.
|
||||||
|
[Automation] Updated the Categories, Tags, Lastmod for post(s).
|
||||||
|
11 files changed, 46 insertions(+), 3 deletions(-)
|
||||||
|
...
|
||||||
|
Updated the Categories, Tags, Lastmod for post(s).
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
**3**. 推送到 `origin/master` 然后到 GitHub 网页为该项目开启 Pages 服务。
|
**3**. 推送到 `origin/master` 然后到 GitHub 网页为该项目开启 Pages 服务。
|
||||||
|
|
||||||
@@ -210,22 +235,24 @@ $ bash tools/build.sh -d /path/to/local/project/
|
|||||||
|User or Organization | `https://<username>.github.io/`|
|
|User or Organization | `https://<username>.github.io/`|
|
||||||
|Project| `https://<username>.github.io/project/`|
|
|Project| `https://<username>.github.io/project/`|
|
||||||
|
|
||||||
|
#### 结束工作
|
||||||
|
|
||||||
|
无论你选择了哪种方式部署网站到 GitHub Pages, 请开启 `HTTPS` 功能。具体细节参考官方说明:[Configuring a publishing source for your GitHub Pages site](https://help.github.com/en/github/working-with-github-pages/securing-your-github-pages-site-with-https)。
|
||||||
|
|
||||||
### 文档
|
### 文档
|
||||||
|
|
||||||
更多细节及更佳的阅读体验,请参阅 [线上教程](https://chirpy.cotes.info/categories/tutorial/)。 与此同时,[Wiki](https://github.com/cotes2020/jekyll-theme-chirpy/wiki) 也有一份教程的拷贝。
|
若想要更多细节以及更佳的阅读体验,请参阅 [线上教程](https://chirpy.cotes.info/categories/tutorial/)。 与此同时,[Wiki](https://github.com/cotes2020/jekyll-theme-chirpy/wiki) 也有一份教程的拷贝。
|
||||||
|
|
||||||
|
|
||||||
## 参与贡献
|
## 参与贡献
|
||||||
|
|
||||||
三人行必有我师,欢迎提报告 bug, 帮助改进代码质量,或者提交新功能。具体操作规则请参考[此文](.github/CONTRIBUTING.md),谢谢🙏。
|
三人行必有我师,欢迎提报告 bug, 帮助改进代码质量,或者提交新功能。具体操作规则请参考 [贡献指南](../.github/CONTRIBUTING.md),谢谢 🙏。
|
||||||
|
|
||||||
## 感谢
|
## 感谢
|
||||||
|
|
||||||
这个主题的开发主要基于 [Jekyll](https://jekyllrb.com/) 生态、[Bootstrap](https://getbootstrap.com/)、[Font Awesome](https://fontawesome.com/) 和其他一些出色的工具 (相关文件中可以找到这些工具的版权信息).
|
这个主题的开发主要基于 [Jekyll](https://jekyllrb.com/) 生态、[Bootstrap](https://getbootstrap.com/)、[Font Awesome](https://fontawesome.com/) 和其他一些出色的工具 (相关文件中可以找到这些工具的版权信息).
|
||||||
|
|
||||||
:tada:感谢所有参与代码贡献的小伙伴, 他们的 GayHub ID 在这个[列表](https://github.com/cotes2020/jekyll-theme-chirpy/graphs/contributors)。 另外, 提交过 issues(或者未被合并 PR)的高富帅和白富美也不会被遗忘,他/她们帮助报告 bug、分享新点子或者启发了我写出更通俗易懂的文档。
|
:tada:感谢所有参与代码贡献的小伙伴, 他们的 GayHub ID 在这个[列表](https://github.com/cotes2020/jekyll-theme-chirpy/graphs/contributors)。 另外, 提交过 issues(或者未被合并 PR) 的高富帅和白富美也不会被遗忘,他/她们帮助报告 bug、分享新点子或者启发了我写出更通俗易懂的文档。
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## 赞助
|
## 赞助
|
||||||
|
|||||||
3
sw.js
3
sw.js
@@ -1,12 +1,13 @@
|
|||||||
---
|
---
|
||||||
layout: compress
|
layout: compress
|
||||||
|
|
||||||
# Chirpy v2.2
|
# Chirpy v2.2
|
||||||
# https://github.com/cotes2020/jekyll-theme-chirpy
|
# https://github.com/cotes2020/jekyll-theme-chirpy
|
||||||
# © 2020 Cotes Chung
|
# © 2020 Cotes Chung
|
||||||
# MIT Licensed
|
# MIT Licensed
|
||||||
---
|
---
|
||||||
|
|
||||||
self.importScripts('{{ "/assets/data/cache-list.js" | relative_url }}');
|
self.importScripts('{{ "/assets/js/data/cache-list.js" | relative_url }}');
|
||||||
|
|
||||||
var cacheName = 'chirpy-{{ "now" | date: "%Y%m%d.%H%M" }}';
|
var cacheName = 'chirpy-{{ "now" | date: "%Y%m%d.%H%M" }}';
|
||||||
|
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ title: Archives
|
|||||||
{% capture this_month %}{{ post.date | date: "%b" }}{% endcapture %}
|
{% capture this_month %}{{ post.date | date: "%b" }}{% endcapture %}
|
||||||
<span class="date day">{{ this_day }}</span>
|
<span class="date day">{{ this_day }}</span>
|
||||||
<span class="date month small text-muted">{{ this_month }}</span>
|
<span class="date month small text-muted">{{ this_month }}</span>
|
||||||
<a href="{{ site.baseurl }}{{ post.url }}">{{ post.title }}</a>
|
<a href="{{ post.url | relative_url }}">{{ post.title }}</a>
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
{% if forloop.last %}
|
{% if forloop.last %}
|
||||||
|
|||||||
@@ -20,9 +20,11 @@ title: Categories
|
|||||||
|
|
||||||
{% for post in posts_of_category %}
|
{% for post in posts_of_category %}
|
||||||
{% assign second_category = post.categories[1] %}
|
{% assign second_category = post.categories[1] %}
|
||||||
{% unless sub_categories contains second_category %}
|
{% if second_category %}
|
||||||
{% assign sub_categories = sub_categories | push: second_category %}
|
{% unless sub_categories contains second_category %}
|
||||||
{% endunless %}
|
{% assign sub_categories = sub_categories | push: second_category %}
|
||||||
|
{% endunless %}
|
||||||
|
{% endif %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
||||||
{% assign sub_categories = sub_categories | sort %}
|
{% assign sub_categories = sub_categories | sort %}
|
||||||
@@ -85,5 +87,3 @@ title: Categories
|
|||||||
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
||||||
<script src="{{ site.baseurl }}/assets/js/dist/category-collapse.min.js" async></script>
|
|
||||||
|
|||||||
@@ -1,80 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
#
|
|
||||||
# A development tool that use yuicompressor to compress JS files.
|
|
||||||
#
|
|
||||||
#
|
|
||||||
# Requirement:
|
|
||||||
# - wget
|
|
||||||
# - JRE
|
|
||||||
# - yuicompressor › https://github.com/yui/yuicompressor
|
|
||||||
#
|
|
||||||
#
|
|
||||||
# Usage: bash /path/to/js-compress.sh
|
|
||||||
#
|
|
||||||
# Process:
|
|
||||||
# input: /path/to/js/source.js --> output: /path/to/js/dist/source.min.js
|
|
||||||
#
|
|
||||||
# v2.0
|
|
||||||
# https://github.com/cotes2020/jekyll-theme-chirpy
|
|
||||||
# © 2020 Cotes Chung
|
|
||||||
# MIT Licensed
|
|
||||||
|
|
||||||
|
|
||||||
set -eu
|
|
||||||
|
|
||||||
PROJ_HOME=$(dirname $(dirname $(realpath "$0")))
|
|
||||||
|
|
||||||
YUICOMPRESSOR_SRC=https://github.com/yui/yuicompressor/releases/download/v2.4.8/yuicompressor-2.4.8.jar
|
|
||||||
YUICOMPRESSOR=${PROJ_HOME}/tools/package/yuicompressor-2.4.8.jar
|
|
||||||
JS_ROOT=${PROJ_HOME}/assets/js/
|
|
||||||
JS_SRC=${JS_ROOT}_src # JS source files
|
|
||||||
JS_DEST=${JS_ROOT}dist # Compressed output directory
|
|
||||||
PREFIX_LEN=${#JS_ROOT} # To beautify the log
|
|
||||||
|
|
||||||
|
|
||||||
function init() {
|
|
||||||
if [[ ! -f $YUICOMPRESSOR ]]; then
|
|
||||||
if [[ ! -d "${PROJ_HOME}/tools/package/" ]]; then
|
|
||||||
mkdir -p "${PROJ_HOME}/tools/package/"
|
|
||||||
fi
|
|
||||||
wget "$YUICOMPRESSOR_SRC" -P "${PROJ_HOME}/tools/package/" -q
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
function compress() {
|
|
||||||
# $1 is the source dir
|
|
||||||
# $2 is the destination dir
|
|
||||||
# $3 is the sub dir of source dir, nullable
|
|
||||||
if [[ -z ${3:+unset} ]]
|
|
||||||
then
|
|
||||||
sub_dir=""
|
|
||||||
else
|
|
||||||
sub_dir="$3/"
|
|
||||||
fi
|
|
||||||
|
|
||||||
for item in $(ls $1)
|
|
||||||
do
|
|
||||||
src="$1/$item"
|
|
||||||
if [[ -d "$src" ]]; then
|
|
||||||
compress $src $2 $item # recursion
|
|
||||||
else
|
|
||||||
|
|
||||||
if [[ -z $(git status $src -s) ]]; then
|
|
||||||
continue
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ ! -d "$2/${sub_dir}" ]]; then
|
|
||||||
mkdir -p $2/${sub_dir}
|
|
||||||
fi
|
|
||||||
output=$2/${sub_dir}${item%.*}.min.js
|
|
||||||
echo "java -jar $(basename $YUICOMPRESSOR) ${src:$PREFIX_LEN} -o ${output:$PREFIX_LEN}"
|
|
||||||
java -jar $YUICOMPRESSOR $src -o $output
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
sub_dir="" # clean up for next recursion.
|
|
||||||
}
|
|
||||||
|
|
||||||
init
|
|
||||||
|
|
||||||
compress $JS_SRC $JS_DEST
|
|
||||||
Reference in New Issue
Block a user