mirror of
https://github.com/adityatelange/hugo-PaperMod.git
synced 2023-12-21 10:22:58 +01:00
Merge branch 'master' of github.com:adityatelange/hugo-PaperMod
This commit is contained in:
commit
f2b1a0536f
12
.github/FUNDING.yml
vendored
12
.github/FUNDING.yml
vendored
@ -1,12 +0,0 @@
|
||||
# These are supported funding model platforms
|
||||
|
||||
github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
|
||||
patreon: # Replace with a single Patreon username
|
||||
open_collective: # Replace with a single Open Collective username
|
||||
ko_fi: adityatelange
|
||||
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
|
||||
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
|
||||
liberapay: # Replace with a single Liberapay username
|
||||
issuehunt: # Replace with a single IssueHunt username
|
||||
otechie: # Replace with a single Otechie username
|
||||
custom: ['https://www.buymeacoffee.com/adityatelange']
|
5
.github/ISSUE_TEMPLATE/bug_report.md
vendored
5
.github/ISSUE_TEMPLATE/bug_report.md
vendored
@ -26,7 +26,7 @@ Please fill the template below
|
||||
- Device/Os: [e.g. Android 10]
|
||||
- Type: [e.g. Desktop/Mobile]
|
||||
- Browser and version [e.g. Chrome 86.0]:
|
||||
- Hugo Version [ >=0.82.0 expected]:
|
||||
- Hugo Version [ >=0.97.1 expected]:
|
||||
- Theme Version [e.g. v4.0, master, or commit-id ]:
|
||||
|
||||
**Steps to reproduce the behavior:**
|
||||
@ -40,6 +40,9 @@ Please fill the template below
|
||||
**Expected behavior**:
|
||||
<!-- A clear and concise description of what you expected to happen. -->
|
||||
|
||||
**Repo/Source where this issue can be reproduced**:
|
||||
<!-- Please link source code of website where the said issue can be reproduced -->
|
||||
|
||||
**Screenshots**
|
||||
<!-- If applicable, add screenshots to help explain your problem. -->
|
||||
|
||||
|
3
.github/PULL_REQUEST_TEMPLATE.md
vendored
3
.github/PULL_REQUEST_TEMPLATE.md
vendored
@ -37,7 +37,8 @@ is closed automatically when this PR is merged.
|
||||
|
||||
- [ ] This change adds/updates translations and I have used the [template present here](https://github.com/adityatelange/hugo-PaperMod/wiki/Translations#want-to-add-your-language-).
|
||||
- [ ] I have enabled [maintainer edits for this PR](https://help.github.com/en/github/collaborating-with-issues-and-pull-requests/allowing-changes-to-a-pull-request-branch-created-from-a-fork).
|
||||
- [ ] I have verified that the code works as described/as intended.
|
||||
- [ ] This change adds a Social Icon which has a permissive license to use it.
|
||||
- [ ] This change **does not** any CDN resources/links.
|
||||
- [ ] This change **does not** include any CDN resources/links.
|
||||
- [ ] This change **does not** include any unrelated scripts such as bash and python scripts.
|
||||
- [ ] This change updates the overridden internal templates from HUGO's repository.
|
||||
|
32
.github/workflows/build.yml
vendored
32
.github/workflows/build.yml
vendored
@ -1,32 +0,0 @@
|
||||
name: Build
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
branches:
|
||||
- master
|
||||
- exampleSite
|
||||
workflow_dispatch:
|
||||
# manual run
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Git checkout
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
ref: exampleSite
|
||||
|
||||
- name: Get Theme
|
||||
run: git submodule update --init --recursive
|
||||
|
||||
- name: Update theme to Latest commit
|
||||
run: git submodule update --remote --merge
|
||||
|
||||
- name: Setup hugo
|
||||
uses: peaceiris/actions-hugo@v2
|
||||
with:
|
||||
hugo-version: 'latest'
|
||||
|
||||
- name: Build
|
||||
run: hugo --buildDrafts --gc --verbose --minify
|
82
.github/workflows/gh-pages.yml
vendored
82
.github/workflows/gh-pages.yml
vendored
@ -1,42 +1,80 @@
|
||||
name: Build GH-Pages
|
||||
name: Deploy Hugo PaperMod Demo to Pages
|
||||
|
||||
on:
|
||||
push:
|
||||
paths-ignore:
|
||||
- 'images/**'
|
||||
- 'LICENSE'
|
||||
- 'README.md'
|
||||
- "images/**"
|
||||
- "LICENSE"
|
||||
- "README.md"
|
||||
branches:
|
||||
- master
|
||||
- exampleSite
|
||||
workflow_dispatch:
|
||||
# manual run
|
||||
inputs:
|
||||
hugoVersion:
|
||||
description: "Hugo Version"
|
||||
required: false
|
||||
default: "0.97.1"
|
||||
|
||||
# Allow one concurrent deployment
|
||||
concurrency:
|
||||
group: "pages"
|
||||
cancel-in-progress: true
|
||||
|
||||
# Default to bash
|
||||
defaults:
|
||||
run:
|
||||
shell: bash
|
||||
|
||||
# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
|
||||
permissions:
|
||||
contents: read
|
||||
pages: write
|
||||
id-token: write
|
||||
|
||||
jobs:
|
||||
deploy:
|
||||
# Build job
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
env:
|
||||
HUGO_VERSION: "0.97.1"
|
||||
steps:
|
||||
- name: Git checkout
|
||||
uses: actions/checkout@v2
|
||||
- name: Check version
|
||||
if: ${{ github.event.inputs.hugoVersion }}
|
||||
run: export HUGO_VERSION="${{ github.event.inputs.hugoVersion }}"
|
||||
- name: Install Hugo CLI
|
||||
run: |
|
||||
wget -O ${{ runner.temp }}/hugo.deb https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_${HUGO_VERSION}_Linux-64bit.deb \
|
||||
&& sudo dpkg -i ${{ runner.temp }}/hugo.deb
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
ref: exampleSite
|
||||
|
||||
- name: Setup Pages
|
||||
id: pages
|
||||
uses: actions/configure-pages@v3
|
||||
- name: Get Theme
|
||||
run: git submodule update --init --recursive
|
||||
|
||||
- name: Update theme to Latest commit
|
||||
run: git submodule update --remote --merge
|
||||
|
||||
- name: Setup hugo
|
||||
uses: peaceiris/actions-hugo@v2
|
||||
- name: Build with Hugo
|
||||
run: |
|
||||
hugo \
|
||||
--buildDrafts --gc --verbose \
|
||||
--baseURL ${{ steps.pages.outputs.base_url }}
|
||||
- name: Upload artifact
|
||||
uses: actions/upload-pages-artifact@v2
|
||||
with:
|
||||
hugo-version: 'latest'
|
||||
|
||||
- name: Build
|
||||
run: hugo --buildDrafts --gc --verbose --minify
|
||||
|
||||
- name: Deploy
|
||||
uses: peaceiris/actions-gh-pages@v3
|
||||
with:
|
||||
github_token: ${{ secrets.TOKEN }}
|
||||
publish_dir: ./public
|
||||
path: ./public
|
||||
# Deployment job
|
||||
deploy:
|
||||
environment:
|
||||
name: github-pages
|
||||
url: ${{ steps.deployment.outputs.page_url }}
|
||||
runs-on: ubuntu-latest
|
||||
needs: build
|
||||
steps:
|
||||
- name: Deploy to GitHub Pages
|
||||
id: deployment
|
||||
uses: actions/deploy-pages@v2
|
||||
|
2
LICENSE
2
LICENSE
@ -1,7 +1,7 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2020 nanxiaobei and adityatelange
|
||||
Copyright (c) 2021 adityatelange
|
||||
Copyright (c) 2021-2023 adityatelange
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
|
52
README.md
52
README.md
@ -3,18 +3,17 @@
|
||||
<h4 align=center>☄️ Fast | ☁️ Fluent | 🌙 Smooth | 📱 Responsive</h4>
|
||||
<br>
|
||||
|
||||
> Hugo PaperMod is a theme based on [hugo-paper](https://github.com/nanxiaobei/hugo-paper).
|
||||
> The goal of this project is to add more Features and customization to the og theme.
|
||||
> Hugo PaperMod is a theme based on [hugo-paper](https://github.com/nanxiaobei/hugo-paper/tree/4330c8b12aa48bfdecbcad6ad66145f679a430b3).
|
||||
> The goal of this project is to add more features and customization to the og theme.
|
||||
|
||||
The [demo](https://adityatelange.github.io/hugo-PaperMod/) includes a lot of documentation about Installation, Features with few more stuff. Make sure you visit it, to get the awesome hands-on experience and get known about the features ...
|
||||
**Documentation** can be found here: [**📚 Wiki**](https://github.com/adityatelange/hugo-PaperMod/wiki)
|
||||
|
||||
**ExampleSite** can be found here: [exampleSite](https://github.com/adityatelange/hugo-PaperMod/tree/exampleSite). Demo is built up with [exampleSite](https://github.com/adityatelange/hugo-PaperMod/tree/exampleSite) as source.
|
||||
**ExampleSite** can be found here: [**exampleSite**](https://github.com/adityatelange/hugo-PaperMod/tree/exampleSite). Demo is built up with [exampleSite](https://github.com/adityatelange/hugo-PaperMod/tree/exampleSite) as source.
|
||||
|
||||
[![Minimum Hugo Version](https://img.shields.io/static/v1?label=min-HUGO-version&message=0.82.0&color=blue&logo=hugo)](https://github.com/gohugoio/hugo/releases/tag/v0.82.0)
|
||||
[![Build GH-Pages](https://github.com/adityatelange/hugo-PaperMod/workflows/Build%20GH-Pages/badge.svg)](https://github.com/adityatelange/hugo-PaperMod/deployments/activity_log?environment=github-pages)
|
||||
[![hugo-papermod](https://img.shields.io/badge/Hugo--Themes-@PaperMod-blue)](https://themes.gohugo.io/themes/hugo-papermod/)
|
||||
[![Minimum Hugo Version](https://img.shields.io/static/v1?label=HUGO-version&message=>0.97.1&color=blue&logo=hugo)](https://github.com/gohugoio/hugo/releases/tag/v0.97.1)
|
||||
[![Discord](https://img.shields.io/discord/971046860317921340?label=Discord&logo=discord)](https://discord.gg/ahpmTvhVmp)
|
||||
[![GitHub](https://img.shields.io/github/license/adityatelange/hugo-PaperMod)](https://github.com/adityatelange/hugo-PaperMod/blob/master/LICENSE)
|
||||
[![hugo-papermod](https://img.shields.io/badge/Hugo--Themes-@PaperMod-blue)](https://themes.gohugo.io/hugo-papermod/)
|
||||
[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=adityatelange_hugo-PaperMod&metric=alert_status)](https://sonarcloud.io/dashboard?id=adityatelange_hugo-PaperMod)
|
||||
![code-size](https://img.shields.io/github/languages/code-size/adityatelange/hugo-PaperMod)
|
||||
|
||||
---
|
||||
@ -35,7 +34,7 @@ The [demo](https://adityatelange.github.io/hugo-PaperMod/) includes a lot of doc
|
||||
- Table of Content Generation (newer implementation).
|
||||
- Archive of posts.
|
||||
- Social Icons (home-info and profile-mode)
|
||||
- Social-Media Share buttons on post.
|
||||
- Social-Media Share buttons on posts.
|
||||
- Menu location indicator.
|
||||
- Multilingual support. (with language selector)
|
||||
- Taxonomies
|
||||
@ -45,9 +44,9 @@ The [demo](https://adityatelange.github.io/hugo-PaperMod/) includes a lot of doc
|
||||
- Multiple Author support.
|
||||
- Search Page with Fuse.js
|
||||
- Other Posts suggestion below a post
|
||||
- BreadCrumb Navigation
|
||||
- Breadcrumb Navigation
|
||||
- Code Block Copy buttons
|
||||
- No webpack, nodejs and other dependencies required to edit the theme.
|
||||
- No webpack, nodejs and other dependencies are required to edit the theme.
|
||||
|
||||
Read Wiki For More Details => **[PaperMod - Features](https://github.com/adityatelange/hugo-PaperMod/wiki/Features)**
|
||||
|
||||
@ -59,25 +58,33 @@ Read Wiki For More Details => **[PaperMod - Installation](https://github.com/adi
|
||||
|
||||
---
|
||||
|
||||
## Social-Icons/Share-Icons 🖼️
|
||||
|
||||
Read Wiki For More Details => **[PaperMod-Icons](https://github.com/adityatelange/hugo-PaperMod/wiki/Icons)**
|
||||
|
||||
---
|
||||
|
||||
## FAQs / How To's Guide 🙋
|
||||
|
||||
Read Wiki For More Details => **[PaperMod-FAQs](https://github.com/adityatelange/hugo-PaperMod/wiki/FAQs)**
|
||||
|
||||
---
|
||||
|
||||
## Release Changelog
|
||||
## Social-Icons/Share-Icons 🖼️
|
||||
|
||||
Read Wiki For More Details => **[PaperMod-Icons](https://github.com/adityatelange/hugo-PaperMod/wiki/Icons)**
|
||||
|
||||
---
|
||||
|
||||
## Release Changelog 📃
|
||||
|
||||
Release ChangeLog has info about stuff added: **[Releases](https://github.com/adityatelange/hugo-PaperMod/releases)**
|
||||
|
||||
---
|
||||
|
||||
## [LightHouse Report (100% ?)](https://lighthouse-dot-webdotdevsite.appspot.com//lh/html?url=https%3A%2F%2Fadityatelange.github.io%2Fhugo-PaperMod%2F)
|
||||
## [Pagespeed Insights (100% ?)](https://pagespeed.web.dev/report?url=https://adityatelange.github.io/hugo-PaperMod/) 👀
|
||||
|
||||
---
|
||||
|
||||
## Support 🫶
|
||||
|
||||
- Star 🌟 this repository.
|
||||
- Help spread the word about PaperMod by sharing it on social media and recommending it to your friends. 🗣️
|
||||
- You can also sponsor 🏅 on [Github Sponsors](https://github.com/sponsors/adityatelange) / [Ko-Fi](https://ko-fi.com/adityatelange).
|
||||
|
||||
---
|
||||
|
||||
@ -86,4 +93,11 @@ Release ChangeLog has info about stuff added: **[Releases](https://github.com/ad
|
||||
- [**Highlight.js**](https://github.com/highlightjs/highlight.js)
|
||||
- [**Fuse.js**](https://github.com/krisk/fuse)
|
||||
- [**Feather Icons**](https://github.com/feathericons/feather)
|
||||
- [**Simple Icons**](https://github.com/simple-icons/simple-icons)
|
||||
- **All Contributors and Supporters**
|
||||
|
||||
---
|
||||
|
||||
## Stargazers over time 📈
|
||||
|
||||
<kbd>[![Stargazers over time](https://starchart.cc/adityatelange/hugo-PaperMod.svg)](https://starchart.cc/adityatelange/hugo-PaperMod)</kbd>
|
||||
|
@ -27,7 +27,7 @@
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.logo a img {
|
||||
.logo a img, .logo a svg {
|
||||
display: inline;
|
||||
vertical-align: middle;
|
||||
pointer-events: none;
|
||||
@ -36,10 +36,6 @@
|
||||
margin-inline-end: 8px;
|
||||
}
|
||||
|
||||
#theme-toggle svg {
|
||||
height: 18px;
|
||||
}
|
||||
|
||||
button#theme-toggle {
|
||||
font-size: 26px;
|
||||
margin: auto 4px;
|
||||
|
@ -59,6 +59,7 @@ pre {
|
||||
border-radius: var(--radius);
|
||||
padding: 0 5px;
|
||||
font-size: 14px;
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
div.highlight:hover .copy-code,
|
||||
|
@ -53,6 +53,7 @@
|
||||
|
||||
.entry-header h2 {
|
||||
font-size: 24px;
|
||||
line-height: 1.3;
|
||||
}
|
||||
|
||||
.entry-content {
|
||||
@ -85,10 +86,6 @@
|
||||
color: var(--secondary);
|
||||
}
|
||||
|
||||
.entry-isdraft {
|
||||
display: inline;
|
||||
}
|
||||
|
||||
.entry-cover {
|
||||
margin-bottom: var(--gap);
|
||||
text-align: center;
|
||||
@ -98,6 +95,7 @@
|
||||
border-radius: var(--radius);
|
||||
pointer-events: none;
|
||||
width: 100%;
|
||||
height: auto;
|
||||
}
|
||||
|
||||
.entry-cover a {
|
||||
|
@ -72,6 +72,8 @@
|
||||
.post-content a,
|
||||
.toc a:hover {
|
||||
box-shadow: 0 1px 0;
|
||||
box-decoration-break: clone;
|
||||
-webkit-box-decoration-break: clone;
|
||||
}
|
||||
|
||||
.post-content a code {
|
||||
@ -81,8 +83,7 @@
|
||||
}
|
||||
|
||||
.post-content del {
|
||||
text-decoration: none;
|
||||
background: linear-gradient(to right, var(--primary) 100%, transparent 0) 0 50%/1px 1px repeat-x;
|
||||
text-decoration: line-through;
|
||||
}
|
||||
|
||||
.post-content dl,
|
||||
@ -153,11 +154,11 @@
|
||||
border-radius: var(--radius);
|
||||
}
|
||||
|
||||
.post-content .highlight:not(table),
|
||||
.post-content pre {
|
||||
.post-content .highlight:not(table) {
|
||||
margin: 10px auto;
|
||||
background: var(--hljs-bg) !important;
|
||||
border-radius: var(--radius);
|
||||
direction: ltr;
|
||||
}
|
||||
|
||||
.post-content li > .highlight {
|
||||
@ -189,14 +190,6 @@
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.post-content .highlighttable td .highlight pre code::-webkit-scrollbar {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.post-content .highlight span {
|
||||
background: 0 0 !important;
|
||||
}
|
||||
|
||||
.post-content code {
|
||||
margin: auto 4px;
|
||||
padding: 4px 6px;
|
||||
@ -210,9 +203,9 @@
|
||||
display: block;
|
||||
margin: auto 0;
|
||||
padding: 10px;
|
||||
color: rgba(255, 255, 255, 0.8);
|
||||
background: 0 0;
|
||||
border-radius: 0;
|
||||
color: rgb(213, 213, 214);
|
||||
background: var(--hljs-bg) !important;
|
||||
border-radius: var(--radius);
|
||||
overflow-x: auto;
|
||||
word-break: break-all;
|
||||
}
|
||||
@ -227,8 +220,7 @@
|
||||
margin: 30px 0;
|
||||
height: 2px;
|
||||
background: var(--tertiary);
|
||||
border-top: 0;
|
||||
border-bottom: 0;
|
||||
border: 0;
|
||||
}
|
||||
|
||||
.post-content iframe {
|
||||
@ -237,10 +229,11 @@
|
||||
|
||||
.post-content img {
|
||||
border-radius: 4px;
|
||||
margin: 1rem 0;
|
||||
}
|
||||
|
||||
.post-content img[src*="#center"] {
|
||||
margin: auto;
|
||||
margin: 1rem auto;
|
||||
}
|
||||
|
||||
.post-content figure.align-center {
|
||||
@ -348,17 +341,6 @@
|
||||
margin-inline-end: 12px;
|
||||
}
|
||||
|
||||
.share-buttons a svg {
|
||||
height: 30px;
|
||||
width: 30px;
|
||||
fill: currentColor;
|
||||
transition: transform 0.1s;
|
||||
}
|
||||
|
||||
.share-buttons svg:active {
|
||||
transform: scale(0.96);
|
||||
}
|
||||
|
||||
h1:hover .anchor,
|
||||
h2:hover .anchor,
|
||||
h3:hover .anchor,
|
||||
@ -369,28 +351,7 @@ h6:hover .anchor {
|
||||
color: var(--secondary);
|
||||
margin-inline-start: 8px;
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
.post-content :not(table) ::-webkit-scrollbar-thumb {
|
||||
border: 2px solid var(--hljs-bg);
|
||||
background: rgba(255, 255, 255, 0.32);
|
||||
}
|
||||
|
||||
.post-content :not(table) ::-webkit-scrollbar-thumb:hover {
|
||||
background: rgba(255, 255, 255, 0.56);
|
||||
}
|
||||
|
||||
.gist table::-webkit-scrollbar-thumb {
|
||||
border: 2px solid rgb(255, 255, 255);
|
||||
background: rgba(0, 0, 0, 0.32);
|
||||
}
|
||||
|
||||
.gist table::-webkit-scrollbar-thumb:hover {
|
||||
background: rgba(0, 0, 0, 0.56);
|
||||
}
|
||||
|
||||
.post-content table::-webkit-scrollbar-thumb {
|
||||
border-width: 2px;
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
.paginav {
|
||||
@ -430,3 +391,12 @@ h6:hover .anchor {
|
||||
[dir="rtl"] .paginav .next {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
h1>a>svg {
|
||||
display: inline;
|
||||
}
|
||||
|
||||
img.in-text {
|
||||
display: inline;
|
||||
margin: auto;
|
||||
}
|
||||
|
@ -17,7 +17,6 @@
|
||||
.profile img {
|
||||
display: inline-table;
|
||||
border-radius: 50%;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.buttons {
|
||||
|
6
assets/css/core/license.css
Normal file
6
assets/css/core/license.css
Normal file
@ -0,0 +1,6 @@
|
||||
/*
|
||||
PaperMod v7
|
||||
License: MIT https://github.com/adityatelange/hugo-PaperMod/blob/master/LICENSE
|
||||
Copyright (c) 2020 nanxiaobei and adityatelange
|
||||
Copyright (c) 2021-2023 adityatelange
|
||||
*/
|
@ -7,6 +7,8 @@
|
||||
html {
|
||||
-webkit-tap-highlight-color: transparent;
|
||||
overflow-y: scroll;
|
||||
-webkit-text-size-adjust: 100%;
|
||||
text-size-adjust: 100%;
|
||||
}
|
||||
|
||||
a,
|
||||
@ -114,25 +116,3 @@ img {
|
||||
display: block;
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
::-webkit-scrollbar-track {
|
||||
background: 0 0;
|
||||
}
|
||||
|
||||
.list:not(.dark)::-webkit-scrollbar-track {
|
||||
background: var(--code-bg);
|
||||
}
|
||||
|
||||
::-webkit-scrollbar-thumb {
|
||||
background: var(--tertiary);
|
||||
border: 5px solid var(--theme);
|
||||
border-radius: var(--radius);
|
||||
}
|
||||
|
||||
.list:not(.dark)::-webkit-scrollbar-thumb {
|
||||
border: 5px solid var(--code-bg);
|
||||
}
|
||||
|
||||
::-webkit-scrollbar-thumb:hover {
|
||||
background: var(--secondary);
|
||||
}
|
||||
|
@ -6,27 +6,27 @@
|
||||
--header-height: 60px;
|
||||
--footer-height: 60px;
|
||||
--radius: 8px;
|
||||
--theme: #fff;
|
||||
--entry: #fff;
|
||||
--primary: rgba(0, 0, 0, 0.88);
|
||||
--secondary: rgba(0, 0, 0, 0.56);
|
||||
--tertiary: rgba(0, 0, 0, 0.16);
|
||||
--content: rgba(0, 0, 0, 0.88);
|
||||
--hljs-bg: #1c1d21;
|
||||
--code-bg: #f5f5f5;
|
||||
--border: #eee;
|
||||
--theme: rgb(255, 255, 255);
|
||||
--entry: rgb(255, 255, 255);
|
||||
--primary: rgb(30, 30, 30);
|
||||
--secondary: rgb(108, 108, 108);
|
||||
--tertiary: rgb(214, 214, 214);
|
||||
--content: rgb(31, 31, 31);
|
||||
--hljs-bg: rgb(28, 29, 33);
|
||||
--code-bg: rgb(245, 245, 245);
|
||||
--border: rgb(238, 238, 238);
|
||||
}
|
||||
|
||||
.dark {
|
||||
--theme: #1d1e20;
|
||||
--entry: #2e2e33;
|
||||
--primary: rgba(255, 255, 255, 0.84);
|
||||
--secondary: rgba(255, 255, 255, 0.56);
|
||||
--tertiary: rgba(255, 255, 255, 0.16);
|
||||
--content: rgba(255, 255, 255, 0.74);
|
||||
--hljs-bg: #2e2e33;
|
||||
--code-bg: #37383e;
|
||||
--border: #333;
|
||||
--theme: rgb(29, 30, 32);
|
||||
--entry: rgb(46, 46, 51);
|
||||
--primary: rgb(218, 218, 219);
|
||||
--secondary: rgb(155, 156, 157);
|
||||
--tertiary: rgb(65, 66, 68);
|
||||
--content: rgb(196, 196, 197);
|
||||
--hljs-bg: rgb(46, 46, 51);
|
||||
--code-bg: rgb(55, 56, 62);
|
||||
--border: rgb(51, 51, 51);
|
||||
}
|
||||
|
||||
.list {
|
||||
|
@ -29,14 +29,6 @@
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (min-width: 768px) {
|
||||
/* reset */
|
||||
::-webkit-scrollbar {
|
||||
width: 19px;
|
||||
height: 11px;
|
||||
}
|
||||
}
|
||||
|
||||
/* footer */
|
||||
@media screen and (max-width: 900px) {
|
||||
.list .top-link {
|
||||
@ -48,7 +40,6 @@
|
||||
/* terms; profile-mode; post-single; post-entry; post-entry; search; search */
|
||||
.terms-tags a:active,
|
||||
.button:active,
|
||||
.share-buttons svg:active,
|
||||
.post-entry:active,
|
||||
.top-link,
|
||||
#searchResults .focus,
|
||||
|
63
assets/css/includes/scroll-bar.css
Normal file
63
assets/css/includes/scroll-bar.css
Normal file
@ -0,0 +1,63 @@
|
||||
/* from reset */
|
||||
::-webkit-scrollbar-track {
|
||||
background: 0 0;
|
||||
}
|
||||
|
||||
.list:not(.dark)::-webkit-scrollbar-track {
|
||||
background: var(--code-bg);
|
||||
}
|
||||
|
||||
::-webkit-scrollbar-thumb {
|
||||
background: var(--tertiary);
|
||||
border: 5px solid var(--theme);
|
||||
border-radius: var(--radius);
|
||||
}
|
||||
|
||||
.list:not(.dark)::-webkit-scrollbar-thumb {
|
||||
border: 5px solid var(--code-bg);
|
||||
}
|
||||
|
||||
::-webkit-scrollbar-thumb:hover {
|
||||
background: var(--secondary);
|
||||
}
|
||||
|
||||
::-webkit-scrollbar:not(.highlighttable, .highlight table, .gist .highlight) {
|
||||
background: var(--theme);
|
||||
}
|
||||
|
||||
/* from post-single */
|
||||
.post-content .highlighttable td .highlight pre code::-webkit-scrollbar {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.post-content :not(table) ::-webkit-scrollbar-thumb {
|
||||
border: 2px solid var(--hljs-bg);
|
||||
background: rgb(113, 113, 117);
|
||||
}
|
||||
|
||||
.post-content :not(table) ::-webkit-scrollbar-thumb:hover {
|
||||
background: rgb(163, 163, 165);
|
||||
}
|
||||
|
||||
.gist table::-webkit-scrollbar-thumb {
|
||||
border: 2px solid rgb(255, 255, 255);
|
||||
background: rgb(173, 173, 173);
|
||||
}
|
||||
|
||||
.gist table::-webkit-scrollbar-thumb:hover {
|
||||
background: rgb(112, 112, 112);
|
||||
}
|
||||
|
||||
.post-content table::-webkit-scrollbar-thumb {
|
||||
border-width: 2px;
|
||||
}
|
||||
|
||||
/* from zmedia */
|
||||
@media screen and (min-width: 768px) {
|
||||
|
||||
/* reset */
|
||||
::-webkit-scrollbar {
|
||||
width: 19px;
|
||||
height: 11px;
|
||||
}
|
||||
}
|
@ -1,21 +1,21 @@
|
||||
import * as params from '@params';
|
||||
|
||||
var fuse; // holds our search engine
|
||||
var resList = document.getElementById('searchResults');
|
||||
var sInput = document.getElementById('searchInput');
|
||||
var first, last, current_elem = null
|
||||
var resultsAvailable = false;
|
||||
let fuse; // holds our search engine
|
||||
let resList = document.getElementById('searchResults');
|
||||
let sInput = document.getElementById('searchInput');
|
||||
let first, last, current_elem = null
|
||||
let resultsAvailable = false;
|
||||
|
||||
// load our search index
|
||||
window.onload = function () {
|
||||
var xhr = new XMLHttpRequest();
|
||||
let xhr = new XMLHttpRequest();
|
||||
xhr.onreadystatechange = function () {
|
||||
if (xhr.readyState === 4) {
|
||||
if (xhr.status === 200) {
|
||||
var data = JSON.parse(xhr.responseText);
|
||||
let data = JSON.parse(xhr.responseText);
|
||||
if (data) {
|
||||
// fuse.js options; check fuse.js website for details
|
||||
var options = {
|
||||
let options = {
|
||||
distance: 100,
|
||||
threshold: 0.4,
|
||||
ignoreLocation: true,
|
||||
@ -26,7 +26,21 @@ window.onload = function () {
|
||||
'content'
|
||||
]
|
||||
};
|
||||
if (params.fuseOpts) options = params.fuseOpts;
|
||||
if (params.fuseOpts) {
|
||||
options = {
|
||||
isCaseSensitive: params.fuseOpts.iscasesensitive ?? false,
|
||||
includeScore: params.fuseOpts.includescore ?? false,
|
||||
includeMatches: params.fuseOpts.includematches ?? false,
|
||||
minMatchCharLength: params.fuseOpts.minmatchcharlength ?? 1,
|
||||
shouldSort: params.fuseOpts.shouldsort ?? true,
|
||||
findAllMatches: params.fuseOpts.findallmatches ?? false,
|
||||
keys: params.fuseOpts.keys ?? ['title', 'permalink', 'summary', 'content'],
|
||||
location: params.fuseOpts.location ?? 0,
|
||||
threshold: params.fuseOpts.threshold ?? 0.4,
|
||||
distance: params.fuseOpts.distance ?? 100,
|
||||
ignoreLocation: params.fuseOpts.ignorelocation ?? true
|
||||
}
|
||||
}
|
||||
fuse = new Fuse(data, options); // build the index from the json file
|
||||
}
|
||||
} else {
|
||||
@ -63,7 +77,12 @@ sInput.onkeyup = function (e) {
|
||||
// run a search query (for "term") every time a letter is typed
|
||||
// in the search box
|
||||
if (fuse) {
|
||||
const results = fuse.search(this.value.trim()); // the actual query being run using fuse.js
|
||||
let results;
|
||||
if (params.fuseOpts) {
|
||||
results = fuse.search(this.value.trim(), {limit: params.fuseOpts.limit}); // the actual query being run using fuse.js along with options
|
||||
} else {
|
||||
results = fuse.search(this.value.trim()); // the actual query being run using fuse.js
|
||||
}
|
||||
if (results.length !== 0) {
|
||||
// build our html if result exists
|
||||
let resultSet = ''; // our results bucket
|
||||
@ -92,42 +111,42 @@ sInput.addEventListener('search', function (e) {
|
||||
// kb bindings
|
||||
document.onkeydown = function (e) {
|
||||
let key = e.key;
|
||||
var ae = document.activeElement;
|
||||
let ae = document.activeElement;
|
||||
|
||||
let inbox = document.getElementById("searchbox").contains(ae)
|
||||
|
||||
if (ae === sInput) {
|
||||
var elements = document.getElementsByClassName('focus');
|
||||
let elements = document.getElementsByClassName('focus');
|
||||
while (elements.length > 0) {
|
||||
elements[0].classList.remove('focus');
|
||||
}
|
||||
} else if (current_elem) ae = current_elem;
|
||||
|
||||
if (key === "ArrowDown" && resultsAvailable && inbox) {
|
||||
if (key === "Escape") {
|
||||
reset()
|
||||
} else if (!resultsAvailable || !inbox) {
|
||||
return
|
||||
} else if (key === "ArrowDown") {
|
||||
e.preventDefault();
|
||||
if (ae == sInput) {
|
||||
// if the currently focused element is the search input, focus the <a> of first <li>
|
||||
activeToggle(resList.firstChild.lastChild);
|
||||
} else if (ae.parentElement == last) {
|
||||
} else if (ae.parentElement != last) {
|
||||
// if the currently focused element's parent is last, do nothing
|
||||
} else {
|
||||
// otherwise select the next search result
|
||||
activeToggle(ae.parentElement.nextSibling.lastChild);
|
||||
}
|
||||
} else if (key === "ArrowUp" && resultsAvailable && inbox) {
|
||||
} else if (key === "ArrowUp") {
|
||||
e.preventDefault();
|
||||
if (ae == sInput) {
|
||||
// if the currently focused element is input box, do nothing
|
||||
} else if (ae.parentElement == first) {
|
||||
if (ae.parentElement == first) {
|
||||
// if the currently focused element is first item, go to input box
|
||||
activeToggle(sInput);
|
||||
} else {
|
||||
} else if (ae != sInput) {
|
||||
// if the currently focused element is input box, do nothing
|
||||
// otherwise select the previous search result
|
||||
activeToggle(ae.parentElement.previousSibling.lastChild);
|
||||
}
|
||||
} else if (key === "ArrowRight" && resultsAvailable && inbox) {
|
||||
} else if (key === "ArrowRight") {
|
||||
ae.click(); // click on active link
|
||||
} else if (key === "Escape") {
|
||||
reset()
|
||||
}
|
||||
}
|
||||
|
9
assets/js/fuse.basic.min.js
vendored
Normal file
9
assets/js/fuse.basic.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
6
assets/js/license.js
Normal file
6
assets/js/license.js
Normal file
@ -0,0 +1,6 @@
|
||||
/*
|
||||
PaperMod v7
|
||||
License: MIT https://github.com/adityatelange/hugo-PaperMod/blob/master/LICENSE
|
||||
Copyright (c) 2020 nanxiaobei and adityatelange
|
||||
Copyright (c) 2021-2023 adityatelange
|
||||
*/
|
10
i18n/ar.yaml
10
i18n/ar.yaml
@ -1,8 +1,8 @@
|
||||
- id: prev_page
|
||||
translation: "الصفحة السابقة"
|
||||
translation: "السابق"
|
||||
|
||||
- id: next_page
|
||||
translation: "الصفحة التالية"
|
||||
translation: "التالي"
|
||||
|
||||
- id: read_time
|
||||
translation:
|
||||
@ -20,3 +20,9 @@
|
||||
|
||||
- id: home
|
||||
translation: "الصفحة الرئيسية"
|
||||
|
||||
- id: code_copied
|
||||
translation: "تم النسخ!"
|
||||
|
||||
- id: code_copy
|
||||
translation: "نسخ الكود"
|
||||
|
39
i18n/be.yaml
Normal file
39
i18n/be.yaml
Normal file
@ -0,0 +1,39 @@
|
||||
- id: prev_page
|
||||
translation: "Папярэдняя"
|
||||
|
||||
- id: next_page
|
||||
translation: "Наступная"
|
||||
|
||||
- id: read_time
|
||||
translation:
|
||||
zero: "0 хвілін"
|
||||
one: "1 хвіліна"
|
||||
few: "{{ .Count }} хвіліны"
|
||||
many: "{{ .Count }} хвілін"
|
||||
other: "{{ .Count }} хвілін"
|
||||
|
||||
- id: words
|
||||
translation:
|
||||
zero: "няма слоў"
|
||||
one: "1 слова"
|
||||
few: "{{ .Count }} слова"
|
||||
many: "{{ .Count }} слоў"
|
||||
other: "{{ .Count }} слова"
|
||||
|
||||
- id: toc
|
||||
translation: "Змест"
|
||||
|
||||
- id: translations
|
||||
translation: "Пераклады"
|
||||
|
||||
- id: home
|
||||
translation: "Галоўная"
|
||||
|
||||
- id: edit_post
|
||||
translation: "Рэдагаваць"
|
||||
|
||||
- id: code_copy
|
||||
translation: "капіяваць"
|
||||
|
||||
- id: code_copied
|
||||
translation: "скапіявана!"
|
33
i18n/bn.yaml
Normal file
33
i18n/bn.yaml
Normal file
@ -0,0 +1,33 @@
|
||||
- id: prev_page
|
||||
translation: "পূর্ববর্তী"
|
||||
|
||||
- id: next_page
|
||||
translation: "পরবর্তী"
|
||||
|
||||
- id: read_time
|
||||
translation:
|
||||
one : "১ মিনিট"
|
||||
other: "{{ .Count }} মিনিট"
|
||||
|
||||
- id: words
|
||||
translation:
|
||||
one : "১ টি শব্দ"
|
||||
other: "{{ .Count }} টি শব্দ"
|
||||
|
||||
- id: toc
|
||||
translation: "সূচিপত্র"
|
||||
|
||||
- id: translations
|
||||
translation: "অনুবাদসমূহ"
|
||||
|
||||
- id: home
|
||||
translation: "হোম"
|
||||
|
||||
- id: edit_post
|
||||
translation: "সম্পাদনা করুন"
|
||||
|
||||
- id: code_copy
|
||||
translation: "কপি করুন"
|
||||
|
||||
- id: code_copied
|
||||
translation: "কপি হয়েছে!"
|
25
i18n/ckb.yaml
Normal file
25
i18n/ckb.yaml
Normal file
@ -0,0 +1,25 @@
|
||||
- id: prev_page
|
||||
translation: "پەڕەی پێشتر"
|
||||
|
||||
- id: next_page
|
||||
translation: "پەڕەی دواتر"
|
||||
|
||||
- id: read_time
|
||||
translation:
|
||||
one : "1 خولەک"
|
||||
other: "{{ .Count }} خولەک"
|
||||
|
||||
- id: toc
|
||||
translation: "پێڕست"
|
||||
|
||||
- id: translations
|
||||
translation: "وەرگێڕانەکان"
|
||||
|
||||
- id: home
|
||||
translation: "ماڵەوە"
|
||||
|
||||
- id: code_copy
|
||||
translation: "لەبەری بگرەوە"
|
||||
|
||||
- id: code_copied
|
||||
translation: "لەبەر گیرایەوە!"
|
28
i18n/da.yaml
Normal file
28
i18n/da.yaml
Normal file
@ -0,0 +1,28 @@
|
||||
- id: prev_page
|
||||
translation: "Forrige Side"
|
||||
|
||||
- id: next_page
|
||||
translation: "Næste Side"
|
||||
|
||||
- id: read_time
|
||||
translation:
|
||||
one: "1 min"
|
||||
other: "{{ .Count }} min"
|
||||
|
||||
- id: toc
|
||||
translation: "Indholdsfortegnelse"
|
||||
|
||||
- id: translations
|
||||
translation: "Oversættelser"
|
||||
|
||||
- id: home
|
||||
translation: "Start"
|
||||
|
||||
- id: edit_post
|
||||
translation: "Rediger"
|
||||
|
||||
- id: code_copy
|
||||
translation: "kopier"
|
||||
|
||||
- id: code_copied
|
||||
translation: "kopieret!"
|
22
i18n/de.yaml
22
i18n/de.yaml
@ -1,13 +1,18 @@
|
||||
- id: prev_page
|
||||
translation: "Vorherige Seite"
|
||||
translation: "Vorherige"
|
||||
|
||||
- id: next_page
|
||||
translation: "Nächste Seite"
|
||||
translation: "Nächste"
|
||||
|
||||
- id: read_time
|
||||
translation:
|
||||
one: "1 min"
|
||||
other: "{{ .Count }} min"
|
||||
one: "1 Minute"
|
||||
other: "{{ .Count }} Minuten"
|
||||
|
||||
- id: words
|
||||
translation:
|
||||
one : "Wort"
|
||||
other: "{{ .Count }} Wörter"
|
||||
|
||||
- id: toc
|
||||
translation: "Inhaltsverzeichnis"
|
||||
@ -15,5 +20,14 @@
|
||||
- id: translations
|
||||
translation: "Übersetzungen"
|
||||
|
||||
- id: home
|
||||
translation: "Home"
|
||||
|
||||
- id: edit_post
|
||||
translation: "Bearbeiten"
|
||||
|
||||
- id: code_copy
|
||||
translation: "Kopieren"
|
||||
|
||||
- id: code_copied
|
||||
translation: "Kopiert!"
|
||||
|
33
i18n/el.yaml
Normal file
33
i18n/el.yaml
Normal file
@ -0,0 +1,33 @@
|
||||
- id: prev_page
|
||||
translation: "Προηγούμενο"
|
||||
|
||||
- id: next_page
|
||||
translation: "Επόμενο"
|
||||
|
||||
- id: read_time
|
||||
translation:
|
||||
one: "1 λεπτό"
|
||||
other: "{{ .Count }} λεπτά"
|
||||
|
||||
- id: words
|
||||
translation:
|
||||
one: "λέξη"
|
||||
other: "{{ .Count }} λέξεις"
|
||||
|
||||
- id: toc
|
||||
translation: "Πίνακας Περιεχομένων"
|
||||
|
||||
- id: translations
|
||||
translation: "Μεταφράσεις"
|
||||
|
||||
- id: home
|
||||
translation: "Αρχική"
|
||||
|
||||
- id: edit_post
|
||||
translation: "Επεξεργασία"
|
||||
|
||||
- id: code_copy
|
||||
translation: "αντιγραφή"
|
||||
|
||||
- id: code_copied
|
||||
translation: "αντιγράφηκε!"
|
12
i18n/en.yaml
12
i18n/en.yaml
@ -1,14 +1,19 @@
|
||||
- id: prev_page
|
||||
translation: "Prev Page"
|
||||
translation: "Prev"
|
||||
|
||||
- id: next_page
|
||||
translation: "Next Page"
|
||||
translation: "Next"
|
||||
|
||||
- id: read_time
|
||||
translation:
|
||||
one : "1 min"
|
||||
other: "{{ .Count }} min"
|
||||
|
||||
- id: words
|
||||
translation:
|
||||
one : "word"
|
||||
other: "{{ .Count }} words"
|
||||
|
||||
- id: toc
|
||||
translation: "Table of Contents"
|
||||
|
||||
@ -18,6 +23,9 @@
|
||||
- id: home
|
||||
translation: "Home"
|
||||
|
||||
- id: edit_post
|
||||
translation: "Edit"
|
||||
|
||||
- id: code_copy
|
||||
translation: "copy"
|
||||
|
||||
|
21
i18n/es.yaml
21
i18n/es.yaml
@ -1,16 +1,33 @@
|
||||
- id: prev_page
|
||||
translation: "Página anterior"
|
||||
translation: "Anterior"
|
||||
|
||||
- id: next_page
|
||||
translation: "Página siguiente"
|
||||
translation: "Siguiente"
|
||||
|
||||
- id: read_time
|
||||
translation:
|
||||
one : "1 min"
|
||||
other: "{{ .Count }} min"
|
||||
|
||||
- id: words
|
||||
translation:
|
||||
one : "palabra"
|
||||
other: "{{ .Count }} palabras"
|
||||
|
||||
- id: toc
|
||||
translation: "Tabla de Contenidos"
|
||||
|
||||
- id: translations
|
||||
translation: "Traducciones"
|
||||
|
||||
- id: home
|
||||
translation: "Inicio"
|
||||
|
||||
- id: edit_post
|
||||
translation: "Editar"
|
||||
|
||||
- id: code_copy
|
||||
translation: "copiar"
|
||||
|
||||
- id: code_copied
|
||||
translation: "¡copiado!"
|
||||
|
20
i18n/fa.yaml
20
i18n/fa.yaml
@ -1,16 +1,28 @@
|
||||
- id: prev_page
|
||||
translation: "صفحهٔ قبل"
|
||||
translation: "صفحه قبلی"
|
||||
|
||||
- id: next_page
|
||||
translation: "صفحهٔ بعد"
|
||||
translation: "صفحه بعدی"
|
||||
|
||||
- id: read_time
|
||||
translation:
|
||||
one : "1 دقیقه"
|
||||
one: "۱ دقیقه"
|
||||
other: "{{ .Count }} دقیقه"
|
||||
|
||||
- id: toc
|
||||
translation: "فهرست مطالب"
|
||||
|
||||
- id: translations
|
||||
translation: "ترجمهها"
|
||||
translation: "ترجمه ها"
|
||||
|
||||
- id: home
|
||||
translation: "خانه"
|
||||
|
||||
- id: edit_post
|
||||
translation: "ویرایش"
|
||||
|
||||
- id: code_copy
|
||||
translation: "کپی"
|
||||
|
||||
- id: code_copied
|
||||
translation: "کپی شد!"
|
15
i18n/fr.yaml
15
i18n/fr.yaml
@ -1,16 +1,21 @@
|
||||
- id: prev_page
|
||||
translation: "Page Précédente"
|
||||
translation: "Précédent"
|
||||
|
||||
- id: next_page
|
||||
translation: "Page Suivante"
|
||||
translation: "Suivant"
|
||||
|
||||
- id: read_time
|
||||
translation:
|
||||
one : "1 min"
|
||||
other: "{{ .Count }} min"
|
||||
|
||||
- id: words
|
||||
translation:
|
||||
one : "mot"
|
||||
other: "{{ .Count }} mots"
|
||||
|
||||
- id: toc
|
||||
translation: "Table des Matières"
|
||||
translation: "Table des matières"
|
||||
|
||||
- id: translations
|
||||
translation: "Traductions"
|
||||
@ -22,7 +27,7 @@
|
||||
translation: "Modifier"
|
||||
|
||||
- id: code_copy
|
||||
translation: "copier"
|
||||
translation: "Copier"
|
||||
|
||||
- id: code_copied
|
||||
translation: "copié!"
|
||||
translation: "Copié !"
|
||||
|
24
i18n/he.yaml
24
i18n/he.yaml
@ -1,19 +1,33 @@
|
||||
- id: prev_page
|
||||
translation: "לעמוד הקודם"
|
||||
translation: "קודם"
|
||||
|
||||
- id: next_page
|
||||
translation: "לעמוד הבא"
|
||||
translation: "הבא"
|
||||
|
||||
- id: read_time
|
||||
translation:
|
||||
one : "דקה אחת"
|
||||
other: "{{ .Count }} דקות"
|
||||
other: "דקות {{ .Count }}"
|
||||
|
||||
- id: words
|
||||
translation:
|
||||
one : "word"
|
||||
other: "מילים {{ .Count }} "
|
||||
|
||||
- id: toc
|
||||
translation: "תוכן עניינים"
|
||||
translation: "תוכן העניינים"
|
||||
|
||||
- id: translations
|
||||
translation: "תרגומים"
|
||||
|
||||
- id: home
|
||||
translation: "דף בית"
|
||||
translation: "בית"
|
||||
|
||||
- id: edit_post
|
||||
translation: "ערוך"
|
||||
|
||||
- id: code_copy
|
||||
translation: "העתק"
|
||||
|
||||
- id: code_copied
|
||||
translation: "!הועתק"
|
||||
|
@ -1,14 +1,17 @@
|
||||
- id: prev_page
|
||||
translation: "पिछला पृष्ठ"
|
||||
translation: "पिछला"
|
||||
|
||||
- id: next_page
|
||||
translation: "अगला पृष्ठ"
|
||||
translation: "अगला"
|
||||
|
||||
- id: read_time
|
||||
translation:
|
||||
one : "एक मिनट"
|
||||
other: "{{ .Count }} मिनट"
|
||||
|
||||
- id: edit_post
|
||||
translation: "सुधारें"
|
||||
|
||||
- id: toc
|
||||
translation: "विषय - सूची"
|
||||
|
||||
|
33
i18n/hr.yaml
Normal file
33
i18n/hr.yaml
Normal file
@ -0,0 +1,33 @@
|
||||
- id: prev_page
|
||||
translation: "Prethodna stranica"
|
||||
|
||||
- id: next_page
|
||||
translation: "Sljedeća stranica"
|
||||
|
||||
- id: read_time
|
||||
translation:
|
||||
one : "1 minuta"
|
||||
other: "{{ .Count }} minute"
|
||||
|
||||
- id: words
|
||||
translation:
|
||||
one : "riječ"
|
||||
other: "{{ .Count }} riječi"
|
||||
|
||||
- id: toc
|
||||
translation: "Tablica Sadržaja"
|
||||
|
||||
- id: translations
|
||||
translation: "Prijevodi"
|
||||
|
||||
- id: home
|
||||
translation: "Početna stranica"
|
||||
|
||||
- id: edit_post
|
||||
translation: "Promjeni"
|
||||
|
||||
- id: code_copy
|
||||
translation: "kopiraj"
|
||||
|
||||
- id: code_copied
|
||||
translation: "kopirano!"
|
23
i18n/id.yaml
23
i18n/id.yaml
@ -1,16 +1,33 @@
|
||||
- id: prev_page
|
||||
translation: "Halaman Sebelumnya"
|
||||
translation: "Sebelumnya"
|
||||
|
||||
- id: next_page
|
||||
translation: "Halaman Selanjutnya"
|
||||
translation: "Selanjutnya"
|
||||
|
||||
- id: read_time
|
||||
translation:
|
||||
one : "1 menit"
|
||||
other: "{{ .Count }} menit"
|
||||
|
||||
- id: words
|
||||
translation:
|
||||
one : "kata"
|
||||
other: "{{ .Count }} kata"
|
||||
|
||||
- id: toc
|
||||
translation: "Daftar Isi"
|
||||
translation: "Daftar isi"
|
||||
|
||||
- id: translations
|
||||
translation: "Terjemahan"
|
||||
|
||||
- id: home
|
||||
translation: "Beranda"
|
||||
|
||||
- id: edit_post
|
||||
translation: "Sunting"
|
||||
|
||||
- id: code_copy
|
||||
translation: "salin"
|
||||
|
||||
- id: code_copied
|
||||
translation: "disalin!"
|
23
i18n/it.yaml
23
i18n/it.yaml
@ -1,16 +1,33 @@
|
||||
- id: prev_page
|
||||
translation: "Pag Prec"
|
||||
translation: "Precedente"
|
||||
|
||||
- id: next_page
|
||||
translation: "Pag Succ"
|
||||
translation: "Successivo"
|
||||
|
||||
- id: read_time
|
||||
translation:
|
||||
one: "1 minuto"
|
||||
other: "{{ .Count }} minuti"
|
||||
|
||||
- id: words
|
||||
translation:
|
||||
one : "parola"
|
||||
other: "{{ .Count }} parole"
|
||||
|
||||
- id: toc
|
||||
translation: "Tabella dei Contenuti"
|
||||
translation: "Indice contenuti"
|
||||
|
||||
- id: translations
|
||||
translation: "Traduzioni"
|
||||
|
||||
- id: home
|
||||
translation: "Home"
|
||||
|
||||
- id: edit_post
|
||||
translation: "Modifica"
|
||||
|
||||
- id: code_copy
|
||||
translation: "copia"
|
||||
|
||||
- id: code_copied
|
||||
translation: "copiato!"
|
||||
|
21
i18n/ja.yaml
21
i18n/ja.yaml
@ -1,16 +1,33 @@
|
||||
- id: prev_page
|
||||
translation: "前のページ"
|
||||
translation: "前へ"
|
||||
|
||||
- id: next_page
|
||||
translation: "次のページ"
|
||||
translation: "次へ"
|
||||
|
||||
- id: read_time
|
||||
translation:
|
||||
one : "1 分"
|
||||
other: "{{ .Count }} 分"
|
||||
|
||||
- id: words
|
||||
translation:
|
||||
one: "文字"
|
||||
other: "{{ .Count }} 文字"
|
||||
|
||||
- id: toc
|
||||
translation: "目次"
|
||||
|
||||
- id: translations
|
||||
translation: "言語"
|
||||
|
||||
- id: home
|
||||
translation: "ホーム"
|
||||
|
||||
- id: edit_post
|
||||
translation: "編集"
|
||||
|
||||
- id: code_copy
|
||||
translation: "コピー"
|
||||
|
||||
- id: code_copied
|
||||
translation: "コピーされました!"
|
||||
|
28
i18n/ko.yaml
28
i18n/ko.yaml
@ -3,3 +3,31 @@
|
||||
|
||||
- id: next_page
|
||||
translation: "다음 페이지"
|
||||
|
||||
- id: read_time
|
||||
translation:
|
||||
one : "1 분"
|
||||
other: "{{ .Count }} 분"
|
||||
|
||||
- id: words
|
||||
translation:
|
||||
one : "단어"
|
||||
other: "{{ .Count }} 단어"
|
||||
|
||||
- id: toc
|
||||
translation: "목차"
|
||||
|
||||
- id: translations
|
||||
translation: "번역"
|
||||
|
||||
- id: home
|
||||
translation: "홈"
|
||||
|
||||
- id: edit_post
|
||||
translation: "편집"
|
||||
|
||||
- id: code_copy
|
||||
translation: "복사"
|
||||
|
||||
- id: code_copied
|
||||
translation: "복사 완료!"
|
||||
|
25
i18n/ku.yaml
Normal file
25
i18n/ku.yaml
Normal file
@ -0,0 +1,25 @@
|
||||
- id: prev_page
|
||||
translation: "Rûpela Paş"
|
||||
|
||||
- id: next_page
|
||||
translation: "Rûpela Pêş"
|
||||
|
||||
- id: read_time
|
||||
translation:
|
||||
one : "1 xulek"
|
||||
other: "{{ .Count }} xulek"
|
||||
|
||||
- id: toc
|
||||
translation: "Pêrist"
|
||||
|
||||
- id: translations
|
||||
translation: "Wergeran"
|
||||
|
||||
- id: home
|
||||
translation: "Xanî"
|
||||
|
||||
- id: code_copy
|
||||
translation: "Jê bigire"
|
||||
|
||||
- id: code_copied
|
||||
translation: "Hat jêgirtin!"
|
28
i18n/ms.yaml
Normal file
28
i18n/ms.yaml
Normal file
@ -0,0 +1,28 @@
|
||||
- id: prev_page
|
||||
translation: "Halaman Sebelumnya"
|
||||
|
||||
- id: next_page
|
||||
translation: "Halaman Seterusnya"
|
||||
|
||||
- id: read_time
|
||||
translation:
|
||||
one: "1 minit"
|
||||
other: "{{ .Count }} minit"
|
||||
|
||||
- id: toc
|
||||
translation: "Isi Kandungan"
|
||||
|
||||
- id: translations
|
||||
translation: "Terjemahan"
|
||||
|
||||
- id: home
|
||||
translation: "Home"
|
||||
|
||||
- id: edit_post
|
||||
translation: "Sunting"
|
||||
|
||||
- id: code_copy
|
||||
translation: "Salin"
|
||||
|
||||
- id: code_copied
|
||||
translation: "Disalin!"
|
33
i18n/nl.yaml
Normal file
33
i18n/nl.yaml
Normal file
@ -0,0 +1,33 @@
|
||||
- id: prev_page
|
||||
translation: "Vorige"
|
||||
|
||||
- id: next_page
|
||||
translation: "Volgende"
|
||||
|
||||
- id: read_time
|
||||
translation:
|
||||
one: "1 min"
|
||||
other: "{{ .Count }} min"
|
||||
|
||||
- id: words
|
||||
translation:
|
||||
one : "woord"
|
||||
other: "{{ .Count }} woorden"
|
||||
|
||||
- id: toc
|
||||
translation: "Inhoudsopgave"
|
||||
|
||||
- id: translations
|
||||
translation: "Vertalingen"
|
||||
|
||||
- id: home
|
||||
translation: "Startpagina"
|
||||
|
||||
- id: edit_post
|
||||
translation: "Bewerk"
|
||||
|
||||
- id: code_copy
|
||||
translation: "kopieer"
|
||||
|
||||
- id: code_copied
|
||||
translation: "gekopieerd!"
|
33
i18n/no.yaml
Normal file
33
i18n/no.yaml
Normal file
@ -0,0 +1,33 @@
|
||||
- id: prev_page
|
||||
translation: "Forrige Side"
|
||||
|
||||
- id: next_page
|
||||
translation: "Neste Side"
|
||||
|
||||
- id: read_time
|
||||
translation:
|
||||
one: "1 min"
|
||||
other: "{{ .Count }} min"
|
||||
|
||||
- id: words
|
||||
translation:
|
||||
one: "ord"
|
||||
other: "{{ .Count }} ord"
|
||||
|
||||
- id: toc
|
||||
translation: "Innholdsfortegnelse"
|
||||
|
||||
- id: translations
|
||||
translation: "Oversettelser"
|
||||
|
||||
- id: home
|
||||
translation: "Hjem"
|
||||
|
||||
- id: edit_post
|
||||
translation: "Rediger"
|
||||
|
||||
- id: code_copy
|
||||
translation: "Kopier"
|
||||
|
||||
- id: code_copied
|
||||
translation: "Kopiert!"
|
@ -1,14 +1,19 @@
|
||||
- id: prev_page
|
||||
translation: "Poprzednia strona"
|
||||
translation: "Poprzednia"
|
||||
|
||||
- id: next_page
|
||||
translation: "Następna strona"
|
||||
translation: "Następna"
|
||||
|
||||
- id: read_time
|
||||
translation:
|
||||
one: "1 min"
|
||||
other: "{{ .Count }} min"
|
||||
|
||||
- id: words
|
||||
translation:
|
||||
one : "słowo"
|
||||
other: "{{ .Count }} słów"
|
||||
|
||||
- id: toc
|
||||
translation: "Spis treści"
|
||||
|
||||
|
17
i18n/pt.yaml
17
i18n/pt.yaml
@ -9,8 +9,25 @@
|
||||
one: "1 minuto"
|
||||
other: "{{ .Count }} minutos"
|
||||
|
||||
- id: words
|
||||
translation:
|
||||
one : "palavra"
|
||||
other: "{{ .Count }} palavras"
|
||||
|
||||
- id: toc
|
||||
translation: "Conteúdo"
|
||||
|
||||
- id: translations
|
||||
translation: "Traduções"
|
||||
|
||||
- id: home
|
||||
translation: "Início"
|
||||
|
||||
- id: edit_post
|
||||
translation: "Editar"
|
||||
|
||||
- id: code_copy
|
||||
translation: "copiar"
|
||||
|
||||
- id: code_copied
|
||||
translation: "copiado!"
|
||||
|
18
i18n/ru.yaml
18
i18n/ru.yaml
@ -5,7 +5,20 @@
|
||||
translation: "Следующая"
|
||||
|
||||
- id: read_time
|
||||
translation: "{{ .Count }} мин"
|
||||
translation:
|
||||
zero: "0 минут"
|
||||
one: "1 минута"
|
||||
few: "{{ .Count }} минуты"
|
||||
many: "{{ .Count }} минут"
|
||||
other: "{{ .Count }} минута"
|
||||
|
||||
- id: words
|
||||
translation:
|
||||
zero: "0 слов"
|
||||
one: "1 слово"
|
||||
few: "{{ .Count }} слова"
|
||||
many: "{{ .Count }} слов"
|
||||
other: "{{ .Count }} слово"
|
||||
|
||||
- id: toc
|
||||
translation: "Оглавление"
|
||||
@ -16,6 +29,9 @@
|
||||
- id: home
|
||||
translation: "Главная"
|
||||
|
||||
- id: edit_post
|
||||
translation: "Редактировать"
|
||||
|
||||
- id: code_copy
|
||||
translation: "копировать"
|
||||
|
||||
|
28
i18n/sv.yaml
Normal file
28
i18n/sv.yaml
Normal file
@ -0,0 +1,28 @@
|
||||
- id: prev_page
|
||||
translation: "Förra Sidan"
|
||||
|
||||
- id: next_page
|
||||
translation: "Nästa Sida"
|
||||
|
||||
- id: read_time
|
||||
translation:
|
||||
one: "1 min"
|
||||
other: "{{ .Count }} min"
|
||||
|
||||
- id: toc
|
||||
translation: "Innehållsförteckning"
|
||||
|
||||
- id: translations
|
||||
translation: "Översättningar"
|
||||
|
||||
- id: home
|
||||
translation: "Hem"
|
||||
|
||||
- id: edit_post
|
||||
translation: "Redigera"
|
||||
|
||||
- id: code_copy
|
||||
translation: "kopiera"
|
||||
|
||||
- id: code_copied
|
||||
translation: "kopierad!"
|
33
i18n/sw.yaml
Normal file
33
i18n/sw.yaml
Normal file
@ -0,0 +1,33 @@
|
||||
- id: prev_page
|
||||
translation: "Uliopita"
|
||||
|
||||
- id: next_page
|
||||
translation: "Ujao"
|
||||
|
||||
- id: read_time
|
||||
translation:
|
||||
one : "dakika 1"
|
||||
other: "dakika {{ .Count }}"
|
||||
|
||||
- id: words
|
||||
translation:
|
||||
one : "neno"
|
||||
other: "maneno {{ .Count }}"
|
||||
|
||||
- id: toc
|
||||
translation: "Jedwali la Yaliyomo"
|
||||
|
||||
- id: translations
|
||||
translation: "Tafsiri"
|
||||
|
||||
- id: home
|
||||
translation: "Mwanzo"
|
||||
|
||||
- id: edit_post
|
||||
translation: "Hariri"
|
||||
|
||||
- id: code_copy
|
||||
translation: "nakili"
|
||||
|
||||
- id: code_copied
|
||||
translation: "nakiliwa!"
|
33
i18n/th.yaml
Normal file
33
i18n/th.yaml
Normal file
@ -0,0 +1,33 @@
|
||||
- id: prev_page
|
||||
translation: "ก่อนหน้า"
|
||||
|
||||
- id: next_page
|
||||
translation: "ถัดไป"
|
||||
|
||||
- id: read_time
|
||||
translation:
|
||||
one : "1 นาที"
|
||||
other: "{{ .Count }} นาที"
|
||||
|
||||
- id: words
|
||||
translation:
|
||||
one : "คำ"
|
||||
other: "{{ .Count }} คำ"
|
||||
|
||||
- id: toc
|
||||
translation: "สารบัญ"
|
||||
|
||||
- id: translations
|
||||
translation: "การแปล"
|
||||
|
||||
- id: home
|
||||
translation: "หน้าหลัก"
|
||||
|
||||
- id: edit_post
|
||||
translation: "แก้ไข"
|
||||
|
||||
- id: code_copy
|
||||
translation: "คัดลอก"
|
||||
|
||||
- id: code_copied
|
||||
translation: "คัดลอกแล้ว!"
|
12
i18n/tr.yaml
12
i18n/tr.yaml
@ -1,14 +1,19 @@
|
||||
- id: prev_page
|
||||
translation: "Önceki Sayfa"
|
||||
translation: "Önceki"
|
||||
|
||||
- id: next_page
|
||||
translation: "Sonraki Sayfa"
|
||||
translation: "Sonraki"
|
||||
|
||||
- id: read_time
|
||||
translation:
|
||||
one : "1 dk"
|
||||
other: "{{ .Count }} dk"
|
||||
|
||||
- id: words
|
||||
translation:
|
||||
one : "kelime"
|
||||
other: "{{ .Count }} kelime"
|
||||
|
||||
- id: toc
|
||||
translation: "İçindekiler"
|
||||
|
||||
@ -18,6 +23,9 @@
|
||||
- id: home
|
||||
translation: "Anasayfa"
|
||||
|
||||
- id: edit_post
|
||||
translation: "Düzenle"
|
||||
|
||||
- id: code_copy
|
||||
translation: "Kopyala"
|
||||
|
||||
|
10
i18n/vi.yaml
10
i18n/vi.yaml
@ -6,9 +6,14 @@
|
||||
|
||||
- id: read_time
|
||||
translation:
|
||||
one : "1 phút"
|
||||
one: "1 phút"
|
||||
other: "{{ .Count }} phút"
|
||||
|
||||
- id: words
|
||||
translation:
|
||||
one: "từ"
|
||||
other: "{{ .Count }} từ"
|
||||
|
||||
- id: toc
|
||||
translation: "Mục lục"
|
||||
|
||||
@ -18,6 +23,9 @@
|
||||
- id: home
|
||||
translation: "Trang chủ"
|
||||
|
||||
- id: edit_post
|
||||
translation: "Chỉnh sửa"
|
||||
|
||||
- id: code_copy
|
||||
translation: "Sao chép"
|
||||
|
||||
|
33
i18n/zh-tw.yaml
Normal file
33
i18n/zh-tw.yaml
Normal file
@ -0,0 +1,33 @@
|
||||
- id: prev_page
|
||||
translation: "上一頁"
|
||||
|
||||
- id: next_page
|
||||
translation: "下一頁"
|
||||
|
||||
- id: read_time
|
||||
translation:
|
||||
one : "1 分鐘"
|
||||
other: "{{ .Count }} 分鐘"
|
||||
|
||||
- id: words
|
||||
translation:
|
||||
one: "字"
|
||||
other: "{{ .Count }} 字"
|
||||
|
||||
- id: toc
|
||||
translation: "目錄"
|
||||
|
||||
- id: translations
|
||||
translation: "語言"
|
||||
|
||||
- id: home
|
||||
translation: "首頁"
|
||||
|
||||
- id: edit_post
|
||||
translation: "編輯"
|
||||
|
||||
- id: code_copy
|
||||
translation: "複製"
|
||||
|
||||
- id: code_copied
|
||||
translation: "已複製!"
|
17
i18n/zh.yaml
17
i18n/zh.yaml
@ -9,8 +9,25 @@
|
||||
one : "1 分钟"
|
||||
other: "{{ .Count }} 分钟"
|
||||
|
||||
- id: words
|
||||
translation:
|
||||
one: "字"
|
||||
other: "{{ .Count }} 字"
|
||||
|
||||
- id: toc
|
||||
translation: "目录"
|
||||
|
||||
- id: translations
|
||||
translation: "语言"
|
||||
|
||||
- id: home
|
||||
translation: "主页"
|
||||
|
||||
- id: edit_post
|
||||
translation: "编辑"
|
||||
|
||||
- id: code_copy
|
||||
translation: "复制"
|
||||
|
||||
- id: code_copied
|
||||
translation: "已复制!"
|
||||
|
@ -1,7 +1,25 @@
|
||||
{{- define "main" }}
|
||||
|
||||
<header class="page-header">
|
||||
<h1>{{ .Title }}</h1>
|
||||
<h1>
|
||||
{{ .Title }}
|
||||
{{- if (.Param "ShowRssButtonInSectionTermList") }}
|
||||
{{- $rss := (.OutputFormats.Get "rss") }}
|
||||
{{- if (eq .Kind `page`) }}
|
||||
{{- $rss = (.Parent.OutputFormats.Get "rss") }}
|
||||
{{- end }}
|
||||
{{- with $rss }}
|
||||
<a href="{{ .RelPermalink }}" title="RSS" aria-label="RSS">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
|
||||
stroke-linecap="round" stroke-linejoin="round" height="23">
|
||||
<path d="M4 11a9 9 0 0 1 9 9" />
|
||||
<path d="M4 4a16 16 0 0 1 16 16" />
|
||||
<circle cx="5" cy="19" r="1" />
|
||||
</svg>
|
||||
</a>
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
</h1>
|
||||
{{- if .Description }}
|
||||
<div class="post-description">
|
||||
{{ .Description }}
|
||||
@ -10,6 +28,11 @@
|
||||
</header>
|
||||
|
||||
{{- $pages := where site.RegularPages "Type" "in" site.Params.mainSections }}
|
||||
|
||||
{{- if site.Params.ShowAllPagesInArchive }}
|
||||
{{- $pages = site.RegularPages }}
|
||||
{{- end }}
|
||||
|
||||
{{- range $pages.GroupByPublishDate "2006" }}
|
||||
{{- if ne .Key "0001" }}
|
||||
<div class="archive-year">
|
||||
@ -25,6 +48,7 @@
|
||||
<div class="archive-entry">
|
||||
<h3 class="archive-entry-title">
|
||||
{{- .Title | markdownify }}
|
||||
{{- if .Draft }}<sup><span class="entry-isdraft"> [draft]</span></sup>{{- end }}
|
||||
</h3>
|
||||
<div class="archive-meta">
|
||||
{{- partial "post_meta.html" . -}}
|
||||
|
@ -1,5 +1,9 @@
|
||||
{{- if lt hugo.Version "0.97.1" }}
|
||||
{{- errorf "=> hugo v0.97.1 or greater is required for hugo-PaperMod to build " }}
|
||||
{{- end -}}
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="{{ .Site.Language }}" dir="{{ .Language.LanguageDirection | default "auto" }}">
|
||||
<html lang="{{ site.Language }}" dir="{{ .Language.LanguageDirection | default "auto" }}">
|
||||
|
||||
<head>
|
||||
{{- partial "head.html" . }}
|
||||
@ -9,7 +13,7 @@
|
||||
{{- if (or (ne .Kind `page` ) (eq .Layout `archives`) (eq .Layout `search`)) -}}
|
||||
{{- print "list" -}}
|
||||
{{- end -}}
|
||||
{{- if eq $.Site.Params.defaultTheme `dark` -}}
|
||||
{{- if eq site.Params.defaultTheme `dark` -}}
|
||||
{{- print " dark" }}
|
||||
{{- end -}}
|
||||
" id="top">
|
||||
@ -17,7 +21,7 @@
|
||||
<main class="main">
|
||||
{{- block "main" . }}{{ end }}
|
||||
</main>
|
||||
{{ partialCached "footer.html" . .Layout .Kind -}}
|
||||
{{ partialCached "footer.html" . .Layout .Kind (.Param "hideFooter") (.Param "ShowCodeCopyButtons") -}}
|
||||
</body>
|
||||
|
||||
</html>
|
||||
|
@ -1,5 +1,5 @@
|
||||
{{- $.Scratch.Add "index" slice -}}
|
||||
{{- range .Site.RegularPages -}}
|
||||
{{- range site.RegularPages -}}
|
||||
{{- if and (not .Params.searchHidden) (ne .Layout `archives`) (ne .Layout `search`) }}
|
||||
{{- $.Scratch.Add "index" (dict "title" .Title "content" .Plain "permalink" .Permalink "summary" .Summary) -}}
|
||||
{{- end }}
|
||||
|
@ -1,30 +1,53 @@
|
||||
{{- define "main" }}
|
||||
|
||||
{{- if (and .Site.Params.profileMode.enabled .IsHome) }}
|
||||
{{- if (and site.Params.profileMode.enabled .IsHome) }}
|
||||
{{- partial "index_profile.html" . }}
|
||||
{{- else }} {{/* if not profileMode */}}
|
||||
|
||||
{{- if not .IsHome | and .Title }}
|
||||
<header class="page-header">
|
||||
{{- partial "breadcrumbs.html" . }}
|
||||
<h1>{{ .Title }}</h1>
|
||||
<h1>
|
||||
{{ .Title }}
|
||||
{{- if and (or (eq .Kind `term`) (eq .Kind `section`)) (.Param "ShowRssButtonInSectionTermList") }}
|
||||
{{- with .OutputFormats.Get "rss" }}
|
||||
<a href="{{ .RelPermalink }}" title="RSS" aria-label="RSS">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
|
||||
stroke-linecap="round" stroke-linejoin="round" height="23">
|
||||
<path d="M4 11a9 9 0 0 1 9 9" />
|
||||
<path d="M4 4a16 16 0 0 1 16 16" />
|
||||
<circle cx="5" cy="19" r="1" />
|
||||
</svg>
|
||||
</a>
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
</h1>
|
||||
{{- if .Description }}
|
||||
<div class="post-description">
|
||||
{{ .Description }}
|
||||
{{ .Description | markdownify }}
|
||||
</div>
|
||||
{{- end }}
|
||||
</header>
|
||||
{{- end }}
|
||||
|
||||
{{- if .Content }}
|
||||
<div class="post-content">
|
||||
{{- if not (.Param "disableAnchoredHeadings") }}
|
||||
{{- partial "anchored_headings.html" .Content -}}
|
||||
{{- else }}{{ .Content }}{{ end }}
|
||||
</div>
|
||||
{{- end }}
|
||||
|
||||
{{- $pages := union .RegularPages .Sections }}
|
||||
|
||||
{{- if .IsHome }}
|
||||
{{- $pages = where site.RegularPages "Type" "in" site.Params.mainSections }}
|
||||
{{- $pages = where $pages "Params.hiddenInHomeList" "!=" "true" }}
|
||||
{{- end }}
|
||||
|
||||
{{- $paginator := .Paginate $pages }}
|
||||
|
||||
{{- if and .IsHome .Site.Params.homeInfoParams (eq $paginator.PageNumber 1) }}
|
||||
{{- if and .IsHome site.Params.homeInfoParams (eq $paginator.PageNumber 1) }}
|
||||
{{- partial "home_info.html" . }}
|
||||
{{- end }}
|
||||
|
||||
@ -33,7 +56,7 @@
|
||||
|
||||
{{- $class := "post-entry" }}
|
||||
|
||||
{{- $user_preferred := or .Site.Params.disableSpecial1stPost .Site.Params.homeInfoParams }}
|
||||
{{- $user_preferred := or site.Params.disableSpecial1stPost site.Params.homeInfoParams }}
|
||||
{{- if (and $.IsHome (eq $paginator.PageNumber 1) (eq $index 0) (not $user_preferred)) }}
|
||||
{{- $class = "first-entry" }}
|
||||
{{- else if $term }}
|
||||
@ -41,18 +64,18 @@
|
||||
{{- end }}
|
||||
|
||||
<article class="{{ $class }}">
|
||||
{{- $isHidden := (.Site.Params.cover.hidden | default .Site.Params.cover.hiddenInList) }}
|
||||
{{- $isHidden := (site.Params.cover.hidden | default site.Params.cover.hiddenInList) }}
|
||||
{{- partial "cover.html" (dict "cxt" . "IsHome" true "isHidden" $isHidden) }}
|
||||
<header class="entry-header">
|
||||
<h2>
|
||||
{{- .Title }}
|
||||
{{- if .Draft }}<div class="entry-isdraft"><sup> [draft]</sup></div>{{ end -}}
|
||||
{{- if .Draft }}<sup><span class="entry-isdraft"> [draft]</span></sup>{{- end }}
|
||||
</h2>
|
||||
</header>
|
||||
{{- if (ne (.Param "hideSummary") true) }}
|
||||
<section class="entry-content">
|
||||
<div class="entry-content">
|
||||
<p>{{ .Summary | plainify | htmlUnescape }}{{ if .Truncated }}...{{ end }}</p>
|
||||
</section>
|
||||
</div>
|
||||
{{- end }}
|
||||
{{- if not (.Param "hideMeta") }}
|
||||
<footer class="entry-footer">
|
||||
@ -67,10 +90,20 @@
|
||||
<footer class="page-footer">
|
||||
<nav class="pagination">
|
||||
{{- if $paginator.HasPrev }}
|
||||
<a class="prev" href="{{ $paginator.Prev.URL | absURL }}">« {{ i18n "prev_page" }}</a>
|
||||
<a class="prev" href="{{ $paginator.Prev.URL | absURL }}">
|
||||
« {{ i18n "prev_page" }}
|
||||
{{- if (.Param "ShowPageNums") }}
|
||||
{{- sub $paginator.PageNumber 1 }}/{{ $paginator.TotalPages }}
|
||||
{{- end }}
|
||||
</a>
|
||||
{{- end }}
|
||||
{{- if $paginator.HasNext }}
|
||||
<a class="next" href="{{ $paginator.Next.URL | absURL }}">{{ i18n "next_page" }} »</a>
|
||||
<a class="next" href="{{ $paginator.Next.URL | absURL }}">
|
||||
{{- i18n "next_page" }}
|
||||
{{- if (.Param "ShowPageNums") }}
|
||||
{{- add 1 $paginator.PageNumber }}/{{ $paginator.TotalPages }}
|
||||
{{- end }} »
|
||||
</a>
|
||||
{{- end }}
|
||||
</nav>
|
||||
</footer>
|
||||
|
@ -1,31 +1,32 @@
|
||||
{{- $pctx := . -}}
|
||||
{{- if .IsHome -}}{{ $pctx = .Site }}{{- end -}}
|
||||
{{- if .IsHome -}}{{ $pctx = site }}{{- end -}}
|
||||
{{- $pages := slice -}}
|
||||
{{- if or $.IsHome $.IsSection -}}
|
||||
{{- $pages = $pctx.RegularPages -}}
|
||||
{{- else -}}
|
||||
{{- $pages = $pctx.Pages -}}
|
||||
{{- end -}}
|
||||
{{- $limit := .Site.Config.Services.RSS.Limit -}}
|
||||
{{- $limit := site.Config.Services.RSS.Limit -}}
|
||||
{{- if ge $limit 1 -}}
|
||||
{{- $pages = $pages | first $limit -}}
|
||||
{{- end -}}
|
||||
{{- printf "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\"?>" | safeHTML }}
|
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
|
||||
<channel>
|
||||
<title>{{ if eq .Title .Site.Title }}{{ .Site.Title }}{{ else }}{{ with .Title }}{{.}} on {{ end }}{{ .Site.Title }}{{ end }}</title>
|
||||
<title>{{ if eq .Title site.Title }}{{ site.Title }}{{ else }}{{ with .Title }}{{.}} on {{ end }}{{ site.Title }}{{ end }}</title>
|
||||
<link>{{ .Permalink }}</link>
|
||||
<description>Recent content {{ if ne .Title .Site.Title }}{{ with .Title }}in {{.}} {{ end }}{{ end }}on {{ .Site.Title }}</description>
|
||||
{{- with $.Site.Params.images }}
|
||||
<description>Recent content {{ if ne .Title site.Title }}{{ with .Title }}in {{.}} {{ end }}{{ end }}on {{ site.Title }}</description>
|
||||
{{- with site.Params.images }}
|
||||
<image>
|
||||
<title>{{ site.Title }}</title>
|
||||
<url>{{ index . 0 | absURL }}</url>
|
||||
<link>{{ index . 0 | absURL }}</link>
|
||||
</image>
|
||||
{{- end }}
|
||||
<generator>Hugo -- gohugo.io</generator>{{ with .Site.LanguageCode }}
|
||||
<language>{{.}}</language>{{end}}{{ with .Site.Author.email }}
|
||||
<managingEditor>{{.}}{{ with $.Site.Author.name }} ({{.}}){{end}}</managingEditor>{{end}}{{ with .Site.Author.email }}
|
||||
<webMaster>{{.}}{{ with $.Site.Author.name }} ({{.}}){{end}}</webMaster>{{end}}{{ with .Site.Copyright }}
|
||||
<generator>Hugo -- gohugo.io</generator>{{ with site.LanguageCode }}
|
||||
<language>{{.}}</language>{{end}}{{ with site.Author.email }}
|
||||
<managingEditor>{{.}}{{ with site.Author.name }} ({{.}}){{end}}</managingEditor>{{end}}{{ with site.Author.email }}
|
||||
<webMaster>{{.}}{{ with site.Author.name }} ({{.}}){{end}}</webMaster>{{end}}{{ with site.Copyright }}
|
||||
<copyright>{{.}}</copyright>{{end}}{{ if not .Date.IsZero }}
|
||||
<lastBuildDate>{{ .Date.Format "Mon, 02 Jan 2006 15:04:05 -0700" | safeHTML }}</lastBuildDate>{{ end }}
|
||||
{{- with .OutputFormats.Get "RSS" -}}
|
||||
@ -37,10 +38,10 @@
|
||||
<title>{{ .Title }}</title>
|
||||
<link>{{ .Permalink }}</link>
|
||||
<pubDate>{{ .Date.Format "Mon, 02 Jan 2006 15:04:05 -0700" | safeHTML }}</pubDate>
|
||||
{{ with .Site.Author.email }}<author>{{.}}{{ with $.Site.Author.name }} ({{.}}){{end}}</author>{{end}}
|
||||
{{ with site.Author.email }}<author>{{.}}{{ with site.Author.name }} ({{.}}){{end}}</author>{{end}}
|
||||
<guid>{{ .Permalink }}</guid>
|
||||
<description>{{ with .Description | html }}{{ . }}{{ else }}{{ .Summary | html }}{{ end -}}</description>
|
||||
{{- if .Site.Params.ShowFullTextinRSS }}
|
||||
{{- if site.Params.ShowFullTextinRSS }}
|
||||
<content:encoded>{{ (printf "<![CDATA[%s]]>" .Content) | safeHTML }}</content:encoded>
|
||||
{{- end }}
|
||||
</item>
|
||||
|
@ -1,7 +1,7 @@
|
||||
{{- define "main" }}
|
||||
|
||||
<header class="page-header">
|
||||
<h1>{{ .Title }}
|
||||
<h1>{{- (printf "%s " .Title ) | htmlUnescape -}}
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="28" height="28" viewBox="0 0 24 24" fill="none"
|
||||
stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
||||
<circle cx="11" cy="11" r="8"></circle>
|
||||
@ -21,7 +21,8 @@
|
||||
</header>
|
||||
|
||||
<div id="searchbox">
|
||||
<input id="searchInput" autofocus placeholder="{{ .Title }} ↵" aria-label="search" type="search">
|
||||
<input id="searchInput" autofocus placeholder="{{ .Params.placeholder | default (printf "%s ↵" .Title) }}"
|
||||
aria-label="search" type="search" autocomplete="off" maxlength="64">
|
||||
<ul id="searchResults" aria-label="search results"></ul>
|
||||
</div>
|
||||
|
||||
|
@ -5,7 +5,7 @@
|
||||
{{ partial "breadcrumbs.html" . }}
|
||||
<h1 class="post-title">
|
||||
{{ .Title }}
|
||||
{{- if .Draft }}<div class="entry-isdraft"><sup> [draft]</sup></div>{{- end }}
|
||||
{{- if .Draft }}<sup><span class="entry-isdraft"> [draft]</span></sup>{{- end }}
|
||||
</h1>
|
||||
{{- if .Description }}
|
||||
<div class="post-description">
|
||||
@ -17,31 +17,35 @@
|
||||
{{- partial "post_meta.html" . -}}
|
||||
{{- partial "translation_list.html" . -}}
|
||||
{{- partial "edit_post.html" . -}}
|
||||
{{- partial "post_canonical.html" . -}}
|
||||
</div>
|
||||
{{- end }}
|
||||
</header>
|
||||
{{- $isHidden := .Params.cover.hidden | default .Site.Params.cover.hiddenInSingle | default .Site.Params.cover.hidden }}
|
||||
{{- $isHidden := .Params.cover.hidden | default site.Params.cover.hiddenInSingle | default site.Params.cover.hidden }}
|
||||
{{- partial "cover.html" (dict "cxt" . "IsHome" false "isHidden" $isHidden) }}
|
||||
{{- if (.Param "ShowToc") }}
|
||||
{{- partial "toc.html" . }}
|
||||
{{- end }}
|
||||
|
||||
{{- if .Content }}
|
||||
<div class="post-content">
|
||||
{{- if not (.Param "disableAnchoredHeadings") }}
|
||||
{{- partial "anchored_headings.html" .Content -}}
|
||||
{{- else }}{{ .Content }}{{ end }}
|
||||
</div>
|
||||
{{- end }}
|
||||
|
||||
<footer class="post-footer">
|
||||
{{- if .Params.tags }}
|
||||
{{- $tags := .Language.Params.Taxonomies.tag | default "tags" }}
|
||||
<ul class="post-tags">
|
||||
{{- range ($.GetTerms "tags") }}
|
||||
{{- range ($.GetTerms $tags) }}
|
||||
<li><a href="{{ .Permalink }}">{{ .LinkTitle }}</a></li>
|
||||
{{- end }}
|
||||
</ul>
|
||||
{{- end }}
|
||||
{{- if (.Param "ShowPostNavLinks") }}
|
||||
{{- partial "post_nav_links.html" . }}
|
||||
{{- end }}
|
||||
{{- if (and .Site.Params.ShowShareButtons (ne .Params.disableShare true)) }}
|
||||
{{- if (and site.Params.ShowShareButtons (ne .Params.disableShare true)) }}
|
||||
{{- partial "share_icons.html" . -}}
|
||||
{{- end }}
|
||||
</footer>
|
||||
|
@ -16,7 +16,7 @@
|
||||
{{- range $key, $value := .Data.Terms.Alphabetical }}
|
||||
{{- $name := .Name }}
|
||||
{{- $count := .Count }}
|
||||
{{- with $.Site.GetPage (printf "/%s/%s" $type $name) }}
|
||||
{{- with site.GetPage (printf "/%s/%s" $type $name) }}
|
||||
<li>
|
||||
<a href="{{ .Permalink }}">{{ .Name }} <sup><strong><sup>{{ $count }}</sup></strong></sup> </a>
|
||||
</li>
|
||||
|
@ -1,5 +1,5 @@
|
||||
{{- if or .Params.author .Site.Params.author }}
|
||||
{{- $author := (.Params.author | default .Site.Params.author) }}
|
||||
{{- if or .Params.author site.Params.author }}
|
||||
{{- $author := (.Params.author | default site.Params.author) }}
|
||||
{{- $author_type := (printf "%T" $author) }}
|
||||
{{- if (or (eq $author_type "[]string") (eq $author_type "[]interface {}")) }}
|
||||
{{- (delimit $author ", " ) }}
|
||||
|
@ -1,6 +1,6 @@
|
||||
{{- if (.Param "ShowBreadCrumbs") -}}
|
||||
<div class="breadcrumbs">
|
||||
{{- $url := replace .Parent.Permalink (printf "%s" .Site.BaseURL) "" }}
|
||||
{{- $url := replace .Parent.Permalink (printf "%s" site.BaseURL) "" }}
|
||||
{{- $lang_url := strings.TrimPrefix (printf "%s/" .Lang) $url -}}
|
||||
|
||||
<a href="{{ "" | absLangURL }}">{{ i18n "home" | default "Home" }}</a>
|
||||
@ -8,7 +8,7 @@
|
||||
{{- range $index, $element := split $lang_url "/" }}
|
||||
|
||||
{{- $scratch.Add "path" (printf "%s/" $element )}}
|
||||
{{- $bc_pg := $.Site.GetPage ($scratch.Get "path") -}}
|
||||
{{- $bc_pg := site.GetPage ($scratch.Get "path") -}}
|
||||
|
||||
{{- if (and ($bc_pg) (gt (len . ) 0))}}
|
||||
{{- print " » " | safeHTML -}}<a href="{{ $bc_pg.Permalink }}">{{ $bc_pg.Name }}</a>
|
||||
|
@ -2,21 +2,28 @@
|
||||
{{- if (and .Params.cover.image (not $.isHidden)) }}
|
||||
{{- $alt := (.Params.cover.alt | default .Params.cover.caption | plainify) }}
|
||||
<figure class="entry-cover">
|
||||
{{- $addLink := (and .Site.Params.cover.linkFullImages (not $.IsHome)) }}
|
||||
{{- $cover := (.Page.Resources.ByType "image").GetMatch (printf "*%s*" (.Params.cover.image)) }}
|
||||
{{- $responsiveImages := (.Params.cover.responsiveImages | default site.Params.cover.responsiveImages) | default true }}
|
||||
{{- $addLink := (and site.Params.cover.linkFullImages (not $.IsHome)) }}
|
||||
{{- $pageBundleCover := (.Resources.ByType "image").GetMatch (printf "*%s*" (.Params.cover.image)) }}
|
||||
{{- $globalResourcesCover := (resources.ByType "image").GetMatch (printf "*%s*" (.Params.cover.image)) }}
|
||||
{{- $cover := (or $pageBundleCover $globalResourcesCover)}}
|
||||
{{- if $cover -}}{{/* i.e it is present in page bundle */}}
|
||||
{{- if $addLink }}<a href="{{ (path.Join .RelPermalink .Params.cover.image) | absURL }}" target="_blank"
|
||||
rel="noopener noreferrer">{{ end -}}
|
||||
{{- $sizes := (slice "360" "480" "720" "1080" "1500") }}
|
||||
{{- $processableFormats := (slice "jpg" "jpeg" "png" "tif" "bmp" "gif") }}
|
||||
{{- $prod := (hugo.IsProduction | or (eq .Site.Params.env "production")) }}
|
||||
{{- if (and (in $processableFormats $cover.MediaType.SubType) (ne .Site.Params.cover.responsiveImages false) (eq $prod true)) }}
|
||||
{{- $processableFormats := (slice "jpg" "jpeg" "png" "tif" "bmp" "gif") -}}
|
||||
{{- if hugo.IsExtended -}}
|
||||
{{- $processableFormats = $processableFormats | append "webp" -}}
|
||||
{{- end -}}
|
||||
{{- $prod := (hugo.IsProduction | or (eq site.Params.env "production")) }}
|
||||
{{- if (and (in $processableFormats $cover.MediaType.SubType) ($responsiveImages) (eq $prod true)) }}
|
||||
<img loading="lazy" srcset="{{- range $size := $sizes -}}
|
||||
{{- if (ge $cover.Width $size) -}}
|
||||
{{ printf "%s %s" (($cover.Resize (printf "%sx" $size)).Permalink) (printf "%sw ," $size) -}}
|
||||
{{ end }}
|
||||
{{- end -}}{{$cover.Permalink }} {{printf "%dw" ($cover.Width)}}"
|
||||
sizes="(min-width: 768px) 720px, 100vw" src="{{ $cover.Permalink }}" alt="{{ $alt }}" />
|
||||
sizes="(min-width: 768px) 720px, 100vw" src="{{ $cover.Permalink }}" alt="{{ $alt }}"
|
||||
width="{{ $cover.Width }}" height="{{ $cover.Height }}">
|
||||
{{- else }}{{/* Unprocessable image or responsive images disabled */}}
|
||||
<img loading="lazy" src="{{ (path.Join .RelPermalink .Params.cover.image) | absURL }}" alt="{{ $alt }}">
|
||||
{{- end }}
|
||||
|
@ -1,8 +1,8 @@
|
||||
{{- if or .Params.editPost.URL .Site.Params.editPost.URL -}}
|
||||
{{- if and (or .Params.editPost.URL site.Params.editPost.URL) (not (.Param "editPost.disabled")) -}}
|
||||
{{- $fileUrlPath := path.Join .File.Path }}
|
||||
|
||||
{{- if or .Params.author $.Site.Params.author (.Param "ShowReadingTime") (not .Date.IsZero) .IsTranslated }} | {{- end -}}
|
||||
<a href="{{ .Params.editPost.URL | default .Site.Params.editPost.URL }}{{ if .Params.editPost.appendFilePath | default ( .Site.Params.editPost.appendFilePath | default false ) }}/{{ $fileUrlPath }}{{ end }}" rel="noopener noreferrer" target="_blank">
|
||||
{{- .Params.editPost.Text | default (.Site.Params.editPost.Text | default (i18n "edit_post" | default "Edit")) -}}
|
||||
{{- if or .Params.author site.Params.author (.Param "ShowReadingTime") (not .Date.IsZero) .IsTranslated }} | {{- end -}}
|
||||
<a href="{{ .Params.editPost.URL | default site.Params.editPost.URL }}{{ if .Params.editPost.appendFilePath | default ( site.Params.editPost.appendFilePath | default false ) }}/{{ $fileUrlPath }}{{ end }}" rel="noopener noreferrer" target="_blank">
|
||||
{{- .Params.editPost.Text | default (site.Params.editPost.Text | default (i18n "edit_post" | default "Edit")) -}}
|
||||
</a>
|
||||
{{- end }}
|
||||
|
@ -1,12 +1,10 @@
|
||||
{{- partial "footer_info.html" . }}
|
||||
|
||||
{{- if (not .Site.Params.disableScrollToTop) }}
|
||||
<a href="#top" aria-label="go to top" title="Go to Top (Alt + G)">
|
||||
<button class="top-link" id="top-link" type="button" accesskey="g">
|
||||
{{- if (not site.Params.disableScrollToTop) }}
|
||||
<a href="#top" aria-label="go to top" title="Go to Top (Alt + G)" class="top-link" id="top-link" accesskey="g">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12 6" fill="currentColor">
|
||||
<path d="M12 6H0l6-6z" />
|
||||
</svg>
|
||||
</button>
|
||||
</a>
|
||||
{{- end }}
|
||||
|
||||
@ -14,10 +12,12 @@
|
||||
|
||||
<script>
|
||||
let menu = document.getElementById('menu')
|
||||
if (menu) {
|
||||
menu.scrollLeft = localStorage.getItem("menu-scroll-position");
|
||||
menu.onscroll = function () {
|
||||
localStorage.setItem("menu-scroll-position", menu.scrollLeft);
|
||||
}
|
||||
}
|
||||
|
||||
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
|
||||
anchor.addEventListener("click", function (e) {
|
||||
@ -40,7 +40,7 @@
|
||||
|
||||
</script>
|
||||
|
||||
{{- if (not .Site.Params.disableScrollToTop) }}
|
||||
{{- if (not site.Params.disableScrollToTop) }}
|
||||
<script>
|
||||
var mybutton = document.getElementById("top-link");
|
||||
window.onscroll = function () {
|
||||
@ -56,7 +56,7 @@
|
||||
</script>
|
||||
{{- end }}
|
||||
|
||||
{{- if (not .Site.Params.disableThemeToggle) }}
|
||||
{{- if (not site.Params.disableThemeToggle) }}
|
||||
<script>
|
||||
document.getElementById("theme-toggle").addEventListener("click", () => {
|
||||
if (document.body.className.includes("dark")) {
|
||||
@ -71,19 +71,19 @@
|
||||
</script>
|
||||
{{- end }}
|
||||
|
||||
{{- if (and (eq .Kind "page") (ne .Layout "archives") (ne .Layout "search") (.Site.Params.ShowCodeCopyButtons)) }}
|
||||
{{- if (and (eq .Kind "page") (ne .Layout "archives") (ne .Layout "search") (.Param "ShowCodeCopyButtons")) }}
|
||||
<script>
|
||||
document.querySelectorAll('pre > code').forEach((codeblock) => {
|
||||
const container = codeblock.parentNode.parentNode;
|
||||
|
||||
const copybutton = document.createElement('button');
|
||||
copybutton.classList.add('copy-code');
|
||||
copybutton.innerText = '{{- i18n "code_copy" | default "copy" }}';
|
||||
copybutton.innerHTML = '{{- i18n "code_copy" | default "copy" }}';
|
||||
|
||||
function copyingDone() {
|
||||
copybutton.innerText = '{{- i18n "code_copied" | default "copied!" }}';
|
||||
copybutton.innerHTML = '{{- i18n "code_copied" | default "copied!" }}';
|
||||
setTimeout(() => {
|
||||
copybutton.innerText = '{{- i18n "code_copy" | default "copy" }}';
|
||||
copybutton.innerHTML = '{{- i18n "code_copy" | default "copy" }}';
|
||||
}, 2000);
|
||||
}
|
||||
|
||||
|
@ -1,125 +1,169 @@
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
{{- if hugo.IsProduction | or (eq .Site.Params.env "production") }}
|
||||
{{- if hugo.IsProduction | or (eq site.Params.env "production") | and (ne .Params.robotsNoIndex true) }}
|
||||
<meta name="robots" content="index, follow">
|
||||
{{- else }}
|
||||
<meta name="robots" content="noindex, nofollow">
|
||||
{{- end }}
|
||||
|
||||
{{- /* Title */}}
|
||||
<title>{{ if .IsHome }}{{ else }}{{ if .Title }}{{ .Title }} | {{ end }}{{ end }}{{ .Site.Title }}</title>
|
||||
<title>{{ if .IsHome }}{{ else }}{{ if .Title }}{{ .Title }} | {{ end }}{{ end }}{{ site.Title }}</title>
|
||||
|
||||
{{- /* Meta */}}
|
||||
{{- if .IsHome }}
|
||||
{{ with .Site.Params.keywords -}}<meta name="keywords" content="{{- range $i, $e := . }}{{ if $i }}, {{ end }}{{ $e }}{{ end }}" />{{ end }}
|
||||
{{ with site.Params.keywords -}}<meta name="keywords" content="{{- range $i, $e := . }}{{ if $i }}, {{ end }}{{ $e }}{{ end }}">{{ end }}
|
||||
{{- else }}
|
||||
<meta name="keywords" content="{{ if .Params.keywords -}}
|
||||
{{- range $i, $e := .Params.keywords }}{{ if $i }}, {{ end }}{{ $e }}{{ end }} {{- else }}
|
||||
{{- range $i, $e := .Params.tags }}{{ if $i }}, {{ end }}{{ $e }}{{ end }} {{- end -}}" />
|
||||
{{- range $i, $e := .Params.tags }}{{ if $i }}, {{ end }}{{ $e }}{{ end }} {{- end -}}">
|
||||
{{- end }}
|
||||
<meta name="description" content="{{- with .Description }}{{ . }}{{- else }}{{- if .IsPage}}
|
||||
{{- .Summary | default (printf "%s - %s" .Title .Site.Title) }}{{- else }}
|
||||
{{- with .Site.Params.description }}{{ . }}{{- end }}{{- end }}{{- end -}}">
|
||||
<meta name="description" content="{{- with .Description }}{{ . }}{{- else }}{{- if or .IsPage .IsSection}}
|
||||
{{- .Summary | default (printf "%s - %s" .Title site.Title) }}{{- else }}
|
||||
{{- with site.Params.description }}{{ . }}{{- end }}{{- end }}{{- end -}}">
|
||||
<meta name="author" content="{{ (partial "author.html" . ) }}">
|
||||
<link rel="canonical" href="{{ if .Params.canonicalURL -}} {{ trim .Params.canonicalURL " " }} {{- else -}} {{ .Permalink }} {{- end }}" />
|
||||
{{- if .Site.Params.analytics.google.SiteVerificationTag }}
|
||||
<meta name="google-site-verification" content="{{ .Site.Params.analytics.google.SiteVerificationTag }}" />
|
||||
<link rel="canonical" href="{{ if .Params.canonicalURL -}} {{ trim .Params.canonicalURL " " }} {{- else -}} {{ .Permalink }} {{- end }}">
|
||||
{{- if site.Params.analytics.google.SiteVerificationTag }}
|
||||
<meta name="google-site-verification" content="{{ site.Params.analytics.google.SiteVerificationTag }}">
|
||||
{{- end }}
|
||||
{{- if .Site.Params.analytics.yandex.SiteVerificationTag }}
|
||||
<meta name="yandex-verification" content="{{ .Site.Params.analytics.yandex.SiteVerificationTag }}" />
|
||||
{{- if site.Params.analytics.yandex.SiteVerificationTag }}
|
||||
<meta name="yandex-verification" content="{{ site.Params.analytics.yandex.SiteVerificationTag }}">
|
||||
{{- end }}
|
||||
{{- if .Site.Params.analytics.bing.SiteVerificationTag }}
|
||||
<meta name="msvalidate.01" content="{{ .Site.Params.analytics.bing.SiteVerificationTag }}" />
|
||||
{{- if site.Params.analytics.bing.SiteVerificationTag }}
|
||||
<meta name="msvalidate.01" content="{{ site.Params.analytics.bing.SiteVerificationTag }}">
|
||||
{{- end }}
|
||||
{{- if site.Params.analytics.naver.SiteVerificationTag }}
|
||||
<meta name="naver-site-verification" content="{{ site.Params.analytics.naver.SiteVerificationTag }}">
|
||||
{{- end }}
|
||||
|
||||
{{- /* Styles */}}
|
||||
|
||||
{{- /* includes */}}
|
||||
{{- $includes := slice }}
|
||||
{{- $includes = $includes | append (" " | resources.FromString "assets/css/includes-blank.css")}}
|
||||
|
||||
{{- if not (eq site.Params.assets.disableScrollBarStyle true) }}
|
||||
{{- $ScrollStyle := (resources.Get "css/includes/scroll-bar.css") }}
|
||||
{{- $includes = (append $ScrollStyle $includes) }}
|
||||
{{- end }}
|
||||
|
||||
{{- $includes_all := $includes | resources.Concat "assets/css/includes.css" }}
|
||||
|
||||
{{- $theme_vars := (resources.Get "css/core/theme-vars.css") }}
|
||||
{{- $reset := (resources.Get "css/core/reset.css") }}
|
||||
{{- $media := (resources.Get "css/core/zmedia.css") }}
|
||||
{{- $license_css := (resources.Get "css/core/license.css") }}
|
||||
{{- $common := (resources.Match "css/common/*.css") | resources.Concat "assets/css/common.css" }}
|
||||
|
||||
{{- /* include `an-old-hope` if hljs is on */}}
|
||||
{{- $isHLJSdisabled := (.Site.Params.assets.disableHLJS | default false) }}
|
||||
{{- $hljs := (cond ($isHLJSdisabled) (" " | resources.FromString "assets/css/hljs-blank.css") (resources.Get "css/hljs/an-old-hope.min.css")) }}
|
||||
{{- $isHLJSdisabled := (site.Params.assets.disableHLJS | default false) }}
|
||||
{{- $hljs := (cond ($isHLJSdisabled) (".chroma { background-color: unset !important;}" | resources.FromString "assets/css/hljs-blank.css") (resources.Get "css/hljs/an-old-hope.min.css")) }}
|
||||
|
||||
{{- /* order is important */}}
|
||||
{{- $core := (slice $theme_vars $reset $common $hljs $media) | resources.Concat "assets/css/core.css" }}
|
||||
{{- $extended := (resources.Match "css/extended/*.css") | resources.Concat "assets/css/extended.css" }}
|
||||
{{- $core := (slice $theme_vars $reset $common $hljs $includes_all $media) | resources.Concat "assets/css/core.css" | resources.Minify }}
|
||||
{{- $extended := (resources.Match "css/extended/*.css") | resources.Concat "assets/css/extended.css" | resources.Minify }}
|
||||
|
||||
{{- /* bundle all required css */}}
|
||||
{{- /* Add extended css after theme style */ -}}
|
||||
{{- $stylesheet := (slice $core $extended) | resources.Concat "assets/css/stylesheet.css" | minify }}
|
||||
{{- $stylesheet := (slice $license_css $core $extended) | resources.Concat "assets/css/stylesheet.css" }}
|
||||
|
||||
{{- if not .Site.Params.assets.disableFingerprinting }}
|
||||
{{- if not site.Params.assets.disableFingerprinting }}
|
||||
{{- $stylesheet := $stylesheet | fingerprint }}
|
||||
<link crossorigin="anonymous" href="{{ $stylesheet.RelPermalink }}" integrity="{{ $stylesheet.Data.Integrity }}" rel="preload stylesheet" as="style">
|
||||
{{- else }}
|
||||
<link crossorigin="anonymous" href="{{ $stylesheet.RelPermalink }}" rel="preload stylesheet" as="style">
|
||||
{{- end }}
|
||||
|
||||
{{- with .Site.Params.profileMode }}
|
||||
{{- if and .enabled .imageUrl }}
|
||||
<link rel="preload" href="{{ .imageUrl }}" as="image">
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{- with .Site.Params.label.icon }}
|
||||
<link rel="preload" href="{{ . }}" as="image">
|
||||
{{- end }}
|
||||
|
||||
{{- /* Search */}}
|
||||
{{- if (eq .Layout `search`) -}}
|
||||
<link crossorigin="anonymous" rel="preload" as="fetch" href="../index.json">
|
||||
{{- $fastsearch := resources.Get "js/fastsearch.js" | js.Build (dict "params" (dict "fuseOpts" .Site.Params.fuseOpts)) }}
|
||||
{{- $fusejs := resources.Get "js/fuse.js" }}
|
||||
{{- if not .Site.Params.assets.disableFingerprinting }}
|
||||
{{- $search := (slice $fusejs $fastsearch ) | resources.Concat "assets/js/search.js" | minify | fingerprint }}
|
||||
{{- $fastsearch := resources.Get "js/fastsearch.js" | js.Build (dict "params" (dict "fuseOpts" site.Params.fuseOpts)) | resources.Minify }}
|
||||
{{- $fusejs := resources.Get "js/fuse.basic.min.js" }}
|
||||
{{- $license_js := resources.Get "js/license.js" }}
|
||||
{{- if not site.Params.assets.disableFingerprinting }}
|
||||
{{- $search := (slice $fusejs $license_js $fastsearch ) | resources.Concat "assets/js/search.js" | fingerprint }}
|
||||
<script defer crossorigin="anonymous" src="{{ $search.RelPermalink }}" integrity="{{ $search.Data.Integrity }}"></script>
|
||||
{{- else }}
|
||||
{{- $search := (slice $fusejs $fastsearch ) | resources.Concat "assets/js/search.js" | minify }}
|
||||
{{- $search := (slice $fusejs $fastsearch ) | resources.Concat "assets/js/search.js" }}
|
||||
<script defer crossorigin="anonymous" src="{{ $search.RelPermalink }}"></script>
|
||||
{{- end }}
|
||||
{{- end -}}
|
||||
|
||||
{{- /* Highlight.js */}}
|
||||
{{- $isHLJSdisabled := (.Site.Params.assets.disableHLJS | default .Params.disableHLJS ) }}
|
||||
{{- $isHLJSdisabled := (site.Params.assets.disableHLJS | default .Params.disableHLJS ) }}
|
||||
{{- if (and (eq .Kind "page") (ne .Layout "archives") (ne .Layout "search") (not $isHLJSdisabled)) }}
|
||||
{{- if not .Site.Params.assets.disableFingerprinting }}
|
||||
{{- $highlight := slice (resources.Get "js/highlight.min.js") | resources.Concat "assets/js/highlight.js" | minify | fingerprint }}
|
||||
{{- if not site.Params.assets.disableFingerprinting }}
|
||||
{{- $highlight := slice (resources.Get "js/highlight.min.js") | resources.Concat "assets/js/highlight.js" | fingerprint }}
|
||||
<script defer crossorigin="anonymous" src="{{ $highlight.RelPermalink }}" integrity="{{ $highlight.Data.Integrity }}"
|
||||
onload="hljs.initHighlightingOnLoad();"></script>
|
||||
{{- else }}
|
||||
{{- $highlight := slice (resources.Get "js/highlight.min.js") | resources.Concat "assets/js/highlight.js" | minify }}
|
||||
{{- $highlight := slice (resources.Get "js/highlight.min.js") | resources.Concat "assets/js/highlight.js" }}
|
||||
<script defer crossorigin="anonymous" src="{{ $highlight.RelPermalink }}" onload="hljs.initHighlightingOnLoad();"></script>
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{- /* Favicons */}}
|
||||
<link rel="icon" href="{{ .Site.Params.assets.favicon | default "favicon.ico" | absURL }}">
|
||||
<link rel="icon" type="image/png" sizes="16x16" href="{{ .Site.Params.assets.favicon16x16 | default "favicon-16x16.png" | absURL }}">
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="{{ .Site.Params.assets.favicon32x32 | default "favicon-32x32.png" | absURL }}">
|
||||
<link rel="apple-touch-icon" href="{{ .Site.Params.assets.apple_touch_icon | default "apple-touch-icon.png" | absURL }}">
|
||||
<link rel="mask-icon" href="{{ .Site.Params.assets.safari_pinned_tab | default "safari-pinned-tab.svg" | absURL }}">
|
||||
<meta name="theme-color" content="#2e2e33">
|
||||
<meta name="msapplication-TileColor" content="#2e2e33">
|
||||
|
||||
{{- /* Generator */}}
|
||||
{{ hugo.Generator }}
|
||||
<link rel="icon" href="{{ site.Params.assets.favicon | default "favicon.ico" | absURL }}">
|
||||
<link rel="icon" type="image/png" sizes="16x16" href="{{ site.Params.assets.favicon16x16 | default "favicon-16x16.png" | absURL }}">
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="{{ site.Params.assets.favicon32x32 | default "favicon-32x32.png" | absURL }}">
|
||||
<link rel="apple-touch-icon" href="{{ site.Params.assets.apple_touch_icon | default "apple-touch-icon.png" | absURL }}">
|
||||
<link rel="mask-icon" href="{{ site.Params.assets.safari_pinned_tab | default "safari-pinned-tab.svg" | absURL }}">
|
||||
<meta name="theme-color" content="{{ site.Params.assets.theme_color | default "#2e2e33" }}">
|
||||
<meta name="msapplication-TileColor" content="{{ site.Params.assets.msapplication_TileColor | default "#2e2e33" }}">
|
||||
|
||||
{{- /* RSS */}}
|
||||
{{ range .AlternativeOutputFormats -}}
|
||||
<link rel="{{ .Rel }}" type="{{ .MediaType.Type | html }}" href="{{ .Permalink | safeURL }}">
|
||||
{{ end -}}
|
||||
{{- range .AllTranslations -}}
|
||||
<link rel="alternate" hreflang="{{ .Lang }}" href="{{ .Permalink }}" />
|
||||
{{ end }}
|
||||
<link rel="alternate" hreflang="{{ .Lang }}" href="{{ .Permalink }}">
|
||||
{{ end -}}
|
||||
|
||||
<noscript>
|
||||
<style>
|
||||
#theme-toggle,
|
||||
.top-link {
|
||||
display: none;
|
||||
}
|
||||
|
||||
</style>
|
||||
{{- if (and (ne site.Params.defaultTheme "light") (ne site.Params.defaultTheme "dark")) }}
|
||||
<style>
|
||||
@media (prefers-color-scheme: dark) {
|
||||
:root {
|
||||
--theme: rgb(29, 30, 32);
|
||||
--entry: rgb(46, 46, 51);
|
||||
--primary: rgb(218, 218, 219);
|
||||
--secondary: rgb(155, 156, 157);
|
||||
--tertiary: rgb(65, 66, 68);
|
||||
--content: rgb(196, 196, 197);
|
||||
--hljs-bg: rgb(46, 46, 51);
|
||||
--code-bg: rgb(55, 56, 62);
|
||||
--border: rgb(51, 51, 51);
|
||||
}
|
||||
|
||||
.list {
|
||||
background: var(--theme);
|
||||
}
|
||||
|
||||
.list:not(.dark)::-webkit-scrollbar-track {
|
||||
background: 0 0;
|
||||
}
|
||||
|
||||
.list:not(.dark)::-webkit-scrollbar-thumb {
|
||||
border-color: var(--theme);
|
||||
}
|
||||
}
|
||||
|
||||
</style>
|
||||
{{- end }}
|
||||
</noscript>
|
||||
|
||||
{{- partial "extend_head.html" . -}}
|
||||
|
||||
{{- /* Misc */}}
|
||||
{{- if hugo.IsProduction | or (eq .Site.Params.env "production") }}
|
||||
{{- if hugo.IsProduction | or (eq site.Params.env "production") }}
|
||||
{{- template "_internal/google_analytics.html" . }}
|
||||
{{- template "_internal/google_news.html" . }}
|
||||
{{- template "partials/templates/opengraph.html" . }}
|
||||
{{- template "partials/templates/twitter_cards.html" . }}
|
||||
{{- template "partials/templates/schema_json.html" . }}
|
||||
|
@ -1,7 +1,7 @@
|
||||
{{- /* theme-toggle is enabled */}}
|
||||
{{- if (not .Site.Params.disableThemeToggle) }}
|
||||
{{- if (not site.Params.disableThemeToggle) }}
|
||||
{{- /* theme is light */}}
|
||||
{{- if (eq .Site.Params.defaultTheme "light") }}
|
||||
{{- if (eq site.Params.defaultTheme "light") }}
|
||||
<script>
|
||||
if (localStorage.getItem("pref-theme") === "dark") {
|
||||
document.body.classList.add('dark');
|
||||
@ -9,7 +9,7 @@
|
||||
|
||||
</script>
|
||||
{{- /* theme is dark */}}
|
||||
{{- else if (eq .Site.Params.defaultTheme "dark") }}
|
||||
{{- else if (eq site.Params.defaultTheme "dark") }}
|
||||
<script>
|
||||
if (localStorage.getItem("pref-theme") === "light") {
|
||||
document.body.classList.remove('dark')
|
||||
@ -30,7 +30,7 @@
|
||||
</script>
|
||||
{{- end }}
|
||||
{{- /* theme-toggle is disabled and theme is auto */}}
|
||||
{{- else if (and (ne .Site.Params.defaultTheme "light") (ne .Site.Params.defaultTheme "dark"))}}
|
||||
{{- else if (and (ne site.Params.defaultTheme "light") (ne site.Params.defaultTheme "dark"))}}
|
||||
<script>
|
||||
if (window.matchMedia('(prefers-color-scheme: dark)').matches) {
|
||||
document.body.classList.add('dark');
|
||||
@ -38,68 +38,49 @@
|
||||
|
||||
</script>
|
||||
{{- end }}
|
||||
<noscript>
|
||||
<style type="text/css">
|
||||
#theme-toggle,
|
||||
.top-link {
|
||||
display: none;
|
||||
}
|
||||
|
||||
</style>
|
||||
{{- if (and (ne .Site.Params.defaultTheme "light") (ne .Site.Params.defaultTheme "dark")) }}
|
||||
<style>
|
||||
@media (prefers-color-scheme: dark) {
|
||||
:root {
|
||||
--theme: #1d1e20;
|
||||
--entry: #2e2e33;
|
||||
--primary: rgba(255, 255, 255, 0.84);
|
||||
--secondary: rgba(255, 255, 255, 0.56);
|
||||
--tertiary: rgba(255, 255, 255, 0.16);
|
||||
--content: rgba(255, 255, 255, 0.74);
|
||||
--hljs-bg: #2e2e33;
|
||||
--code-bg: #37383e;
|
||||
--border: #333;
|
||||
}
|
||||
|
||||
.list {
|
||||
background: var(--theme);
|
||||
}
|
||||
|
||||
.list:not(.dark)::-webkit-scrollbar-track {
|
||||
background: 0 0;
|
||||
}
|
||||
|
||||
.list:not(.dark)::-webkit-scrollbar-thumb {
|
||||
border-color: var(--theme);
|
||||
}
|
||||
}
|
||||
|
||||
</style>
|
||||
{{- end }}
|
||||
</noscript>
|
||||
|
||||
<header class="header">
|
||||
<nav class="nav">
|
||||
<div class="logo">
|
||||
{{- $label_text := (.Site.Params.label.text | default .Site.Title) }}
|
||||
{{- if .Site.Title }}
|
||||
{{- $label_text := (site.Params.label.text | default site.Title) }}
|
||||
{{- if site.Title }}
|
||||
<a href="{{ "" | absLangURL }}" accesskey="h" title="{{ $label_text }} (Alt + H)">
|
||||
{{- if .Site.Params.label.icon }}
|
||||
<img src="{{- .Site.Params.label.icon -}}" alt="logo" aria-label="logo"
|
||||
height="{{- .Site.Params.label.iconHeight | default " 30px" -}}">
|
||||
{{- if site.Params.label.icon }}
|
||||
{{- $img := resources.Get site.Params.label.icon }}
|
||||
{{- if $img }}
|
||||
{{- $processableFormats := (slice "jpg" "jpeg" "png" "tif" "bmp" "gif") -}}
|
||||
{{- if hugo.IsExtended -}}
|
||||
{{- $processableFormats = $processableFormats | append "webp" -}}
|
||||
{{- end -}}
|
||||
{{- $prod := (hugo.IsProduction | or (eq site.Params.env "production")) }}
|
||||
{{- if and (in $processableFormats $img.MediaType.SubType) (eq $prod true)}}
|
||||
{{- if site.Params.label.iconHeight }}
|
||||
{{- $img = $img.Resize (printf "x%d" site.Params.label.iconHeight) }}
|
||||
{{ else }}
|
||||
{{- $img = $img.Resize "x30" }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
<img src="{{ $img.Permalink }}" alt="" aria-label="logo"
|
||||
height="{{- site.Params.label.iconHeight | default "30" -}}">
|
||||
{{- else }}
|
||||
<img src="{{- site.Params.label.icon | absURL -}}" alt="" aria-label="logo"
|
||||
height="{{- site.Params.label.iconHeight | default "30" -}}">
|
||||
{{- end -}}
|
||||
{{- else if hasPrefix site.Params.label.iconSVG "<svg" }}
|
||||
{{ site.Params.label.iconSVG | safeHTML }}
|
||||
{{- end -}}
|
||||
{{- $label_text -}}
|
||||
</a>
|
||||
{{- end }}
|
||||
<span class="logo-switches">
|
||||
{{- if (not .Site.Params.disableThemeToggle) }}
|
||||
<div class="logo-switches">
|
||||
{{- if (not site.Params.disableThemeToggle) }}
|
||||
<button id="theme-toggle" accesskey="t" title="(Alt + T)">
|
||||
<svg id="moon" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"
|
||||
<svg id="moon" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
|
||||
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
|
||||
stroke-linejoin="round">
|
||||
<path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path>
|
||||
</svg>
|
||||
<svg id="sun" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"
|
||||
<svg id="sun" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
|
||||
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
|
||||
stroke-linejoin="round">
|
||||
<circle cx="12" cy="12" r="5"></circle>
|
||||
@ -116,8 +97,8 @@
|
||||
{{- end }}
|
||||
|
||||
{{- $lang := .Lang}}
|
||||
{{- $separator := or $label_text (not .Site.Params.disableThemeToggle)}}
|
||||
{{- with $.Site.Home.AllTranslations }}
|
||||
{{- $separator := or $label_text (not site.Params.disableThemeToggle)}}
|
||||
{{- with site.Home.AllTranslations }}
|
||||
<ul class="lang-switch">
|
||||
{{- if $separator }}<li>|</li>{{ end }}
|
||||
{{- range . -}}
|
||||
@ -125,7 +106,7 @@
|
||||
<li>
|
||||
<a href="{{- .Permalink -}}" title="{{ .Language.Params.languageAltTitle | default (.Language.LanguageName | emojify) | default (.Lang | title) }}"
|
||||
aria-label="{{ .Language.LanguageName | default (.Lang | title) }}">
|
||||
{{- if (and $.Site.Params.displayFullLangName (.Language.LanguageName)) }}
|
||||
{{- if (and site.Params.displayFullLangName (.Language.LanguageName)) }}
|
||||
{{- .Language.LanguageName | emojify -}}
|
||||
{{- else }}
|
||||
{{- .Lang | title -}}
|
||||
@ -136,14 +117,14 @@
|
||||
{{- end}}
|
||||
</ul>
|
||||
{{- end }}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
{{- $currentPage := . }}
|
||||
<ul id="menu">
|
||||
{{- range .Site.Menus.main }}
|
||||
{{- range site.Menus.main }}
|
||||
{{- $menu_item_url := (cond (strings.HasSuffix .URL "/") .URL (printf "%s/" .URL) ) | absLangURL }}
|
||||
{{- $page_url:= $currentPage.Permalink | absLangURL }}
|
||||
{{- $is_search := eq ($.Site.GetPage .KeyName).Layout `search` }}
|
||||
{{- $is_search := eq (site.GetPage .KeyName).Layout `search` }}
|
||||
<li>
|
||||
<a href="{{ .URL | absLangURL }}" title="{{ .Title | default .Name }} {{- cond $is_search (" (Alt + /)" | safeHTMLAttr) ("" | safeHTMLAttr ) }}"
|
||||
{{- cond $is_search (" accesskey=/" | safeHTMLAttr) ("" | safeHTMLAttr ) }}>
|
||||
@ -152,6 +133,14 @@
|
||||
{{- .Name -}}
|
||||
{{ .Post -}}
|
||||
</span>
|
||||
{{- if (findRE "://" .URL) }}
|
||||
<svg fill="none" shape-rendering="geometricPrecision" stroke="currentColor" stroke-linecap="round"
|
||||
stroke-linejoin="round" stroke-width="2.5" viewBox="0 0 24 24" height="12" width="12">
|
||||
<path d="M18 13v6a2 2 0 01-2 2H5a2 2 0 01-2-2V8a2 2 0 012-2h6"></path>
|
||||
<path d="M15 3h6v6"></path>
|
||||
<path d="M10 14L21 3"></path>
|
||||
</svg>
|
||||
{{- end }}
|
||||
</a>
|
||||
</li>
|
||||
{{- end }}
|
||||
|
@ -1,13 +1,13 @@
|
||||
{{- with $.Site.Params.homeInfoParams }}
|
||||
{{- with site.Params.homeInfoParams }}
|
||||
<article class="first-entry home-info">
|
||||
<header class="entry-header">
|
||||
<h1>{{ .Title | markdownify }}</h1>
|
||||
</header>
|
||||
<section class="entry-content">
|
||||
<p>{{ .Content | markdownify }}</p>
|
||||
</section>
|
||||
<div class="entry-content">
|
||||
{{ .Content | markdownify }}
|
||||
</div>
|
||||
<footer class="entry-footer">
|
||||
{{ partial "social_icons.html" $.Site.Params.socialIcons }}
|
||||
{{ partial "social_icons.html" site.Params.socialIcons }}
|
||||
</footer>
|
||||
</article>
|
||||
{{- end -}}
|
||||
|
@ -1,19 +1,54 @@
|
||||
<div class="profile">
|
||||
{{- with .Site.Params.profileMode }}
|
||||
{{- with site.Params.profileMode }}
|
||||
<div class="profile_inner">
|
||||
{{- if .imageUrl -}}
|
||||
<img src="{{ .imageUrl }}" alt="{{ .imageTitle | default "profile image" }}"
|
||||
{{- $img := "" }}
|
||||
{{- if not (urls.Parse .imageUrl).IsAbs }}
|
||||
{{- $img = resources.Get .imageUrl }}
|
||||
{{- end }}
|
||||
{{- if $img }}
|
||||
{{- $processableFormats := (slice "jpg" "jpeg" "png" "tif" "bmp" "gif") -}}
|
||||
{{- if hugo.IsExtended -}}
|
||||
{{- $processableFormats = $processableFormats | append "webp" -}}
|
||||
{{- end -}}
|
||||
{{- $prod := (hugo.IsProduction | or (eq site.Params.env "production")) }}
|
||||
{{- if and (in $processableFormats $img.MediaType.SubType) (eq $prod true)}}
|
||||
{{- if (not (and (not .imageHeight) (not .imageWidth))) }}
|
||||
{{- $img = $img.Resize (printf "%dx%d" .imageWidth .imageHeight) }}
|
||||
{{- else if .imageHeight }}
|
||||
{{- $img = $img.Resize (printf "x%d" .imageHeight) }}
|
||||
{{ else if .imageWidth }}
|
||||
{{- $img = $img.Resize (printf "%dx" .imageWidth) }}
|
||||
{{ else }}
|
||||
{{- $img = $img.Resize "150x150" }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
<img draggable="false" src="{{ $img.Permalink }}" alt="{{ .imageTitle | default "profile image" }}" title="{{ .imageTitle }}"
|
||||
height="{{ .imageHeight | default 150 }}" width="{{ .imageWidth | default 150 }}" />
|
||||
{{- else }}
|
||||
<img draggable="false" src="{{ .imageUrl | absURL }}" alt="{{ .imageTitle | default "profile image" }}" title="{{ .imageTitle }}"
|
||||
height="{{ .imageHeight | default 150 }}" width="{{ .imageWidth | default 150 }}" />
|
||||
{{- end }}
|
||||
<h1>{{ .title | default $.Site.Title | markdownify }}</h1>
|
||||
{{- end }}
|
||||
<h1>{{ .title | default site.Title | markdownify }}</h1>
|
||||
<span>{{ .subtitle | markdownify }}</span>
|
||||
{{- partial "social_icons.html" $.Site.Params.socialIcons -}}
|
||||
{{- partial "social_icons.html" site.Params.socialIcons -}}
|
||||
|
||||
{{- with .buttons }}
|
||||
<div class="buttons">
|
||||
{{- range . }}
|
||||
<a class="button" href="{{ trim .url " " }}" rel="noopener" title="{{ .name | title }}">
|
||||
<span class="button-inner">{{ .name | title }}</span>
|
||||
<a class="button" href="{{ trim .url " " }}" rel="noopener" title="{{ .name }}">
|
||||
<span class="button-inner">
|
||||
{{ .name }}
|
||||
{{- if (findRE "://" .url) }}
|
||||
<svg fill="none" shape-rendering="geometricPrecision" stroke="currentColor" stroke-linecap="round"
|
||||
stroke-linejoin="round" stroke-width="2.5" viewBox="0 0 24 24" height="14" width="14">
|
||||
<path d="M18 13v6a2 2 0 01-2 2H5a2 2 0 01-2-2V8a2 2 0 012-2h6"></path>
|
||||
<path d="M15 3h6v6"></path>
|
||||
<path d="M10 14L21 3"></path>
|
||||
</svg>
|
||||
{{- end }}
|
||||
</span>
|
||||
</a>
|
||||
{{- end }}
|
||||
</div>
|
||||
|
9
layouts/partials/post_canonical.html
Normal file
9
layouts/partials/post_canonical.html
Normal file
@ -0,0 +1,9 @@
|
||||
{{ if and (.Params.canonicalURL) (.Params.ShowCanonicalLink ) -}}
|
||||
{{ $url := urls.Parse .Params.canonicalURL }}
|
||||
|
||||
{{- if or .Params.author site.Params.author (.Param "ShowReadingTime") (not .Date.IsZero) .IsTranslated (or .Params.editPost.URL site.Params.editPost.URL) }} | {{- end -}}
|
||||
<span>
|
||||
{{- (site.Params.CanonicalLinkText | default .Params.CanonicalLinkText) | default "Originally published at" -}}
|
||||
<a href="{{ trim .Params.canonicalURL " " }}" title="{{ trim .Params.canonicalURL " " }}" target="_blank" rel="noopener noreferrer">{{ $url.Host }}</a>
|
||||
</span>
|
||||
{{- end }}
|
@ -1,17 +1,23 @@
|
||||
{{- $scratch := newScratch }}
|
||||
|
||||
{{- if not .Date.IsZero -}}
|
||||
{{- $scratch.Add "meta" (slice (.Date.Format (default "January 2, 2006" .Site.Params.DateFormat))) }}
|
||||
{{- $scratch.Add "meta" (slice (printf "<span title='%s'>%s</span>" (.Date) (.Date | time.Format (default "January 2, 2006" site.Params.DateFormat)))) }}
|
||||
{{- end }}
|
||||
|
||||
{{- if (.Param "ShowReadingTime") -}}
|
||||
{{- $scratch.Add "meta" (slice (i18n "read_time" .ReadingTime | default (printf "%d min" .ReadingTime))) }}
|
||||
{{- end }}
|
||||
|
||||
{{- if (.Param "ShowWordCount") -}}
|
||||
{{- $scratch.Add "meta" (slice (i18n "words" .WordCount | default (printf "%d words" .WordCount))) }}
|
||||
{{- end }}
|
||||
|
||||
{{- if not (.Param "hideAuthor") -}}
|
||||
{{- with (partial "author.html" .) }}
|
||||
{{- $scratch.Add "meta" (slice .) }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{- with ($scratch.Get "meta") }}
|
||||
{{- delimit . " · " -}}
|
||||
{{- delimit . " · " | safeHTML -}}
|
||||
{{- end -}}
|
||||
|
@ -4,52 +4,78 @@
|
||||
{{- $.Scratch.Set "tags" ""}}
|
||||
|
||||
{{- with .Params.Tags }}
|
||||
{{ $hashtags := newScratch}}
|
||||
{{- $hashtags := newScratch}}
|
||||
{{- range . }}{{ $hashtags.Add "tags" (slice (replaceRE "(\\s)" "" . ))}}{{end}}
|
||||
{{- $.Scratch.Set "tags" (delimit ($hashtags.Get "tags") ",") }}
|
||||
{{- end -}}
|
||||
|
||||
{{- $custom := false }}
|
||||
{{- $ShareButtons := (.Param "ShareButtons")}}
|
||||
{{- with $ShareButtons }}{{ $custom = true }}{{ end }}
|
||||
|
||||
<div class="share-buttons">
|
||||
<a target="_blank" rel="noopener noreferrer" aria-label="share {{ $title | plainify }} on twitter"
|
||||
href="https://twitter.com/intent/tweet/?text={{ $title }}&url={{ $pageurl }}&hashtags={{- $.Scratch.Get "tags" -}}">
|
||||
<svg version="1.1" viewBox="0 0 512 512" xml:space="preserve">
|
||||
{{- if (or (cond ($custom) (in $ShareButtons "x") (true)) (cond ($custom) (in $ShareButtons "twitter") (true))) }}
|
||||
<a target="_blank" rel="noopener noreferrer" aria-label="share {{ $title | plainify }} on x"
|
||||
href="https://x.com/intent/tweet/?text={{ $title }}&url={{ $pageurl }}&hashtags={{- $.Scratch.Get "tags" -}}">
|
||||
<svg version="1.1" viewBox="0 0 512 512" xml:space="preserve" height="30px" width="30px" fill="currentColor">
|
||||
<path
|
||||
d="M449.446,0c34.525,0 62.554,28.03 62.554,62.554l0,386.892c0,34.524 -28.03,62.554 -62.554,62.554l-386.892,0c-34.524,0 -62.554,-28.03 -62.554,-62.554l0,-386.892c0,-34.524 28.029,-62.554 62.554,-62.554l386.892,0Zm-253.927,424.544c135.939,0 210.268,-112.643 210.268,-210.268c0,-3.218 0,-6.437 -0.153,-9.502c14.406,-10.421 26.973,-23.448 36.935,-38.314c-13.18,5.824 -27.433,9.809 -42.452,11.648c15.326,-9.196 26.973,-23.602 32.49,-40.92c-14.252,8.429 -30.038,14.56 -46.896,17.931c-13.487,-14.406 -32.644,-23.295 -53.946,-23.295c-40.767,0 -73.87,33.104 -73.87,73.87c0,5.824 0.613,11.494 1.992,16.858c-61.456,-3.065 -115.862,-32.49 -152.337,-77.241c-6.284,10.881 -9.962,23.601 -9.962,37.088c0,25.594 13.027,48.276 32.95,61.456c-12.107,-0.307 -23.448,-3.678 -33.41,-9.196l0,0.92c0,35.862 25.441,65.594 59.311,72.49c-6.13,1.686 -12.72,2.606 -19.464,2.606c-4.751,0 -9.348,-0.46 -13.946,-1.38c9.349,29.426 36.628,50.728 68.965,51.341c-25.287,19.771 -57.164,31.571 -91.8,31.571c-5.977,0 -11.801,-0.306 -17.625,-1.073c32.337,21.15 71.264,33.41 112.95,33.41Z" />
|
||||
d="M512 62.554 L 512 449.446 C 512 483.97 483.97 512 449.446 512 L 62.554 512 C 28.03 512 0 483.97 0 449.446 L 0 62.554 C 0 28.03 28.029 0 62.554 0 L 449.446 0 C 483.971 0 512 28.03 512 62.554 Z M 269.951 190.75 L 182.567 75.216 L 56 75.216 L 207.216 272.95 L 63.9 436.783 L 125.266 436.783 L 235.9 310.383 L 332.567 436.783 L 456 436.783 L 298.367 228.367 L 432.367 75.216 L 371.033 75.216 Z M 127.633 110 L 164.101 110 L 383.481 400.065 L 349.5 400.065 Z"/>
|
||||
</svg>
|
||||
</a>
|
||||
{{- end }}
|
||||
{{- if (cond ($custom) (in $ShareButtons "linkedin") (true)) }}
|
||||
<a target="_blank" rel="noopener noreferrer" aria-label="share {{ $title | plainify }} on linkedin"
|
||||
href="https://www.linkedin.com/shareArticle?mini=true&url={{ $pageurl }}&title={{ $title }}&summary={{ $title }}&source={{ $pageurl }}">
|
||||
<svg version="1.1" viewBox="0 0 512 512" xml:space="preserve">
|
||||
<svg version="1.1" viewBox="0 0 512 512" xml:space="preserve" height="30px" width="30px" fill="currentColor">
|
||||
<path
|
||||
d="M449.446,0c34.525,0 62.554,28.03 62.554,62.554l0,386.892c0,34.524 -28.03,62.554 -62.554,62.554l-386.892,0c-34.524,0 -62.554,-28.03 -62.554,-62.554l0,-386.892c0,-34.524 28.029,-62.554 62.554,-62.554l386.892,0Zm-288.985,423.278l0,-225.717l-75.04,0l0,225.717l75.04,0Zm270.539,0l0,-129.439c0,-69.333 -37.018,-101.586 -86.381,-101.586c-39.804,0 -57.634,21.891 -67.617,37.266l0,-31.958l-75.021,0c0.995,21.181 0,225.717 0,225.717l75.02,0l0,-126.056c0,-6.748 0.486,-13.492 2.474,-18.315c5.414,-13.475 17.767,-27.434 38.494,-27.434c27.135,0 38.007,20.707 38.007,51.037l0,120.768l75.024,0Zm-307.552,-334.556c-25.674,0 -42.448,16.879 -42.448,39.002c0,21.658 16.264,39.002 41.455,39.002l0.484,0c26.165,0 42.452,-17.344 42.452,-39.002c-0.485,-22.092 -16.241,-38.954 -41.943,-39.002Z" />
|
||||
</svg>
|
||||
</a>
|
||||
{{- end }}
|
||||
{{- if (cond ($custom) (in $ShareButtons "reddit") (true)) }}
|
||||
<a target="_blank" rel="noopener noreferrer" aria-label="share {{ $title | plainify }} on reddit"
|
||||
href="https://reddit.com/submit?url={{ $pageurl }}&title={{ $title }}">
|
||||
<svg version="1.1" viewBox="0 0 512 512" xml:space="preserve">
|
||||
<svg version="1.1" viewBox="0 0 512 512" xml:space="preserve" height="30px" width="30px" fill="currentColor">
|
||||
<path
|
||||
d="M449.446,0c34.525,0 62.554,28.03 62.554,62.554l0,386.892c0,34.524 -28.03,62.554 -62.554,62.554l-386.892,0c-34.524,0 -62.554,-28.03 -62.554,-62.554l0,-386.892c0,-34.524 28.029,-62.554 62.554,-62.554l386.892,0Zm-3.446,265.638c0,-22.964 -18.616,-41.58 -41.58,-41.58c-11.211,0 -21.361,4.457 -28.841,11.666c-28.424,-20.508 -67.586,-33.757 -111.204,-35.278l18.941,-89.121l61.884,13.157c0.756,15.734 13.642,28.29 29.56,28.29c16.407,0 29.706,-13.299 29.706,-29.701c0,-16.403 -13.299,-29.702 -29.706,-29.702c-11.666,0 -21.657,6.792 -26.515,16.578l-69.105,-14.69c-1.922,-0.418 -3.939,-0.042 -5.585,1.036c-1.658,1.073 -2.811,2.761 -3.224,4.686l-21.152,99.438c-44.258,1.228 -84.046,14.494 -112.837,35.232c-7.468,-7.164 -17.589,-11.591 -28.757,-11.591c-22.965,0 -41.585,18.616 -41.585,41.58c0,16.896 10.095,31.41 24.568,37.918c-0.639,4.135 -0.99,8.328 -0.99,12.576c0,63.977 74.469,115.836 166.33,115.836c91.861,0 166.334,-51.859 166.334,-115.836c0,-4.218 -0.347,-8.387 -0.977,-12.493c14.564,-6.47 24.735,-21.034 24.735,-38.001Zm-119.474,108.193c-20.27,20.241 -59.115,21.816 -70.534,21.816c-11.428,0 -50.277,-1.575 -70.522,-21.82c-3.007,-3.008 -3.007,-7.882 0,-10.889c3.003,-2.999 7.882,-3.003 10.885,0c12.777,12.781 40.11,17.317 59.637,17.317c19.522,0 46.86,-4.536 59.657,-17.321c3.016,-2.999 7.886,-2.995 10.885,0.008c3.008,3.011 3.003,7.882 -0.008,10.889Zm-5.23,-48.781c-16.373,0 -29.701,-13.324 -29.701,-29.698c0,-16.381 13.328,-29.714 29.701,-29.714c16.378,0 29.706,13.333 29.706,29.714c0,16.374 -13.328,29.698 -29.706,29.698Zm-160.386,-29.702c0,-16.381 13.328,-29.71 29.714,-29.71c16.369,0 29.689,13.329 29.689,29.71c0,16.373 -13.32,29.693 -29.689,29.693c-16.386,0 -29.714,-13.32 -29.714,-29.693Z" />
|
||||
</svg>
|
||||
</a>
|
||||
{{- end }}
|
||||
{{- if (cond ($custom) (in $ShareButtons "facebook") (true)) }}
|
||||
<a target="_blank" rel="noopener noreferrer" aria-label="share {{ $title | plainify }} on facebook"
|
||||
href="https://facebook.com/sharer/sharer.php?u={{ $pageurl }}">
|
||||
<svg version="1.1" viewBox="0 0 512 512" xml:space="preserve">
|
||||
<svg version="1.1" viewBox="0 0 512 512" xml:space="preserve" height="30px" width="30px" fill="currentColor">
|
||||
<path
|
||||
d="M449.446,0c34.525,0 62.554,28.03 62.554,62.554l0,386.892c0,34.524 -28.03,62.554 -62.554,62.554l-106.468,0l0,-192.915l66.6,0l12.672,-82.621l-79.272,0l0,-53.617c0,-22.603 11.073,-44.636 46.58,-44.636l36.042,0l0,-70.34c0,0 -32.71,-5.582 -63.982,-5.582c-65.288,0 -107.96,39.569 -107.96,111.204l0,62.971l-72.573,0l0,82.621l72.573,0l0,192.915l-191.104,0c-34.524,0 -62.554,-28.03 -62.554,-62.554l0,-386.892c0,-34.524 28.029,-62.554 62.554,-62.554l386.892,0Z" />
|
||||
</svg>
|
||||
</a>
|
||||
{{- end }}
|
||||
{{- if (cond ($custom) (in $ShareButtons "whatsapp") (true)) }}
|
||||
<a target="_blank" rel="noopener noreferrer" aria-label="share {{ $title | plainify }} on whatsapp"
|
||||
href="https://api.whatsapp.com/send?text={{ $title }}%20-%20{{ $pageurl }}">
|
||||
<svg version="1.1" viewBox="0 0 512 512" xml:space="preserve">
|
||||
<svg version="1.1" viewBox="0 0 512 512" xml:space="preserve" height="30px" width="30px" fill="currentColor">
|
||||
<path
|
||||
d="M449.446,0c34.525,0 62.554,28.03 62.554,62.554l0,386.892c0,34.524 -28.03,62.554 -62.554,62.554l-386.892,0c-34.524,0 -62.554,-28.03 -62.554,-62.554l0,-386.892c0,-34.524 28.029,-62.554 62.554,-62.554l386.892,0Zm-58.673,127.703c-33.842,-33.881 -78.847,-52.548 -126.798,-52.568c-98.799,0 -179.21,80.405 -179.249,179.234c-0.013,31.593 8.241,62.428 23.927,89.612l-25.429,92.884l95.021,-24.925c26.181,14.28 55.659,21.807 85.658,21.816l0.074,0c98.789,0 179.206,-80.413 179.247,-179.243c0.018,-47.895 -18.61,-92.93 -52.451,-126.81Zm-126.797,275.782l-0.06,0c-26.734,-0.01 -52.954,-7.193 -75.828,-20.767l-5.441,-3.229l-56.386,14.792l15.05,-54.977l-3.542,-5.637c-14.913,-23.72 -22.791,-51.136 -22.779,-79.287c0.033,-82.142 66.867,-148.971 149.046,-148.971c39.793,0.014 77.199,15.531 105.329,43.692c28.128,28.16 43.609,65.592 43.594,105.4c-0.034,82.149 -66.866,148.983 -148.983,148.984Zm81.721,-111.581c-4.479,-2.242 -26.499,-13.075 -30.604,-14.571c-4.105,-1.495 -7.091,-2.241 -10.077,2.241c-2.986,4.483 -11.569,14.572 -14.182,17.562c-2.612,2.988 -5.225,3.364 -9.703,1.12c-4.479,-2.241 -18.91,-6.97 -36.017,-22.23c-13.314,-11.876 -22.304,-26.542 -24.916,-31.026c-2.612,-4.484 -0.279,-6.908 1.963,-9.14c2.016,-2.007 4.48,-5.232 6.719,-7.847c2.24,-2.615 2.986,-4.484 4.479,-7.472c1.493,-2.99 0.747,-5.604 -0.374,-7.846c-1.119,-2.241 -10.077,-24.288 -13.809,-33.256c-3.635,-8.733 -7.327,-7.55 -10.077,-7.688c-2.609,-0.13 -5.598,-0.158 -8.583,-0.158c-2.986,0 -7.839,1.121 -11.944,5.604c-4.105,4.484 -15.675,15.32 -15.675,37.364c0,22.046 16.048,43.342 18.287,46.332c2.24,2.99 31.582,48.227 76.511,67.627c10.685,4.615 19.028,7.371 25.533,9.434c10.728,3.41 20.492,2.929 28.209,1.775c8.605,-1.285 26.499,-10.833 30.231,-21.295c3.732,-10.464 3.732,-19.431 2.612,-21.298c-1.119,-1.869 -4.105,-2.99 -8.583,-5.232Z" />
|
||||
</svg>
|
||||
</a>
|
||||
{{- end }}
|
||||
{{- if (cond ($custom) (in $ShareButtons "telegram") (true)) }}
|
||||
<a target="_blank" rel="noopener noreferrer" aria-label="share {{ $title | plainify }} on telegram"
|
||||
href="https://telegram.me/share/url?text={{ $title }}&url={{ $pageurl }}">
|
||||
<svg version="1.1" xml:space="preserve" viewBox="2 2 28 28">
|
||||
<svg version="1.1" xml:space="preserve" viewBox="2 2 28 28" height="30px" width="30px" fill="currentColor">
|
||||
<path
|
||||
d="M26.49,29.86H5.5a3.37,3.37,0,0,1-2.47-1,3.35,3.35,0,0,1-1-2.47V5.48A3.36,3.36,0,0,1,3,3,3.37,3.37,0,0,1,5.5,2h21A3.38,3.38,0,0,1,29,3a3.36,3.36,0,0,1,1,2.46V26.37a3.35,3.35,0,0,1-1,2.47A3.38,3.38,0,0,1,26.49,29.86Zm-5.38-6.71a.79.79,0,0,0,.85-.66L24.73,9.24a.55.55,0,0,0-.18-.46.62.62,0,0,0-.41-.17q-.08,0-16.53,6.11a.59.59,0,0,0-.41.59.57.57,0,0,0,.43.52l4,1.24,1.61,4.83a.62.62,0,0,0,.63.43.56.56,0,0,0,.4-.17L16.54,20l4.09,3A.9.9,0,0,0,21.11,23.15ZM13.8,20.71l-1.21-4q8.72-5.55,8.78-5.55c.15,0,.23,0,.23.16a.18.18,0,0,1,0,.06s-2.51,2.3-7.52,6.8Z" />
|
||||
</svg>
|
||||
</a>
|
||||
{{- end }}
|
||||
{{- if (cond ($custom) (in $ShareButtons "ycombinator") (true)) }}
|
||||
<a target="_blank" rel="noopener noreferrer" aria-label="share {{ $title | plainify }} on ycombinator"
|
||||
href="https://news.ycombinator.com/submitlink?t={{ $title }}&u={{ $pageurl }}">
|
||||
<svg version="1.1" xml:space="preserve" width="30px" height="30px" viewBox="0 0 512 512" fill="currentColor"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape">
|
||||
<path
|
||||
d="M449.446 0C483.971 0 512 28.03 512 62.554L512 449.446C512 483.97 483.97 512 449.446 512L62.554 512C28.03 512 0 483.97 0 449.446L0 62.554C0 28.03 28.029 0 62.554 0L449.446 0ZM183.8767 87.9921H121.8427L230.6673 292.4508V424.0079H281.3328V292.4508L390.1575 87.9921H328.1233L256 238.2489z" />
|
||||
</svg>
|
||||
</a>
|
||||
{{- end }}
|
||||
</div>
|
||||
|
@ -1,6 +1,6 @@
|
||||
<div class="social-icons">
|
||||
{{- range . }}
|
||||
<a href="{{ trim .url " " }}" target="_blank" rel="noopener noreferrer me" title="{{ .name | title }}">
|
||||
<a href="{{ trim .url " " | safeURL }}" target="_blank" rel="noopener noreferrer me" title="{{ (.title | default .name) | title }}">
|
||||
{{ partial "svg.html" . }}
|
||||
</a>
|
||||
{{- end }}
|
||||
|
File diff suppressed because one or more lines are too long
@ -1,5 +1,5 @@
|
||||
<meta property="og:title" content="{{ .Title }}" />
|
||||
<meta property="og:description" content="{{ with .Description }}{{ . }}{{ else }}{{if .IsPage}}{{ .Summary }}{{ else }}{{ with .Site.Params.description }}{{ . }}{{ end }}{{ end }}{{ end }}" />
|
||||
<meta property="og:description" content="{{ with .Description }}{{ . }}{{ else }}{{if .IsPage}}{{ .Summary }}{{ else }}{{ with site.Params.description }}{{ . }}{{ end }}{{ end }}{{ end }}" />
|
||||
<meta property="og:type" content="{{ if .IsPage }}article{{ else }}website{{ end }}" />
|
||||
<meta property="og:url" content="{{ .Permalink }}" />
|
||||
{{- if .Params.cover.image -}}
|
||||
@ -19,7 +19,7 @@
|
||||
{{- with $featured -}}
|
||||
<meta property="og:image" content="{{ $featured.Permalink }}"/>
|
||||
{{- else -}}
|
||||
{{- with $.Site.Params.images }}<meta property="og:image" content="{{ index . 0 | absURL }}"/>{{ end -}}
|
||||
{{- with site.Params.images }}<meta property="og:image" content="{{ index . 0 | absURL }}"/>{{ end -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- end }}
|
||||
@ -27,20 +27,20 @@
|
||||
{{- if .IsPage }}
|
||||
{{- $iso8601 := "2006-01-02T15:04:05-07:00" -}}
|
||||
<meta property="article:section" content="{{ .Section }}" />
|
||||
{{ with .PublishDate }}<meta property="article:published_time" content="{{ .Format $iso8601 }}" />{{ end }}
|
||||
{{ with .Lastmod }}<meta property="article:modified_time" content="{{ .Format $iso8601 }}" />{{ end }}
|
||||
{{ with .PublishDate }}<meta property="article:published_time" {{ .Format $iso8601 | printf "content=%q" | safeHTMLAttr }} />{{ end }}
|
||||
{{ with .Lastmod }}<meta property="article:modified_time" {{ .Format $iso8601 | printf "content=%q" | safeHTMLAttr }} />{{ end }}
|
||||
{{- end -}}
|
||||
|
||||
{{- with .Params.audio }}<meta property="og:audio" content="{{ . }}" />{{ end }}
|
||||
{{- with .Params.locale }}<meta property="og:locale" content="{{ . }}" />{{ end }}
|
||||
{{- with .Site.Params.title }}<meta property="og:site_name" content="{{ . }}" />{{ end }}
|
||||
{{- with site.Params.title }}<meta property="og:site_name" content="{{ . }}" />{{ end }}
|
||||
{{- with .Params.videos }}{{- range . }}
|
||||
<meta property="og:video" content="{{ . | absURL }}" />
|
||||
{{ end }}{{ end }}
|
||||
|
||||
{{- /* If it is part of a series, link to related articles */}}
|
||||
{{- $permalink := .Permalink }}
|
||||
{{- $siteSeries := .Site.Taxonomies.series }}
|
||||
{{- $siteSeries := site.Taxonomies.series }}
|
||||
{{ with .Params.series }}{{- range $name := . }}
|
||||
{{- $series := index $siteSeries ($name | urlize) }}
|
||||
{{- range $page := first 6 $series.Pages }}
|
||||
@ -49,4 +49,4 @@
|
||||
{{ end }}{{ end }}
|
||||
|
||||
{{- /* Facebook Page Admin ID for Domain Insights */}}
|
||||
{{- with .Site.Social.facebook_admin }}<meta property="fb:admins" content="{{ . }}" />{{ end }}
|
||||
{{- with site.Social.facebook_admin }}<meta property="fb:admins" content="{{ . }}" />{{ end }}
|
||||
|
@ -2,23 +2,23 @@
|
||||
<script type="application/ld+json">
|
||||
{
|
||||
"@context": "https://schema.org",
|
||||
"@type": "{{- ( .Site.Params.schema.publisherType | default "Organization") | title -}}",
|
||||
"name": {{ .Site.Title }},
|
||||
"url": {{ .Site.BaseURL }},
|
||||
"description": {{ .Site.Params.description | plainify | truncate 180 | safeHTML }},
|
||||
"thumbnailUrl": {{ .Site.Params.assets.favicon | default "favicon.ico" | absURL }},
|
||||
"@type": "{{- ( site.Params.schema.publisherType | default "Organization") | title -}}",
|
||||
"name": {{ site.Title }},
|
||||
"url": {{ site.BaseURL }},
|
||||
"description": {{ site.Params.description | plainify | truncate 180 | safeHTML }},
|
||||
"thumbnailUrl": {{ site.Params.assets.favicon | default "favicon.ico" | absURL }},
|
||||
"sameAs": [
|
||||
{{- if .Site.Params.schema.sameAs }}
|
||||
{{ range $i, $e := .Site.Params.schema.sameAs }}{{ if $i }}, {{ end }}{{ trim $e " " }}{{ end }}
|
||||
{{- if site.Params.schema.sameAs }}
|
||||
{{ range $i, $e := site.Params.schema.sameAs }}{{ if $i }}, {{ end }}{{ trim $e " " }}{{ end }}
|
||||
{{- else}}
|
||||
{{ range $i, $e := .Site.Params.SocialIcons }}{{ if $i }}, {{ end }}{{ trim $e.url " " }}{{ end }}
|
||||
{{ range $i, $e := site.Params.SocialIcons }}{{ if $i }}, {{ end }}{{ trim $e.url " " | safeURL }}{{ end }}
|
||||
{{- end}}
|
||||
]
|
||||
}
|
||||
</script>
|
||||
{{- else if (or .IsPage .IsSection) }}
|
||||
{{/* BreadcrumbList */}}
|
||||
{{- $url := replace .Parent.Permalink ( printf "%s" .Site.BaseURL) "" }}
|
||||
{{- $url := replace .Parent.Permalink ( printf "%s" site.BaseURL) "" }}
|
||||
{{- $lang_url := strings.TrimPrefix ( printf "%s/" .Lang) $url }}
|
||||
{{- $bc_list := (split $lang_url "/")}}
|
||||
|
||||
@ -31,7 +31,7 @@
|
||||
{{- range $index, $element := $bc_list }}
|
||||
|
||||
{{- $scratch.Add "path" (printf "%s/" $element ) | safeJS }}
|
||||
{{- $bc_pg := $.Site.GetPage ($scratch.Get "path") -}}
|
||||
{{- $bc_pg := site.GetPage ($scratch.Get "path") -}}
|
||||
|
||||
{{- if (and ($bc_pg) (gt (len . ) 0))}}
|
||||
{{- if (and $index)}}, {{end }}
|
||||
@ -83,7 +83,7 @@
|
||||
{{- end -}}
|
||||
"datePublished": {{ .PublishDate }},
|
||||
"dateModified": {{ .Lastmod }},
|
||||
{{- with (.Params.author | default .Site.Params.author) }}
|
||||
{{- with (.Params.author | default site.Params.author) }}
|
||||
"author":
|
||||
{{- if (or (eq (printf "%T" .) "[]string") (eq (printf "%T" .) "[]interface {}")) -}}
|
||||
[{{- range $i, $v := . -}}
|
||||
@ -105,11 +105,11 @@
|
||||
"@id": {{ .Permalink | safeHTML }}
|
||||
},
|
||||
"publisher": {
|
||||
"@type": "{{- ( .Site.Params.schema.publisherType | default "Organization") | title -}}",
|
||||
"name": {{ .Site.Title }},
|
||||
"@type": "{{- ( site.Params.schema.publisherType | default "Organization") | title -}}",
|
||||
"name": {{ site.Title }},
|
||||
"logo": {
|
||||
"@type": "ImageObject",
|
||||
"url": {{ .Site.Params.assets.favicon | default "favicon.ico" | absURL }}
|
||||
"url": {{ site.Params.assets.favicon | default "favicon.ico" | absURL }}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -17,7 +17,7 @@
|
||||
<meta name="twitter:card" content="summary_large_image"/>
|
||||
<meta name="twitter:image" content="{{ $featured.Permalink }}"/>
|
||||
{{- else -}}
|
||||
{{- with $.Site.Params.images -}}
|
||||
{{- with site.Params.images -}}
|
||||
<meta name="twitter:card" content="summary_large_image"/>
|
||||
<meta name="twitter:image" content="{{ index . 0 | absURL }}"/>
|
||||
{{ else -}}
|
||||
@ -27,7 +27,7 @@
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
<meta name="twitter:title" content="{{ .Title }}"/>
|
||||
<meta name="twitter:description" content="{{ with .Description }}{{ . }}{{ else }}{{if .IsPage}}{{ .Summary }}{{ else }}{{ with .Site.Params.description }}{{ . }}{{ end }}{{ end }}{{ end -}}"/>
|
||||
{{ with .Site.Social.twitter -}}
|
||||
<meta name="twitter:description" content="{{ with .Description }}{{ . }}{{ else }}{{if .IsPage}}{{ .Summary }}{{ else }}{{ with site.Params.description }}{{ . }}{{ end }}{{ end }}{{ end -}}"/>
|
||||
{{ with site.Social.twitter -}}
|
||||
<meta name="twitter:site" content="@{{ . }}"/>
|
||||
{{ end -}}
|
||||
|
@ -1,13 +1,16 @@
|
||||
{{- $headers := findRE "<h[1-6].*?>(.|\n])+?</h[1-6]>" .Content -}}
|
||||
{{- $has_headers := ge (len $headers) 1 -}}
|
||||
{{- if $has_headers -}}
|
||||
<div class="toc">
|
||||
<details {{if (.Param "TocOpen") }} open{{ end }}>
|
||||
<summary accesskey="c" title="(Alt + C)">
|
||||
<div class="details">{{- i18n "toc" | default "Table of Contents" }}</div>
|
||||
<span class="details">{{- i18n "toc" | default "Table of Contents" }}</span>
|
||||
</summary>
|
||||
<div class="inner">
|
||||
{{- $headers := findRE "<h[1-6].*?>(.|\n])+?</h[1-6]>" .Content -}}
|
||||
{{- $has_headers := ge (len $headers) 1 -}}
|
||||
{{- if $has_headers -}}
|
||||
|
||||
<div class="inner">
|
||||
{{- if (.Param "UseHugoToc") }}
|
||||
{{- .TableOfContents -}}
|
||||
{{- else }}
|
||||
{{- $largest := 6 -}}
|
||||
{{- range $headers -}}
|
||||
{{- $headerLevel := index (findRE "[1-6]" . 1) 0 -}}
|
||||
@ -91,3 +94,4 @@
|
||||
</div>
|
||||
</details>
|
||||
</div>
|
||||
{{- end }}
|
||||
|
@ -1,13 +1,13 @@
|
||||
{{- if .IsTranslated -}}
|
||||
{{- if (ne .Layout "search") }}
|
||||
{{- if or .Params.author $.Site.Params.author (.Param "ShowReadingTime") (not .Date.IsZero) }} | {{- end -}}
|
||||
{{- if or .Params.author site.Params.author (.Param "ShowReadingTime") (not .Date.IsZero) }} | {{- end -}}
|
||||
{{- end }}
|
||||
{{- i18n "translations" | default "Translations" }}:
|
||||
<ul class="i18n_list">
|
||||
{{- i18n "translations" | default "Translations" }}:
|
||||
{{- range .Translations }}
|
||||
<li>
|
||||
<a href="{{ .Permalink }}">
|
||||
{{- if (and $.Site.Params.displayFullLangName (.Language.LanguageName)) }}
|
||||
{{- if (and site.Params.displayFullLangName (.Language.LanguageName)) }}
|
||||
{{- .Language.LanguageName | emojify -}}
|
||||
{{- else }}
|
||||
{{- .Lang | title -}}
|
||||
|
@ -1,5 +1,5 @@
|
||||
User-agent: *
|
||||
{{- if hugo.IsProduction | or (eq .Site.Params.env "production") }}
|
||||
{{- if hugo.IsProduction | or (eq site.Params.env "production") }}
|
||||
Disallow:
|
||||
{{- else }}
|
||||
Disallow: /
|
||||
|
@ -1,72 +0,0 @@
|
||||
|
||||
<!-- Author: Parsia Hakimian https://github.com/parsiya/Hugo-Shortcodes -->
|
||||
<!-- port of Octopress blockquote plugin http://octopress.org/docs/plugins/blockquote/ to Hugo
|
||||
see readme for usage -->
|
||||
|
||||
<!-- reset scratch variables at the start -->
|
||||
{{ $.Scratch.Set "bl_author" false }}
|
||||
{{ $.Scratch.Set "bl_source" false }}
|
||||
{{ $.Scratch.Set "bl_link" false }}
|
||||
{{ $.Scratch.Set "bl_title" false }}
|
||||
|
||||
{{ if .IsNamedParams }}
|
||||
{{ $.Scratch.Set "bl_author" (.Get "author") }}
|
||||
{{ $.Scratch.Set "bl_source" (.Get "source") }}
|
||||
{{ $.Scratch.Set "bl_link" (.Get "link") }}
|
||||
{{ $.Scratch.Set "bl_title" (.Get "title") }}
|
||||
{{ else }}
|
||||
<!-- for the positional version if any -->
|
||||
{{ end }}
|
||||
|
||||
<!-- if title is not set explicitly then we need to beautify the link
|
||||
if length of link is more than 32 chars, we will cut it off by 32 and
|
||||
then drop everything after the last / if any and put it in into title -->
|
||||
|
||||
{{ with $.Scratch.Get "bl_title" }}
|
||||
<!-- do nothing -->
|
||||
{{ else }}
|
||||
{{ with $.Scratch.Get "bl_link" }} <!-- if link is given -->
|
||||
{{ range last 1 (split ($.Scratch.Get "bl_link" ) "://") }} <!-- split by :// and then only take the items after it to remove protocol:// -->
|
||||
{{ $.Scratch.Set "title_without_protocol" . }}
|
||||
{{ end }}
|
||||
{{ range last 1 (split ($.Scratch.Get "title_without_protocol" ) "www.") }} <!-- also remove the www. at the start if any. we are using a second split because all URLS may not start with it -->
|
||||
{{ $.Scratch.Set "title_without_protocol" . }}
|
||||
{{ end }}
|
||||
{{ $.Scratch.Set "bl_title" ($.Scratch.Get "title_without_protocol") }}
|
||||
|
||||
<!-- if link is longer than 32 bytes we should trim it -->
|
||||
{{ if (gt (len ($.Scratch.Get "title_without_protocol") ) 32) }}
|
||||
{{ $title := (slicestr ($.Scratch.Get "title_without_protocol") 0 32) }} <!-- get the first 32 characters of title_without_protocol -->
|
||||
{{ $split_by_fw_slash := split $title "/" }} <!-- now split on / because we want to stop after the last forward slash -->
|
||||
{{ $count := (sub (len $split_by_fw_slash) 1) }} <!-- we want everything but the last part so we adjust the count accordingly -->
|
||||
|
||||
{{ $.Scratch.Set "tempstring" "" }} <!-- temp variable to hold the concatinated string -->
|
||||
{{ range first $count $split_by_fw_slash }} <!-- loop through all parts except last and concat them (add / between halves) -->
|
||||
{{ $.Scratch.Set "tempstring" ( . | printf "%s%s/" ($.Scratch.Get "tempstring") | printf "%s" ) }}
|
||||
{{ end }}
|
||||
{{ $.Scratch.Set "bl_title" ( printf "%s..." ($.Scratch.Get "tempstring") | printf "%s" ) }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
|
||||
<blockquote>
|
||||
<p>{{ .Inner | markdownify }}</p>
|
||||
<footer>
|
||||
<strong>{{ with $.Scratch.Get "bl_author" }}{{ . }}{{ end }}</strong>
|
||||
{{ with $.Scratch.Get "bl_source" }}
|
||||
<cite>{{ . }}</cite>
|
||||
{{ else }}
|
||||
{{ with $.Scratch.Get "bl_link" }}
|
||||
<cite>
|
||||
<a href="{{ . }}" title="{{ . }}">{{ $.Scratch.Get "bl_title" }}</a> <!-- can't have new lines here -->
|
||||
</cite>
|
||||
{{ else }}
|
||||
{{ with $.Scratch.Get "bl_title" }}
|
||||
<cite>
|
||||
{{ $.Scratch.Get "bl_title" }}</a>
|
||||
</cite>
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
</footer>
|
||||
</blockquote>
|
@ -1,12 +1,8 @@
|
||||
{{ if .Get "content" }}
|
||||
{{ if .Get "summary" }}
|
||||
{{ else }}
|
||||
{{ warnf "missing value for param 'summary': %s" .Position }}
|
||||
{{ end }}
|
||||
{{ else }}
|
||||
{{ errorf "missing value for param 'content': %s" .Position }}
|
||||
{{ end }}
|
||||
<p><details {{ if (eq (.Get "openByDefault") true) }} open=true {{ end }}>
|
||||
<summary markdown="span">{{ .Get "summary" | markdownify }}</summary>
|
||||
{{ .Get "content" | markdownify }}
|
||||
{{ .Inner | markdownify }}
|
||||
</details></p>
|
||||
|
5
layouts/shortcodes/inTextImg.html
Normal file
5
layouts/shortcodes/inTextImg.html
Normal file
@ -0,0 +1,5 @@
|
||||
{{- $Img := (.Get "url") }}
|
||||
{{- $height := (.Get "height") }}
|
||||
{{- $alt := (.Get "alt") }}
|
||||
|
||||
<img class="in-text" height="{{ $height | default `15` }}" src="{{$Img}}" alt="{{$alt}}">
|
@ -1,2 +1,2 @@
|
||||
<!-- raw html -->
|
||||
{{.Inner}}
|
||||
{{- .Inner -}}
|
@ -37,7 +37,7 @@ features = [
|
||||
"scroll-to-top",
|
||||
"search"
|
||||
]
|
||||
min_version = "0.82.0"
|
||||
min_version = "0.97.1"
|
||||
|
||||
[author]
|
||||
name = "Aditya Telange"
|
||||
|
Loading…
Reference in New Issue
Block a user