mirror of
https://github.com/hugo-fixit/FixIt.git
synced 2026-08-31 18:52:40 +00:00
Compare commits
187 Commits
v0.3.12
...
v0.4.0-alpha
| Author | SHA1 | Date | |
|---|---|---|---|
| 193fd1933d | |||
| c9a3a6f899 | |||
| c9e01dd090 | |||
| 9293ee27f3 | |||
| 92d0a857c1 | |||
| 3e8bdfd8f9 | |||
| d9043280fe | |||
| 3408f1596a | |||
| 89f9373bae | |||
| fb4f1f7389 | |||
| 0ce74d82f8 | |||
| a5614505bc | |||
| 6123eaac2c | |||
| ad092e7f72 | |||
| b2e6f70a81 | |||
| c4a1c79972 | |||
| 87ca54d024 | |||
| cfe1d7a601 | |||
| 7788eded58 | |||
| 6a1ed440df | |||
| 5b0a27125c | |||
| 2cb4bb2966 | |||
| 74f999995f | |||
| a85a665530 | |||
| 35413d613f | |||
| d1d3ed2954 | |||
| 9c8c0b6dee | |||
| 0cf0d4f4e7 | |||
| e663ebbd45 | |||
| 6eb582fef7 | |||
| 3053d889e2 | |||
| f7a9c52aac | |||
| 78971cdedb | |||
| d41e53bba4 | |||
| cb0d63717b | |||
| b45ab833d5 | |||
| 450e774d3c | |||
| a93f67762f | |||
| c21914dd49 | |||
| 1360438540 | |||
| 669f836488 | |||
| e62c0f2409 | |||
| de72a8c802 | |||
| f5b867d717 | |||
| 5ba4a8145b | |||
| 80e4d07294 | |||
| c2dc17e9e0 | |||
| b7edbf3e49 | |||
| adeecfb69d | |||
| 64378cb9c0 | |||
| 12c64431cb | |||
| 142e933fa2 | |||
| 1a43881170 | |||
| b0170f55f0 | |||
| 40c5dcb8c2 | |||
| ed14126001 | |||
| 22c3353dde | |||
| 2b936cb6ad | |||
| e2afa113be | |||
| 6c7145c311 | |||
| 8212d6fd02 | |||
| ad01016092 | |||
| 7d41c8af85 | |||
| 3f66669581 | |||
| e0523a15d1 | |||
| 8b4021295f | |||
| cf04ad3593 | |||
| 015610b7e8 | |||
| d6bd1ce697 | |||
| 1739d6937b | |||
| 2f564429de | |||
| 07816709b5 | |||
| b124218350 | |||
| a58d15e140 | |||
| 409d6c8894 | |||
| 53149ad6d2 | |||
| 1e59a684a6 | |||
| 30a67c4b52 | |||
| 469af95f10 | |||
| 21750077ba | |||
| 54675a61d5 | |||
| 72baedd5f5 | |||
| 03b3bfbd09 | |||
| 33a8861ec6 | |||
| d3cb08f56f | |||
| f537b808cf | |||
| 45ce8679ad | |||
| 036cbb415b | |||
| d816b1c836 | |||
| 2e96060d41 | |||
| 10b46284a1 | |||
| 3e210af76a | |||
| fcd72c9d66 | |||
| 68b028e9b6 | |||
| e2eeaf9632 | |||
| 91f3ad7471 | |||
| 041d5e2517 | |||
| 1d09297784 | |||
| 5931bf3786 | |||
| 0e7dc99319 | |||
| 9614598f07 | |||
| 637c4641cb | |||
| d2c4d7c18f | |||
| 99f51de9f9 | |||
| 9faf1ac1a8 | |||
| 393a1393c3 | |||
| 5e587a13a2 | |||
| 5712ea5a0d | |||
| a30c683582 | |||
| ac4418e24e | |||
| c3d63475b8 | |||
| c0115f6d94 | |||
| fda3fa66ef | |||
| 83d25c36b8 | |||
| d7788e962f | |||
| 582b96b8ef | |||
| f66dc32ec2 | |||
| f0af975663 | |||
| 54298bed8c | |||
| c06afaba20 | |||
| 4c06eeffac | |||
| b77d209136 | |||
| decb259ee1 | |||
| ec9a544f04 | |||
| 03db8d32a2 | |||
| eca4fa4057 | |||
| 46edabd81a | |||
| 6a04876258 | |||
| 4886c05395 | |||
| 168f1babc3 | |||
| 38b681cdfe | |||
| fb80b8b3dc | |||
| f1ba78efa1 | |||
| 3c96081689 | |||
| fd000ad6b3 | |||
| 35cc57e64d | |||
| 453ed31df0 | |||
| 0af0b136ba | |||
| a073b0e9f2 | |||
| 9913731705 | |||
| aa1709fbdd | |||
| fcb0f1efd5 | |||
| 59ee34b710 | |||
| 5518053a26 | |||
| 2a0821f531 | |||
| ad45d89098 | |||
| 261f7b66ef | |||
| fd15415b9a | |||
| ec0663668e | |||
| 712cf2a868 | |||
| 41014f7f5b | |||
| 85d91b8527 | |||
| 3a5d0dee65 | |||
| f98ca2197a | |||
| db77d49afb | |||
| 4df8fd023e | |||
| 8fa3538725 | |||
| 867984fda2 | |||
| 8d10880b35 | |||
| 894c512b1d | |||
| 64f954ccf7 | |||
| c08671dedf | |||
| 28759d5020 | |||
| 0c0fb03a8d | |||
| 39ccc51610 | |||
| 581466fd25 | |||
| 9471b94b09 | |||
| c974c905e5 | |||
| 3edabbef89 | |||
| f738e4a926 | |||
| 12cc5f7e60 | |||
| 39a48f35f0 | |||
| f7670a714b | |||
| cf71f1e289 | |||
| bd40c85586 | |||
| 19ceeb2e99 | |||
| 95436c11ac | |||
| b66fd37057 | |||
| 58cfa55e65 | |||
| 9c440df3d0 | |||
| 53f221b77a | |||
| 729c2c394a | |||
| 566a87c791 | |||
| e9edbba217 | |||
| 9e9bc9effd | |||
| b44555d403 | |||
| ed8cf316a5 |
+3
-1
@@ -1 +1,3 @@
|
||||
assets/lib/**/* linguist-vendored
|
||||
assets/lib/**/* linguist-vendored
|
||||
*.toml linguist-detectable
|
||||
*.md linguist-detectable
|
||||
|
||||
@@ -1,27 +0,0 @@
|
||||
# Set to true to add reviewers to PRs
|
||||
addReviewers: true
|
||||
|
||||
# Set to 'author' to add PR's author as a assignee
|
||||
addAssignees: author
|
||||
|
||||
# A list of reviewers to be added to PRs (GitHub user name)
|
||||
reviewers:
|
||||
- Lruihao
|
||||
|
||||
# A number of reviewers added to the PR
|
||||
# Set 0 to add all the reviewers (default: 0)
|
||||
numberOfReviewers: 1
|
||||
|
||||
# A list of assignees, overrides reviewers if set
|
||||
assignees:
|
||||
- Lruihao
|
||||
|
||||
# A number of assignees to add to the PRs
|
||||
# Set to 0 to add all of the assignees.
|
||||
# Uses numberOfReviewers if unset.
|
||||
numberOfAssignees: 0
|
||||
|
||||
# A list of keywords to be skipped the process if PR's title include it
|
||||
skipKeywords:
|
||||
- wip
|
||||
- deps-dev
|
||||
@@ -1,14 +0,0 @@
|
||||
name: Auto Assign
|
||||
on:
|
||||
issues:
|
||||
types: [opened]
|
||||
pull_request_target:
|
||||
types: [opened]
|
||||
jobs:
|
||||
run:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: wow-actions/auto-assign@v3
|
||||
with:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
CONFIG_FILE: .github/configs/auto-assign.yml
|
||||
@@ -1,7 +1,7 @@
|
||||
name: Hugo build check
|
||||
on:
|
||||
pull_request:
|
||||
branches: [ master ]
|
||||
branches: [ main ]
|
||||
workflow_dispatch:
|
||||
jobs:
|
||||
Actions-Hugo-Check:
|
||||
@@ -15,7 +15,7 @@ jobs:
|
||||
- name: Setup Hugo
|
||||
uses: peaceiris/actions-hugo@v3
|
||||
with:
|
||||
hugo-version: latest
|
||||
hugo-version: ${{ vars.HUGO_VERSION || 'latest' }}
|
||||
extended: true
|
||||
- name: Build Hugo static files
|
||||
run: hugo -v --source=demo --gc --minify
|
||||
run: hugo --source=demo --gc --minify --logLevel info
|
||||
|
||||
@@ -14,10 +14,10 @@ name: "CodeQL"
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
- main
|
||||
pull_request:
|
||||
branches:
|
||||
- master
|
||||
- main
|
||||
schedule:
|
||||
- cron: "30 18 * * 5"
|
||||
|
||||
|
||||
@@ -0,0 +1,40 @@
|
||||
name: Generate hugo-fixit component list
|
||||
on:
|
||||
schedule: # Run workflow automatically
|
||||
- cron: '0 0 * * *' # Runs every day at 00:00 UTC
|
||||
workflow_dispatch: # Run workflow manually (without waiting for the cron to be called), through the GitHub Actions Workflow page directly
|
||||
permissions:
|
||||
contents: write # To write the generated contents to the readme
|
||||
pull-requests: write # To create a pull request
|
||||
|
||||
jobs:
|
||||
generate-component-list:
|
||||
if: github.repository == 'hugo-fixit/FixIt'
|
||||
name: Update this repo's README with the list of hugo-fixit theme components
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
- name: Generate hugo-fixit component list
|
||||
uses: hugo-fixit/action-component-list@v1
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
with:
|
||||
comment_tag_name: HUGO_FIXIT_COMPONENTS
|
||||
readme_path: 'README.md,README.zh-cn.md'
|
||||
template: "- [{$repo.name}]({$repo.html_url})\\\n {$repo.description}"
|
||||
# - name: Commit changes
|
||||
# uses: stefanzweifel/git-auto-commit-action@v5
|
||||
# with:
|
||||
# commit_message: ':memo: Docs: update hugo-fixit component list'
|
||||
# commit_author: 'github-actions[bot] <github-actions[bot]@users.noreply.github.com>'
|
||||
- name: Create Pull Request
|
||||
uses: peter-evans/create-pull-request@v7
|
||||
with:
|
||||
title: 'Update hugo-fixit component list'
|
||||
commit-message: ':memo: Docs: update hugo-fixit component list'
|
||||
body: 'This PR updates the hugo-fixit component list in the README.'
|
||||
base: main
|
||||
branch: update-component-list
|
||||
labels: documentation
|
||||
reviewers: Lruihao
|
||||
@@ -4,7 +4,7 @@ name: Release for new tag
|
||||
|
||||
# Controls when the action will run.
|
||||
on:
|
||||
# Triggers the workflow on push or pull request events but only for the master branch
|
||||
# Triggers the workflow on push or pull request events but only for the main branch
|
||||
push:
|
||||
tags:
|
||||
- 'v*.*.*'
|
||||
@@ -36,6 +36,7 @@ jobs:
|
||||
run: |
|
||||
npm install
|
||||
npm run release -- --starting-version ${{ github.ref_name }}
|
||||
sed -i '1,4d' CHANGELOG.md
|
||||
|
||||
- name: GitHub Release
|
||||
uses: softprops/action-gh-release@v2
|
||||
|
||||
+3
-1
@@ -10,7 +10,9 @@ jsconfig.json
|
||||
node_modules/
|
||||
|
||||
# VSCode
|
||||
.vscode
|
||||
.vscode/*
|
||||
!.vscode/extensions.json
|
||||
!.vscode/settings.json
|
||||
|
||||
# OS Files
|
||||
## Windows
|
||||
|
||||
Vendored
+7
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"recommendations": [
|
||||
"budparr.language-hugo-vscode",
|
||||
"kaellarkin.hugo-shortcode-syntax",
|
||||
"eliostruyf.vscode-hugo-themer"
|
||||
]
|
||||
}
|
||||
Vendored
+9
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"todo-tree.tree.scanMode": "workspace only",
|
||||
"explorer.fileNesting.enabled": true,
|
||||
"explorer.fileNesting.patterns": {
|
||||
"tsconfig.json": "tsconfig.*.json, env.d.ts",
|
||||
"vite.config.*": "jsconfig*, vitest.config.*, cypress.config.*, playwright.config.*",
|
||||
"package.json": "package-lock.json, pnpm*, .yarnrc*, yarn*, .eslint*, eslint*, .oxlint*, oxlint*, .prettier*, prettier*, .editorconfig"
|
||||
}
|
||||
}
|
||||
+12
-14
@@ -15,7 +15,7 @@ git clone https://github.com/hugo-fixit/FixIt.git && cd FixIt
|
||||
Then, install the dev dependencies.
|
||||
|
||||
```bash
|
||||
npm install
|
||||
pnpm install
|
||||
```
|
||||
|
||||
And now you are ready to go!
|
||||
@@ -24,15 +24,15 @@ Here are some useful commands.
|
||||
|
||||
```bash
|
||||
# run a local debugging server with watch
|
||||
npm run server
|
||||
pnpm server
|
||||
# run a local debugging server with watch in production environment
|
||||
npm run server:production
|
||||
pnpm server:production
|
||||
```
|
||||
|
||||
If you want to do docs-related theme changes, the simplest way is to have both `FixIt` and `fixit-docs` cloned as sibling directories, and then run:
|
||||
|
||||
```bash
|
||||
npm run server:docs
|
||||
pnpm server:docs
|
||||
```
|
||||
|
||||
Finally, create a new pull request at <https://github.com/hugo-fixit/FixIt/pulls> to submit your contribution 🎉
|
||||
@@ -41,19 +41,17 @@ Finally, create a new pull request at <https://github.com/hugo-fixit/FixIt/pulls
|
||||
|
||||
### Branches
|
||||
|
||||
| Branch | Description |
|
||||
| :-- | :-- |
|
||||
| master | _The branch open to the public and release versions_ |
|
||||
| dev | _The development branch of the next version_ |
|
||||
| single feature | _The branch to enhancements or fixes_ |
|
||||
| Branch | Description |
|
||||
| :------------- | :----------------------------------------------------- |
|
||||
| main | _The development branch, may contain unstable updates_ |
|
||||
| single feature | _The branch to enhancements or fixes_ |
|
||||
|
||||
### Merge events
|
||||
|
||||
| event | merge |
|
||||
| :-- | :-- |
|
||||
| release | **dev => master:** `--rebase` |
|
||||
| PR | **others:master => master:** `--rebase` |
|
||||
| single feature| **feature branch => dev/master:** `--merge` |
|
||||
| event | merge |
|
||||
| :------------- | :------------------------------------ |
|
||||
| PR | **others:main => main:** `--rebase` |
|
||||
| single feature | **feature branch => main:** `--merge` |
|
||||
|
||||
### Commit message
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@ The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2018 LIUZHICHAO.COM
|
||||
Copyright (c) 2019-2020 DILLONZQ.COM
|
||||
Copyright (c) 2021-2024 Lruihao (https://lruihao.cn)
|
||||
Copyright (c) 2021-2025 Lruihao (https://lruihao.cn)
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||
this software and associated documentation files (the "Software"), to deal in
|
||||
|
||||
@@ -1,46 +1,77 @@
|
||||
<!-- markdownlint-disable-file MD033 MD041 -->
|
||||

|
||||
|
||||
<div align="center">English | <a href="README.zh-cn.md">简体中文</a></div>
|
||||
<div align="center" class="ignore">
|
||||
<p>
|
||||
FixIt is a clean, elegant but advanced blog theme for <a href="https://gohugo.io/">Hugo</a>.<br>
|
||||
<em><sub>Don't forget to leave a ⭐️ if you like this theme, thanks!</sub></em>
|
||||
</p>
|
||||
English |
|
||||
<a href="/README.zh-cn.md">简体中文</a> |
|
||||
<a href="https://fixit.lruihao.cn/zh-cn/ecosystem/hugo-fixit/fixit/?lang=chinese_traditional">繁體中文</a> |
|
||||
<a href="https://fixit.lruihao.cn/ecosystem/hugo-fixit/fixit/?lang=french">Français</a> |
|
||||
<a href="https://fixit.lruihao.cn/ecosystem/hugo-fixit/fixit/?lang=russian">Русский язык</a> |
|
||||
<a href="https://fixit.lruihao.cn/ecosystem/hugo-fixit/fixit/?lang=spanish">Español</a> |
|
||||
<a href="https://fixit.lruihao.cn/ecosystem/hugo-fixit/fixit/?lang=hindi">हिन्दी</a> |
|
||||
<a href="https://fixit.lruihao.cn/ecosystem/hugo-fixit/fixit/?lang=german">deutsch</a> |
|
||||
<a href="https://fixit.lruihao.cn/ecosystem/hugo-fixit/fixit/?lang=korean">한국어</a> |
|
||||
<a href="https://fixit.lruihao.cn/ecosystem/hugo-fixit/fixit/?lang=japanese">しろうと</a>
|
||||
</div>
|
||||
|
||||
<a title="FixIt website" href="https://fixit.lruihao.cn"><img align="right" alt="FixIt logo" width="70" height="70" src="https://avatars.githubusercontent.com/u/110414864?s=200&v=4"></a>
|
||||
|
||||
# FixIt
|
||||
|
||||
> It is based on the original [LoveIt](https://github.com/dillonzq/LoveIt) Theme, [KeepIt](https://github.com/Fastbyte01/KeepIt) Theme and [LeaveIt](https://github.com/liuzc/LeaveIt) Theme.
|
||||
|
||||
[](https://github.com/hugo-fixit/FixIt/releases)
|
||||
[](https://gohugo.io/)
|
||||
[](https://gohugo.io/)
|
||||
[](/LICENSE)
|
||||
[](https://github.com/hugo-fixit/FixIt)
|
||||
|
||||
> «FixIt» is a **clean**, **elegant** but **advanced** blog theme for [Hugo](https://gohugo.io/).
|
||||
|
||||
It is based on the original [LoveIt](https://github.com/dillonzq/LoveIt) Theme, [KeepIt](https://github.com/Fastbyte01/KeepIt) Theme and [LeaveIt](https://github.com/liuzc/LeaveIt) Theme.
|
||||
|
||||
## Live Preview
|
||||
|
||||
<p align="center">
|
||||
💟 <a href="https://fixit.lruihao.cn">Production</a> | ❇️ <a href="https://pre.fixit.lruihao.cn">Preview</a> | 🚼 <a href="https://demo.fixit.lruihao.cn">Demo</a> | 🆕 <a href="https://hugo-fixit.github.io/hugo-fixit-starter/">Starter</a>
|
||||
<br>
|
||||
<br>
|
||||
More «FixIt» examples <a href="https://fixit.lruihao.cn/showcase/">here</a>.
|
||||
More FixIt examples <a href="https://fixit.lruihao.cn/showcase/">here</a>.
|
||||
</p>
|
||||
|
||||
## Documentation
|
||||
## Why choose FixIt
|
||||
|
||||
I don't know why 🤷.
|
||||
|
||||
<!-- Too lazy to write... -->
|
||||
|
||||
## Usage
|
||||
|
||||
### Documentation
|
||||
|
||||
Head to the [Quick Start](https://fixit.lruihao.cn/documentation/getting-started/quick-start/) page for a step-by-step guide on how to create a new website with FixIt.
|
||||
|
||||
Outline: [Installation](https://fixit.lruihao.cn/documentation/installation/) ➜ [Getting Started](https://fixit.lruihao.cn/documentation/getting-started/) ➜ [Content Management](https://fixit.lruihao.cn/documentation/content-management/) ➜ [Advanced Usage](https://fixit.lruihao.cn/documentation/advanced/)
|
||||
|
||||
## Template repository
|
||||
### Starter Wizard
|
||||
|
||||
We provided a CLI tool to help you create a new project with FixIt by a single command.
|
||||
|
||||
```bash
|
||||
pnpx fixit-cli create my-blog
|
||||
```
|
||||
|
||||
[](https://asciinema.org/a/697494)
|
||||
|
||||
### Templates
|
||||
|
||||
Click the following links to generate a new repository with template:
|
||||
|
||||
| Template repository | Generate link |
|
||||
| :----------------------------------------- | :----------------------------: |
|
||||
| [hugo-fixit/hugo-fixit-starter][starter] | [Click][starter:generate] |
|
||||
| [hugo-fixit/hugo-fixit-starter1][starter1] | [Click][starter1:generate] |
|
||||
| [hugo-fixit/docs][docs] | [Click][docs:generate] |
|
||||
| [Lruihao/hugo-blog][lruihao-blog] | [Click][lruihao-blog:generate] |
|
||||
| Template | repository | Generate link |
|
||||
| :-------------------------------------------- | :-------------------------------- | :----------------------------: |
|
||||
| A quick-start template base on Hugo Modules. | [hugo-fixit-starter][starter] | [Click][starter:generate] |
|
||||
| A quick-start template base on Git submodule. | [hugo-fixit-starter1][starter1] | [Click][starter1:generate] |
|
||||
| Build multilingual sites using Fixit theme. | [docs][docs] | [Click][docs:generate] |
|
||||
| Customize with FixIt theme. | [Lruihao/hugo-blog][lruihao-blog] | [Click][lruihao-blog:generate] |
|
||||
|
||||
[starter]: https://github.com/hugo-fixit/hugo-fixit-starter
|
||||
[starter:generate]: https://github.com/hugo-fixit/hugo-fixit-starter/generate
|
||||
@@ -51,16 +82,22 @@ Click the following links to generate a new repository with template:
|
||||
[lruihao-blog]: https://github.com/Lruihao/hugo-blog
|
||||
[lruihao-blog:generate]: https://github.com/Lruihao/hugo-blog/generate
|
||||
|
||||
<!-- ## Why choose FixIt -->
|
||||
|
||||
## Features
|
||||
|
||||
<details>
|
||||
<summary>Click to view.</summary>
|
||||
|
||||
### Performance and SEO
|
||||
|
||||
- Optimized for **performance**: 99/100 on mobile and 100/100 on desktop in [Google PageSpeed Insights](https://developers.google.com/speed/pagespeed/insights)
|
||||
- Optimized SEO performance with a correct **SEO SCHEMA** based on JSON-LD
|
||||
- **[Google Analytics](https://analytics.google.com/analytics)** supported
|
||||
- **[Fathom Analytics](https://usefathom.com/)** supported
|
||||
- **[Baidu Analytics](https://tongji.baidu.com/)** supported
|
||||
- **[Umami Analytics](https://umami.is/)** supported
|
||||
- **[Plausible Analytics](https://plausible.io/)** supported
|
||||
- **[Cloudflare Web Analytics](https://www.cloudflare.com/web-analytics)** supported
|
||||
- **[Splitbee Analytics](https://splitbee.io)** supported
|
||||
- Search engine **verification** supported (Google, Bing, Yandex, Pinterest, Baidu, 360 and Sogou)
|
||||
- **CDN** for third-party libraries supported
|
||||
|
||||
@@ -94,11 +131,13 @@ Click the following links to generate a new repository with template:
|
||||
|
||||
### Extended Features
|
||||
|
||||
- **AI Summary**, **AI Search** and **AI Chatbot** supported by [PostChat](https://ai.zhheo.com/console/login?InviteID=85041330)
|
||||
- **PWA (Progressive Web App)** supported
|
||||
- **Sub Menu** supported
|
||||
- **Content Encryption** supported (Pages, Partial)
|
||||
- **Friends** page embedded template
|
||||
- **Search** supported by [algolia](https://www.algolia.com/) or [Fuse.js](https://fusejs.io/)
|
||||
- **Search** supported by [algolia](https://www.algolia.com/), [Fuse.js](https://fusejs.io/), CSE or [PostChat](https://ai.zhheo.com/console/login?InviteID=85041330)
|
||||
- **Custom Search Engine (CSE)** supported by [Google](https://programmablesearchengine.google.com/)
|
||||
- **Twemoji** supported
|
||||
- Automatically **highlighting** code
|
||||
- **Copy code** to clipboard with one click
|
||||
@@ -106,7 +145,7 @@ Click the following links to generate a new repository with template:
|
||||
- Extended Markdown syntax for **[Font Awesome](https://fontawesome.com/) icons**
|
||||
- Extended Markdown syntax for **ruby annotation**
|
||||
- Extended Markdown syntax for **fraction**
|
||||
- **Mathematical formula** supported by [KaTeX](https://katex.org/)
|
||||
- **Mathematical formula** supported by [KaTeX](https://katex.org/) or [MathJax](https://www.mathjax.org)
|
||||
- **Diagrams** code fences extended and shortcode supported by [mermaid](https://github.com/knsv/mermaid)
|
||||
- **Interactive data visualization** shortcode and code fences extended supported by [ECharts](https://echarts.apache.org/)
|
||||
- **Timeline** code fences extended and shortcode supported
|
||||
@@ -124,13 +163,14 @@ Click the following links to generate a new repository with template:
|
||||
- Options to **cache remote image** locally
|
||||
- ...
|
||||
|
||||
### Theme Components
|
||||
|
||||
The FixIt theme balances **simplicity** and **extensibility** with extra [Hugo theme components](https://fixit.lruihao.cn/components/) for customization.
|
||||
</details>
|
||||
|
||||
## Multilingual and i18n
|
||||
|
||||
FixIt supports the following languages:
|
||||
FixIt supports multilingual and i18n. For more information, see the [Content Management](https://fixit.lruihao.cn/documentation/content-management/introduction#multilingual) documentation. You are welcome to [contribute with a new language](https://github.com/hugo-fixit/FixIt/pulls).
|
||||
|
||||
<details>
|
||||
<summary>FixIt supports the following languages.</summary>
|
||||
|
||||
- English
|
||||
- Simplified Chinese
|
||||
@@ -146,9 +186,44 @@ FixIt supports the following languages:
|
||||
- Romanian
|
||||
- Vietnamese
|
||||
- Hindi
|
||||
- [Contribute with a new language](https://github.com/hugo-fixit/FixIt/pulls)
|
||||
|
||||
[Languages Compatibility](https://fixit.lruihao.cn/documentation/basics/#language-compatibility)
|
||||
</details>
|
||||
|
||||
## Theme Components
|
||||
|
||||
The FixIt theme balances **simplicity** and **extensibility** with extra [Hugo theme components](https://fixit.lruihao.cn/ecosystem/#-components) for customization.
|
||||
|
||||
<details>
|
||||
<summary>Click to view.</summary>
|
||||
|
||||
<!-- HUGO_FIXIT_COMPONENTS:START -->
|
||||
- [fixit-bundle](https://github.com/hugo-fixit/fixit-bundle)\
|
||||
🌲 Bundles the FixIt core theme and all hugo-fixit components into a single component.
|
||||
- [cmpt-flyfish](https://github.com/hugo-fixit/cmpt-flyfish)\
|
||||
🐟 A canvas implemented animation effect of small fish swimming.
|
||||
- [cmpt-mdevtools](https://github.com/hugo-fixit/cmpt-mdevtools)\
|
||||
Mobile devtools component powered by vConsole and eruda.
|
||||
- [cmpt-translate](https://github.com/hugo-fixit/cmpt-translate)\
|
||||
🌐 A component for site automatic translation.
|
||||
- [component-projects](https://github.com/hugo-fixit/component-projects)\
|
||||
🐙 Display your GitHub projects in the FixIt theme and generate blog posts from readme.
|
||||
- [hugo-atom-feed](https://github.com/hugo-fixit/hugo-atom-feed)\
|
||||
Hugo theme component for ATOM feed custom Output Format.
|
||||
- [hugo-json-feed](https://github.com/hugo-fixit/hugo-json-feed)\
|
||||
Hugo theme component for JSON feed custom Output Format.
|
||||
- [shortcode-asciinema](https://github.com/hugo-fixit/shortcode-asciinema)\
|
||||
A Hugo theme component with asciinema-embed shortcode.
|
||||
- [shortcode-caniuse](https://github.com/hugo-fixit/shortcode-caniuse)\
|
||||
A Hugo theme component with caniuse shortcode.
|
||||
- [shortcode-docs-bookmark](https://github.com/hugo-fixit/shortcode-docs-bookmark)\
|
||||
🔖 Embed bookmark of FixIt Docs.
|
||||
- [shortcode-mmt-netease](https://github.com/hugo-fixit/shortcode-mmt-netease)\
|
||||
🎶 A Hugo theme component with a NetEase Cloud random comment shortcode.
|
||||
- [shortcode-rewards](https://github.com/hugo-fixit/shortcode-rewards)\
|
||||
A Hugo theme component with reward-log or sponsor-log shortcode.
|
||||
<!-- HUGO_FIXIT_COMPONENTS:END -->
|
||||
|
||||
</details>
|
||||
|
||||
## Community
|
||||
|
||||
@@ -161,8 +236,6 @@ All feedback is welcome! Head over to the [discussions][discussions], [Pull requ
|
||||
| [FixIt QQ group][qq-group] | QQ group: `814031017` |
|
||||
| [Hugo FixIt Planet][zsxq] | Paid knowledge Planet |
|
||||
|
||||
Don't forget to leave a ⭐️ if you like this theme, thanks!
|
||||
|
||||
[discussions]: https://github.com/hugo-fixit/FixIt/discussions
|
||||
[pulls]: https://github.com/hugo-fixit/FixIt/pulls
|
||||
[issues]: https://github.com/hugo-fixit/FixIt/issues
|
||||
@@ -172,7 +245,7 @@ Don't forget to leave a ⭐️ if you like this theme, thanks!
|
||||
|
||||
## Contributing
|
||||
|
||||
We welcome you to join the development of FixIt. Please see [contributing document](CONTRIBUTING.md). 🤗
|
||||
We welcome you to join the development of FixIt. Please see [contributing document](/CONTRIBUTING.md). 🤗
|
||||
|
||||
Also, we welcome Issue or PR to our [official-components](https://github.com/hugo-fixit).
|
||||
|
||||
@@ -200,6 +273,7 @@ Thanks to all the [contributors](https://github.com/hugo-fixit/FixIt/graphs/cont
|
||||
- [Sharer.js](https://github.com/ellisonleao/sharer.js)
|
||||
- [TypeIt](https://typeitjs.com/)
|
||||
- [KaTeX](https://katex.org/)
|
||||
- [MathJax](https://www.mathjax.org)
|
||||
- [mermaid](https://github.com/mermaid-js/mermaid)
|
||||
- [ECharts](https://echarts.apache.org/)
|
||||
- [Mapbox GL JS](https://docs.mapbox.com/mapbox-gl-js)
|
||||
@@ -233,16 +307,20 @@ Thanks to all the [contributors](https://github.com/hugo-fixit/FixIt/graphs/cont
|
||||
|
||||
## License
|
||||
|
||||
FixIt is licensed under the **MIT** license. Check the [LICENSE file](LICENSE) for details.
|
||||
FixIt is licensed under the **MIT** license. Check the [LICENSE file](/LICENSE) for details.
|
||||
|
||||
## Sponsor
|
||||
|
||||
If you enjoy the theme, please consider buying me a coffee ☕️. Thanks!
|
||||
|
||||
- [Wechat](images/wechatpay.jpg)
|
||||
- [Alipay](images/alipay.jpg)
|
||||
- [Wechat](/images/wechatpay.jpg)
|
||||
- [Alipay](/images/alipay.jpg)
|
||||
- [PayPal](https://paypal.me/Lruihao)
|
||||
|
||||
Thanks to the following sponsors for their support:
|
||||
|
||||
- [translate.js](https://github.com/xnx3/translate) Sponsoring [Enterprise Translation Channel](https://translate.zvo.cn/4087.html).
|
||||
|
||||
## Author
|
||||
|
||||
[Lruihao](https://github.com/Lruihao "Follow me on GitHub")
|
||||
|
||||
+111
-33
@@ -1,46 +1,77 @@
|
||||
<!-- markdownlint-disable-file MD033 MD041 -->
|
||||

|
||||
|
||||
<div align="center"><a href="README.md">English</a> | 简体中文</div>
|
||||
<div align="center" class="ignore">
|
||||
<p>
|
||||
FixIt 是一个简洁、优雅且高效的 <a href="https://gohugo.io/">Hugo</a> 博客主题。<br>
|
||||
<em><sub>如果你喜欢这个主题,别忘了留下一颗 ⭐️ 哦,谢谢!</sub></em>
|
||||
</p>
|
||||
<a href="/README.md">English</a> |
|
||||
简体中文 |
|
||||
<a href="https://fixit.lruihao.cn/zh-cn/ecosystem/hugo-fixit/fixit/?lang=chinese_traditional">繁體中文</a> |
|
||||
<a href="https://fixit.lruihao.cn/ecosystem/hugo-fixit/fixit/?lang=french">Français</a> |
|
||||
<a href="https://fixit.lruihao.cn/ecosystem/hugo-fixit/fixit/?lang=russian">Русский язык</a> |
|
||||
<a href="https://fixit.lruihao.cn/ecosystem/hugo-fixit/fixit/?lang=spanish">Español</a> |
|
||||
<a href="https://fixit.lruihao.cn/ecosystem/hugo-fixit/fixit/?lang=hindi">हिन्दी</a> |
|
||||
<a href="https://fixit.lruihao.cn/ecosystem/hugo-fixit/fixit/?lang=german">deutsch</a> |
|
||||
<a href="https://fixit.lruihao.cn/ecosystem/hugo-fixit/fixit/?lang=korean">한국어</a> |
|
||||
<a href="https://fixit.lruihao.cn/ecosystem/hugo-fixit/fixit/?lang=japanese">しろうと</a>
|
||||
</div>
|
||||
|
||||
<a title="FixIt 官网" href="https://fixit.lruihao.cn/zh-cn/"><img align="right" alt="FixIt logo" width="70" height="70" src="https://avatars.githubusercontent.com/u/110414864?s=200&v=4"></a>
|
||||
|
||||
# FixIt
|
||||
|
||||
> 它的原型基于 [LoveIt](https://github.com/dillonzq/LoveIt) 主题,[KeepIt](https://github.com/Fastbyte01/KeepIt) 主题和 [LeaveIt](https://github.com/liuzc/LeaveIt) 主题。
|
||||
|
||||
[](https://github.com/hugo-fixit/FixIt/releases)
|
||||
[](https://gohugo.io/)
|
||||
[](https://gohugo.io/)
|
||||
[](/LICENSE)
|
||||
[](https://github.com/hugo-fixit/FixIt)
|
||||
|
||||
> «FixIt» 是一个**简洁**、**优雅**且**高效**的 [Hugo](https://gohugo.io/) 博客主题。
|
||||
|
||||
它的原型基于 [LoveIt](https://github.com/dillonzq/LoveIt) 主题,[KeepIt](https://github.com/Fastbyte01/KeepIt) 主题和 [LeaveIt](https://github.com/liuzc/LeaveIt) 主题。
|
||||
|
||||
## 即时预览
|
||||
|
||||
<p align="center">
|
||||
💟 <a href="https://fixit.lruihao.cn/zh-cn/">Production</a> | ❇️ <a href="https://pre.fixit.lruihao.cn/zh-cn/">Preview</a> | 🚼 <a href="https://demo.fixit.lruihao.cn">Demo</a> | 🆕 <a href="https://hugo-fixit.github.io/hugo-fixit-starter/">Starter</a>
|
||||
<br>
|
||||
<br>
|
||||
更多 «FixIt» 的例子参见 <a href="https://fixit.lruihao.cn/zh-cn/showcase/">这里</a>。
|
||||
更多 FixIt 的例子参见 <a href="https://fixit.lruihao.cn/zh-cn/showcase/">这里</a>。
|
||||
</p>
|
||||
|
||||
## 主题文档
|
||||
## 为什么选择 FixIt
|
||||
|
||||
我也不知道为什么 🤷。
|
||||
|
||||
<!-- 懒的写…… -->
|
||||
|
||||
## 使用指南
|
||||
|
||||
### 主题文档
|
||||
|
||||
前往 [快速上手](https://fixit.lruihao.cn/zh-cn/documentation/getting-started/quick-start/) 页面,了解如何使用 FixIt 主题创建一个新网站的详细步骤。
|
||||
|
||||
大纲:[安装篇](https://fixit.lruihao.cn/zh-cn/documentation/installation/) ➜ [入门篇](https://fixit.lruihao.cn/zh-cn/documentation/getting-started/) ➜ [内容管理](https://fixit.lruihao.cn/zh-cn/documentation/content-management/) ➜ [进阶篇](https://fixit.lruihao.cn/zh-cn/documentation/advanced/)
|
||||
|
||||
## 模板仓库
|
||||
### 快速开始
|
||||
|
||||
我们提供了一个 CLI 工具,可以通过一个命令来创建一个新的 FixIt 项目。
|
||||
|
||||
```bash
|
||||
pnpx fixit-cli create my-blog
|
||||
```
|
||||
|
||||
[](https://asciinema.org/a/697494)
|
||||
|
||||
### 模板
|
||||
|
||||
点击以下链接使用模板生成一个新的仓库:
|
||||
|
||||
| 模板仓库 | 生成链接 |
|
||||
| :----------------------------------------- | :-------------------------------: |
|
||||
| [hugo-fixit/hugo-fixit-starter][starter] | [点击生成][starter:generate] |
|
||||
| [hugo-fixit/hugo-fixit-starter1][starter1] | [点击生成][starter1:generate] |
|
||||
| [hugo-fixit/docs][docs] | [点击生成][docs:generate] |
|
||||
| [Lruihao/hugo-blog][lruihao-blog] | [点击生成][lruihao-blog:generate] |
|
||||
| 模板 | 仓库 | 生成链接 |
|
||||
| :---------------------------------- | :-------------------------------- | :-------------------------------: |
|
||||
| 基于 Hugo Modules 的快速入门模板。 | [hugo-fixit-starter][starter] | [点击生成][starter:generate] |
|
||||
| 基于 Git submodule 的快速入门模板。 | [hugo-fixit-starter1][starter1] | [点击生成][starter1:generate] |
|
||||
| 使用 Fixit 主题构建多语言网站。 | [docs][docs] | [点击生成][docs:generate] |
|
||||
| 基于 FixIt 主题进行自定义设置。 | [Lruihao/hugo-blog][lruihao-blog] | [点击生成][lruihao-blog:generate] |
|
||||
|
||||
[starter]: https://github.com/hugo-fixit/hugo-fixit-starter
|
||||
[starter:generate]: https://github.com/hugo-fixit/hugo-fixit-starter/generate
|
||||
@@ -51,9 +82,14 @@
|
||||
[lruihao-blog]: https://github.com/Lruihao/hugo-blog
|
||||
[lruihao-blog:generate]: https://github.com/Lruihao/hugo-blog/generate
|
||||
|
||||
<!-- ## 为什么选择 FixIt -->
|
||||
### 镜像
|
||||
|
||||
## 特性
|
||||
Gitee 镜像仓库:<https://gitee.com/lruihao/FixIt>
|
||||
|
||||
## 特色
|
||||
|
||||
<details>
|
||||
<summary>点击展开</summary>
|
||||
|
||||
### 性能和 SEO
|
||||
|
||||
@@ -61,6 +97,11 @@
|
||||
- 使用基于 JSON-LD 格式 的 **SEO SCHEMA** 文件进行 SEO 优化
|
||||
- 支持 **[Google Analytics](https://analytics.google.com/analytics)**
|
||||
- 支持 **[Fathom Analytics](https://usefathom.com/)**
|
||||
- 支持 **[百度统计](https://tongji.baidu.com/)**
|
||||
- 支持 **[Umami Analytics](https://umami.is/)**
|
||||
- 支持 **[Plausible Analytics](https://plausible.io/)**
|
||||
- 支持 **[Cloudflare Web Analytics](https://www.cloudflare.com/web-analytics)**
|
||||
- 支持 **[Splitbee Analytics](https://splitbee.io)**
|
||||
- 支持搜索引擎的**网站验证** (Google, Bing, Yandex, Pinterest, Baidu, 360 and Sogou)
|
||||
- 支持所有第三方库的 **CDN**
|
||||
|
||||
@@ -94,11 +135,13 @@
|
||||
|
||||
### 扩展功能
|
||||
|
||||
- 支持基于 [PostChat](https://ai.zhheo.com/console/login?InviteID=85041330) 的 **AI 摘要**、**AI 搜索** 和 **AI 智能客服**
|
||||
- 支持**渐进式网页应用**
|
||||
- 支持**二级菜单**
|
||||
- 支持**内容加密**(页面、局部)
|
||||
- 支持**友情链接**的页面模板
|
||||
- 支持基于 [algolia](https://www.algolia.com/) 或 [Fuse.js](https://fusejs.io/) 的**搜索**
|
||||
- 支持基于 [algolia](https://www.algolia.com/)、[Fuse.js](https://fusejs.io/)、 **CSE** 或 [PostChat](https://ai.zhheo.com/console/login?InviteID=85041330) 的**搜索**
|
||||
- 支持基于 [Google](https://programmablesearchengine.google.com/) 的**自定义搜索引擎 (CSE)**
|
||||
- 支持 **Twemoji**
|
||||
- 支持**代码高亮**
|
||||
- 一键**复制代码**到剪贴板
|
||||
@@ -106,7 +149,7 @@
|
||||
- 支持 **[Font Awesome](https://fontawesome.com/) 图标**的扩展 Markdown 语法
|
||||
- 支持**上标注释**的扩展 Markdown 语法
|
||||
- 支持**分数**的扩展 Markdown 语法
|
||||
- 支持基于 [KaTeX](https://katex.org/) 的**数学公式**
|
||||
- 支持基于 [KaTeX](https://katex.org/) 或 [MathJax](https://www.mathjax.org) 的**数学公式**
|
||||
- 支持基于 [mermaid](https://github.com/knsv/mermaid) 的**图表** 代码块扩展语法和 shortcode
|
||||
- 支持基于 [ECharts](https://echarts.apache.org/) 的**交互式数据可视化** 代码块扩展语法和 shortcode
|
||||
- 支持 **Timeline** 的代码块扩展语法和 shortcode
|
||||
@@ -124,13 +167,14 @@
|
||||
- 支持本地**缓存远程图床图片**
|
||||
- ……
|
||||
|
||||
### 主题组件
|
||||
|
||||
FixIt 主题旨在在**简洁性**和**可扩展性**之间取得平衡。为此,我们开发了一系列额外的 [Hugo 主题组件](https://fixit.lruihao.cn/zh-cn/components/) 供用户选择。
|
||||
</details>
|
||||
|
||||
## 多语言和国际化
|
||||
|
||||
FixIt 支持下列语言:
|
||||
FixIt 主题多语言基本配置及自动翻译等详见 [内容管理](https://fixit.lruihao.cn/zh-cn/documentation/content-management/introduction#multilingual) 文档,欢迎 [贡献一种新的语言](https://github.com/hugo-fixit/FixIt/pulls)。
|
||||
|
||||
<details>
|
||||
<summary>FixIt 支持下列语言。</summary>
|
||||
|
||||
- 英语
|
||||
- 简体中文
|
||||
@@ -146,13 +190,44 @@ FixIt 支持下列语言:
|
||||
- 罗马尼亚语
|
||||
- 越南语
|
||||
- 印地语
|
||||
- [贡献一种新的语言](https://github.com/hugo-fixit/FixIt/pulls)
|
||||
|
||||
[语言兼容性](https://fixit.lruihao.cn/zh-cn/theme-documentation-basics/#language-compatibility)
|
||||
</details>
|
||||
|
||||
## 镜像
|
||||
## 主题组件
|
||||
|
||||
Gitee 镜像仓库:<https://gitee.com/lruihao/FixIt>
|
||||
FixIt 主题旨在在**简洁性**和**可扩展性**之间取得平衡。为此,我们开发了一系列额外的 [Hugo 主题组件](https://fixit.lruihao.cn/zh-cn/ecosystem/#-组件) 供用户选择。
|
||||
|
||||
<details>
|
||||
<summary>点击展开</summary>
|
||||
|
||||
<!-- HUGO_FIXIT_COMPONENTS:START -->
|
||||
- [fixit-bundle](https://github.com/hugo-fixit/fixit-bundle)\
|
||||
🌲 Bundles the FixIt core theme and all hugo-fixit components into a single component.
|
||||
- [cmpt-flyfish](https://github.com/hugo-fixit/cmpt-flyfish)\
|
||||
🐟 A canvas implemented animation effect of small fish swimming.
|
||||
- [cmpt-mdevtools](https://github.com/hugo-fixit/cmpt-mdevtools)\
|
||||
Mobile devtools component powered by vConsole and eruda.
|
||||
- [cmpt-translate](https://github.com/hugo-fixit/cmpt-translate)\
|
||||
🌐 A component for site automatic translation.
|
||||
- [component-projects](https://github.com/hugo-fixit/component-projects)\
|
||||
🐙 Display your GitHub projects in the FixIt theme and generate blog posts from readme.
|
||||
- [hugo-atom-feed](https://github.com/hugo-fixit/hugo-atom-feed)\
|
||||
Hugo theme component for ATOM feed custom Output Format.
|
||||
- [hugo-json-feed](https://github.com/hugo-fixit/hugo-json-feed)\
|
||||
Hugo theme component for JSON feed custom Output Format.
|
||||
- [shortcode-asciinema](https://github.com/hugo-fixit/shortcode-asciinema)\
|
||||
A Hugo theme component with asciinema-embed shortcode.
|
||||
- [shortcode-caniuse](https://github.com/hugo-fixit/shortcode-caniuse)\
|
||||
A Hugo theme component with caniuse shortcode.
|
||||
- [shortcode-docs-bookmark](https://github.com/hugo-fixit/shortcode-docs-bookmark)\
|
||||
🔖 Embed bookmark of FixIt Docs.
|
||||
- [shortcode-mmt-netease](https://github.com/hugo-fixit/shortcode-mmt-netease)\
|
||||
🎶 A Hugo theme component with a NetEase Cloud random comment shortcode.
|
||||
- [shortcode-rewards](https://github.com/hugo-fixit/shortcode-rewards)\
|
||||
A Hugo theme component with reward-log or sponsor-log shortcode.
|
||||
<!-- HUGO_FIXIT_COMPONENTS:END -->
|
||||
|
||||
</details>
|
||||
|
||||
## 社区支持
|
||||
|
||||
@@ -165,8 +240,6 @@ Gitee 镜像仓库:<https://gitee.com/lruihao/FixIt>
|
||||
| [FixIt 主题交流群(QQ)][qq-group] | QQ 群:`814031017` |
|
||||
| [Hugo FixIt 星球][zsxq] | 付费知识星球 |
|
||||
|
||||
如果你喜欢这个主题,别忘了留下一颗 ⭐️ 哦,谢谢!
|
||||
|
||||
[discussions]: https://github.com/hugo-fixit/FixIt/discussions
|
||||
[pulls]: https://github.com/hugo-fixit/FixIt/pulls
|
||||
[issues]: https://github.com/hugo-fixit/FixIt/issues
|
||||
@@ -176,7 +249,7 @@ Gitee 镜像仓库:<https://gitee.com/lruihao/FixIt>
|
||||
|
||||
## 参与贡献
|
||||
|
||||
我们欢迎你加入 FixIt 的开发,贡献出你的一份力量。请看开源 [贡献指南](CONTRIBUTING.md)。 🤗
|
||||
我们欢迎你加入 FixIt 的开发,贡献出你的一份力量。请看开源 [贡献指南](/CONTRIBUTING.md)。 🤗
|
||||
|
||||
你也可以随时向我们的 [官方插件](https://github.com/hugo-fixit) 提交 Issue 或 Pull Request。
|
||||
|
||||
@@ -204,6 +277,7 @@ Gitee 镜像仓库:<https://gitee.com/lruihao/FixIt>
|
||||
- [Sharer.js](https://github.com/ellisonleao/sharer.js)
|
||||
- [TypeIt](https://typeitjs.com/)
|
||||
- [KaTeX](https://katex.org/)
|
||||
- [MathJax](https://www.mathjax.org)
|
||||
- [mermaid](https://github.com/mermaid-js/mermaid)
|
||||
- [ECharts](https://echarts.apache.org/)
|
||||
- [Mapbox GL JS](https://docs.mapbox.com/mapbox-gl-js)
|
||||
@@ -237,16 +311,20 @@ Gitee 镜像仓库:<https://gitee.com/lruihao/FixIt>
|
||||
|
||||
## 许可协议
|
||||
|
||||
FixIt 根据 **MIT** 许可协议授权。更多信息请查看 [LICENSE 文件](LICENSE)。
|
||||
FixIt 根据 **MIT** 许可协议授权。更多信息请查看 [LICENSE 文件](/LICENSE)。
|
||||
|
||||
## 赞助支持
|
||||
|
||||
如果你喜爱这个主题,请考虑给我买杯咖啡 ☕️,谢谢!
|
||||
|
||||
- [微信支付](images/wechatpay.jpg)
|
||||
- [支付宝](images/alipay.jpg)
|
||||
- [微信支付](/images/wechatpay.jpg)
|
||||
- [支付宝](/images/alipay.jpg)
|
||||
- [PayPal](https://paypal.me/Lruihao)
|
||||
|
||||
感谢以下赞助商提供大力支持:
|
||||
|
||||
- [translate.js](https://github.com/xnx3/translate) 赞助[企业级翻译通道](https://translate.zvo.cn/4087.html)。
|
||||
|
||||
## 作者
|
||||
|
||||
[Lruihao](https://github.com/Lruihao "在 GitHub 上关注我")
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
title: {{ T "assets.search" }}
|
||||
layout: search
|
||||
date: {{ .Date }}
|
||||
---
|
||||
@@ -54,6 +54,33 @@ abbr[title] {
|
||||
text-decoration-skip-ink: none;
|
||||
}
|
||||
|
||||
img {
|
||||
object-fit: cover;
|
||||
}
|
||||
|
||||
img,video {
|
||||
max-width: 100%;
|
||||
height: auto;
|
||||
}
|
||||
|
||||
%code {
|
||||
padding: 0.2em 0.4em;
|
||||
margin: 0;
|
||||
font-size: $code-font-size;
|
||||
font-family: $code-font-family;
|
||||
color: $code-color;
|
||||
background-color: rgba(175, 184, 193, 0.2);
|
||||
text-decoration: inherit;
|
||||
@include border-radius($global-border-radius);
|
||||
@include overflow-wrap(break-word);
|
||||
@include line-break(auto);
|
||||
|
||||
[data-theme='dark'] & {
|
||||
color: $code-color-dark;
|
||||
background-color: rgba(99, 110, 123, 0.4);
|
||||
}
|
||||
}
|
||||
|
||||
@include link(true, true);
|
||||
|
||||
@import '../_partials/scrollbar';
|
||||
|
||||
@@ -30,8 +30,8 @@
|
||||
.breadcrumb-item {
|
||||
display: flex;
|
||||
|
||||
+.breadcrumb-item::before {
|
||||
content: "/";
|
||||
+ .breadcrumb-item::before {
|
||||
content: attr(data-separator);
|
||||
display: inline-block;
|
||||
padding-inline: 0.5rem;
|
||||
color: $global-font-secondary-color;
|
||||
|
||||
@@ -98,6 +98,10 @@ header {
|
||||
}
|
||||
}
|
||||
|
||||
.menu-link[href="javascript:void(0);"] {
|
||||
color: inherit;
|
||||
}
|
||||
|
||||
.menu-link i {
|
||||
@include transform(perspective(1rem));
|
||||
@include transition(transform 0.4s ease);
|
||||
@@ -114,7 +118,7 @@ header {
|
||||
}
|
||||
}
|
||||
|
||||
.search {
|
||||
.menu .search {
|
||||
position: relative;
|
||||
|
||||
input {
|
||||
@@ -275,6 +279,8 @@ header {
|
||||
border-radius: $global-border-radius;
|
||||
border: 1px solid $menu-border-color;
|
||||
background-color: $header-background-color;
|
||||
max-height: 60vh;
|
||||
overflow-y: auto;
|
||||
@include transition(box-shadow 0.3s ease);
|
||||
@include box-shadow(0 0 1.5rem 0 rgba(0, 0, 0, 0.1));
|
||||
|
||||
@@ -380,6 +386,8 @@ header {
|
||||
@include scrollbar-width(none, 0);
|
||||
|
||||
[data-theme='dark'] & {
|
||||
background: $header-background-color-dark;
|
||||
border-top-color: $global-border-color-dark;
|
||||
@include box-shadow(0 0.125rem 0.25rem rgba(255, 255, 255, 0.1));
|
||||
}
|
||||
|
||||
@@ -508,11 +516,6 @@ header {
|
||||
&.active {
|
||||
display: block;
|
||||
}
|
||||
|
||||
[data-theme='dark'] & {
|
||||
background: $header-background-color-dark;
|
||||
border-top-color: $global-border-color-dark;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -109,8 +109,7 @@
|
||||
}
|
||||
|
||||
.page {
|
||||
.categories-card,
|
||||
.collections-card {
|
||||
.taxonomy-cards {
|
||||
.card-item {
|
||||
width: 100%;
|
||||
}
|
||||
@@ -129,6 +128,23 @@
|
||||
}
|
||||
|
||||
@media only print {
|
||||
|
||||
// 确保打印时没有 scrollbar
|
||||
:root {
|
||||
--fi-scrollbar-width: none !important;
|
||||
}
|
||||
|
||||
*::-webkit-scrollbar {
|
||||
display: none !important;
|
||||
width: 0 !important;
|
||||
height: 0 !important;
|
||||
}
|
||||
|
||||
.scrollbar-thin {
|
||||
scrollbar-width: none !important;
|
||||
-ms-overflow-style: none !important;
|
||||
}
|
||||
|
||||
@page {
|
||||
size: A4 portrait;
|
||||
margin: 1.27cm;
|
||||
|
||||
@@ -1,7 +1,11 @@
|
||||
:root {
|
||||
// Note: Custom variable values only support SassScript inside `#{}`.
|
||||
// TODO migrate SCSS variables to CSS variables
|
||||
|
||||
// Theme colors varibles
|
||||
--#{$prefix}global-font-color: #{$global-font-color};
|
||||
--#{$prefix}global-border-color: #{$global-border-color};
|
||||
|
||||
// Theme colors variables
|
||||
@each $color, $value in $theme-colors {
|
||||
--#{$prefix}#{$color}: #{$value};
|
||||
}
|
||||
@@ -12,9 +16,10 @@
|
||||
// Set breadcrumb height to 0px if breadcrumb is disabled
|
||||
--#{$prefix}breadcrumb-height: 0px;
|
||||
|
||||
// hr style
|
||||
// hr / divider style
|
||||
--#{$prefix}hr-background-color: #{darken($global-border-color, 5%)};
|
||||
--#{$prefix}hr-before-color: #{lighten($single-link-hover-color, 4%)};
|
||||
--#{$prefix}divider-edge-weak: linear-gradient(to right, transparent, var(--#{$prefix}divider-bg, #d0d0d5), transparent);
|
||||
|
||||
// Scrollbar related variables
|
||||
--#{$prefix}scrollbar-thumb-color: #{$scrollbar-color};
|
||||
@@ -26,6 +31,9 @@
|
||||
|
||||
// Dark theme
|
||||
[data-theme=dark] {
|
||||
--#{$prefix}global-font-color: #{$global-font-color-dark};
|
||||
--#{$prefix}global-border-color: #{$global-border-color-dark};
|
||||
|
||||
@each $color, $value in $theme-colors {
|
||||
--#{$prefix}#{$color}: #{darken($value, 5%)};
|
||||
}
|
||||
|
||||
@@ -5,3 +5,11 @@
|
||||
@mixin details-transition-close {
|
||||
@include transition(max-height 0.2s cubic-bezier(0.5, 0, 1, 0) 0s);
|
||||
}
|
||||
|
||||
details {
|
||||
&.center {
|
||||
summary {
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+19
-37
@@ -81,20 +81,28 @@
|
||||
}
|
||||
|
||||
.summary {
|
||||
padding-top: 1rem;
|
||||
padding-bottom: 0.8rem;
|
||||
color: $global-font-color;
|
||||
border-bottom: 1px dashed $global-border-color;
|
||||
padding-block: 1rem;
|
||||
color: var(--#{$prefix}global-font-color);
|
||||
|
||||
&:not(:last-of-type)::after {
|
||||
content: '';
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
padding: 2px;
|
||||
transform: translateY(18px);
|
||||
background: repeating-linear-gradient(
|
||||
135deg,
|
||||
var(--#{$prefix}hr-background-color) 0px,
|
||||
var(--#{$prefix}hr-background-color) 4px,
|
||||
transparent 4px,
|
||||
transparent 8px
|
||||
);
|
||||
}
|
||||
|
||||
&:first-of-type {
|
||||
padding-top: 0;
|
||||
}
|
||||
|
||||
[data-theme='dark'] & {
|
||||
color: $global-font-color-dark;
|
||||
border-bottom: 1px dashed $global-border-color-dark;
|
||||
}
|
||||
|
||||
.featured-image-preview {
|
||||
width: 100%;
|
||||
// use the same proportions as the cover image of https://dev.to/
|
||||
@@ -124,39 +132,13 @@
|
||||
}
|
||||
|
||||
.content {
|
||||
@include box(vertical);
|
||||
-webkit-line-clamp: 3;
|
||||
margin-top: 0.3rem;
|
||||
width: 100%;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
@include overflow-wrap(break-word);
|
||||
color: $global-font-secondary-color;
|
||||
|
||||
[data-theme='dark'] & {
|
||||
color: $global-font-secondary-color-dark;
|
||||
}
|
||||
|
||||
h2,
|
||||
h3,
|
||||
h4,
|
||||
h5,
|
||||
h6,
|
||||
p {
|
||||
font-size: 1rem;
|
||||
line-height: 1.5;
|
||||
display: inline;
|
||||
|
||||
&::after {
|
||||
content: '\A';
|
||||
white-space: pre;
|
||||
}
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: 1.125rem;
|
||||
}
|
||||
|
||||
@include link(false, true);
|
||||
|
||||
b,
|
||||
@@ -170,7 +152,7 @@
|
||||
}
|
||||
|
||||
.post-footer {
|
||||
margin-top: 0.4rem;
|
||||
margin-block: 0.4rem 0;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
@@ -182,7 +164,7 @@
|
||||
padding: 0;
|
||||
|
||||
@include link(true, true);
|
||||
|
||||
|
||||
.post-tag:not(:last-child)::after {
|
||||
content: ',';
|
||||
margin-right: 0.25rem;
|
||||
|
||||
@@ -17,4 +17,3 @@
|
||||
@import '_home';
|
||||
@import '_404';
|
||||
@import '_offline';
|
||||
@import '_friends';
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
@import '../_partials/_single/toc';
|
||||
@import '../_partials/_single/fixit-decryptor';
|
||||
@import '../_partials/_single/collections';
|
||||
@import '../_partials/_single/related';
|
||||
|
||||
.single {
|
||||
.single-title {
|
||||
@@ -27,10 +28,10 @@
|
||||
}
|
||||
|
||||
.single-subtitle {
|
||||
margin: 0.5rem 0;
|
||||
margin-block: 0 0.5rem;
|
||||
font-size: 1.2rem;
|
||||
font-weight: normal;
|
||||
line-height: 100%;
|
||||
line-height: 1.15;
|
||||
}
|
||||
|
||||
.post-meta {
|
||||
@@ -97,6 +98,7 @@
|
||||
hr {
|
||||
position: relative;
|
||||
height: 1em;
|
||||
margin-block: 1em;
|
||||
background: linear-gradient(to right, var(--#{$prefix}hr-background-color) 50%, transparent 50%);
|
||||
background-size: 10px 2px;
|
||||
background-position: center;
|
||||
@@ -104,8 +106,6 @@
|
||||
border: none;
|
||||
|
||||
&.awesome-hr {
|
||||
margin-block: 0.5em;
|
||||
|
||||
&::before {
|
||||
display: inline-block;
|
||||
font-weight: 600;
|
||||
@@ -155,7 +155,7 @@
|
||||
font-size: 0.85em;
|
||||
}
|
||||
|
||||
> .heading-element {
|
||||
.heading-element {
|
||||
display: flex;
|
||||
font-weight: bold;
|
||||
line-height: 1.25;
|
||||
@@ -166,11 +166,6 @@
|
||||
font-weight: bolder;
|
||||
}
|
||||
|
||||
code {
|
||||
padding: 0 .2em;
|
||||
font-size: inherit;
|
||||
}
|
||||
|
||||
&:hover,
|
||||
&:target {
|
||||
> .heading-mark {
|
||||
@@ -230,6 +225,41 @@
|
||||
|
||||
ul {
|
||||
list-style-type: disc;
|
||||
|
||||
// Task lists
|
||||
li[data-task] {
|
||||
list-style: none;
|
||||
margin-left: -1.5rem;
|
||||
}
|
||||
}
|
||||
|
||||
// Task lists
|
||||
li[data-task] {
|
||||
color: var(--#{$prefix}task-color);
|
||||
.checkbox-icon {
|
||||
margin-right: 0.25em;
|
||||
color: var(--#{$prefix}checkbox-color);
|
||||
}
|
||||
}
|
||||
li[data-task='x'],
|
||||
li[data-task='-'] {
|
||||
--#{$prefix}task-color: var(--#{$prefix}secondary);
|
||||
text-decoration: line-through rgba(145, 145, 145, 0.6);
|
||||
}
|
||||
li[data-task='x'] {
|
||||
--#{$prefix}checkbox-color: var(--#{$prefix}primary);
|
||||
}
|
||||
li[data-task='-'] {
|
||||
opacity: 0.6;
|
||||
}
|
||||
li[data-task='/'] {
|
||||
--#{$prefix}task-color: var(--#{$prefix}success);
|
||||
}
|
||||
li[data-task='!'] {
|
||||
--#{$prefix}checkbox-color: var(--#{$prefix}danger);
|
||||
}
|
||||
li[data-task='?'] {
|
||||
--#{$prefix}checkbox-color: var(--#{$prefix}warning);
|
||||
}
|
||||
|
||||
dl {
|
||||
@@ -257,7 +287,22 @@
|
||||
}
|
||||
}
|
||||
|
||||
mark {
|
||||
padding: 0.14em 0.28em;
|
||||
background-color: var(--#{$prefix}mark-background-color, mark);
|
||||
color: var(--#{$prefix}mark-color, marktext);
|
||||
@include border-radius($global-border-radius);
|
||||
|
||||
@each $color, $value in $theme-colors {
|
||||
&.mark-#{$color} {
|
||||
--#{$prefix}mark-color: #fff;
|
||||
--#{$prefix}mark-background-color: var(--#{$prefix}#{$color});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.table-wrapper {
|
||||
position: relative;
|
||||
overflow-x: auto;
|
||||
--#{$prefix}scrollbar-thumb-color: #{$table-background-color};
|
||||
|
||||
@@ -317,31 +362,9 @@
|
||||
|
||||
img {
|
||||
max-width: 100%;
|
||||
min-height: 1em;
|
||||
|
||||
&:not([height]) {
|
||||
height: auto;
|
||||
}
|
||||
|
||||
&[loading='lazy'][srcset]:not([data-lazyloaded]) {
|
||||
&:not(.suffix-invalid__small) {
|
||||
width: var(--width-small, var(--width));
|
||||
aspect-ratio: var(--aspect-ratio-small, var(--aspect-ratio));
|
||||
}
|
||||
|
||||
&:not(.suffix-invalid) {
|
||||
@media (min-resolution: 1.01dppx) and (max-resolution: 1.5dppx) {
|
||||
width: calc(var(--width) / 1.5);
|
||||
aspect-ratio: var(--aspect-ratio);
|
||||
}
|
||||
}
|
||||
|
||||
&:not(.suffix-invalid__large) {
|
||||
@media (min-resolution: 1.51dppx) {
|
||||
width: calc(var(--width-large, var(--width)) / 2);
|
||||
aspect-ratio: var(--aspect-ratio-large, var(--aspect-ratio));
|
||||
}
|
||||
}
|
||||
// SVG performs differently in Safari compared to other browsers
|
||||
&:not([src*='.svg']) {
|
||||
min-height: 1em;
|
||||
}
|
||||
|
||||
&.version {
|
||||
@@ -370,6 +393,7 @@
|
||||
img {
|
||||
display: block;
|
||||
margin: 0 auto;
|
||||
height: auto;
|
||||
overflow: hidden;
|
||||
}
|
||||
}
|
||||
@@ -422,6 +446,16 @@
|
||||
margin-block: 1em;
|
||||
padding-left: 1rem;
|
||||
}
|
||||
|
||||
hr {
|
||||
background-color: var(--#{$prefix}hr-background-color);
|
||||
height: 1px;
|
||||
margin-block: 1em;
|
||||
}
|
||||
|
||||
code {
|
||||
font-size: 0.75rem;
|
||||
}
|
||||
|
||||
a:not(.footnote-backref) {
|
||||
color: inherit;
|
||||
@@ -439,18 +473,6 @@
|
||||
}
|
||||
}
|
||||
|
||||
hr {
|
||||
margin-block: 0;
|
||||
}
|
||||
|
||||
.footnotes {
|
||||
hr {
|
||||
background-color: var(--#{$prefix}hr-background-color);
|
||||
height: 1px;
|
||||
margin-block: 1em;
|
||||
}
|
||||
}
|
||||
|
||||
kbd {
|
||||
display: inline-block;
|
||||
padding: 0 0.25rem;
|
||||
@@ -470,6 +492,26 @@
|
||||
}
|
||||
}
|
||||
|
||||
// KaTeX styles
|
||||
.katex-display {
|
||||
max-width: 100%;
|
||||
overflow-x: auto;
|
||||
overflow-y: hidden;
|
||||
}
|
||||
.katex-error {
|
||||
padding: 0.14em 0.28em;
|
||||
background-color: mark;
|
||||
cursor: help;
|
||||
@include border-radius($global-border-radius);
|
||||
}
|
||||
|
||||
// MathJax styles
|
||||
mjx-container[jax='CHTML'][display='true'] {
|
||||
max-width: 100%;
|
||||
overflow-x: auto;
|
||||
overflow-y: hidden;
|
||||
}
|
||||
|
||||
@import '../_partials/_single/alert';
|
||||
@import '../_partials/_single/code';
|
||||
@import '../_shortcodes';
|
||||
|
||||
@@ -1,6 +0,0 @@
|
||||
.special {
|
||||
.single-title,
|
||||
.single-subtitle {
|
||||
text-align: right;
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
/**
|
||||
* @Description: Style of layout named 'friends'.
|
||||
* Style of layout named 'friends'.
|
||||
* @Author: Lruihao <https://lruihao.cn>
|
||||
* @Updated: 2022/3/11 21:36
|
||||
*/
|
||||
@@ -0,0 +1,14 @@
|
||||
.special {
|
||||
.single-title,
|
||||
.single-subtitle {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
&.friends {
|
||||
@import '_friends';
|
||||
}
|
||||
|
||||
&.search {
|
||||
@import '_search';
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
// Style of layout named 'search'
|
||||
// TODO Adapting to dark mode, maybe use css variables
|
||||
|
||||
// Google CSE
|
||||
.gcse-searchbox:empty,
|
||||
.gcse-searchresults:empty {
|
||||
display: none;
|
||||
}
|
||||
|
||||
// Bing CSE (Unsupported)
|
||||
@@ -1,5 +1,4 @@
|
||||
.categories-card,
|
||||
.collections-card {
|
||||
.taxonomy-cards {
|
||||
margin: 0 auto;
|
||||
display: flex;
|
||||
align-items: flex-start;
|
||||
|
||||
@@ -1,40 +1,46 @@
|
||||
.details {
|
||||
.details-summary {
|
||||
> .details-summary {
|
||||
@include border-radius($global-border-radius);
|
||||
|
||||
&:hover {
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
||||
|
||||
i.details-icon {
|
||||
color: $global-font-secondary-color;
|
||||
@include transition(transform 0.2s ease);
|
||||
i.details-icon {
|
||||
color: $global-font-secondary-color;
|
||||
@include transition(transform 0.2s ease);
|
||||
|
||||
[data-theme='dark'] & {
|
||||
color: $global-font-secondary-color-dark;
|
||||
[data-theme='dark'] & {
|
||||
color: $global-font-secondary-color-dark;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.details-content {
|
||||
> .details-content {
|
||||
max-height: 0;
|
||||
overflow-y: hidden;
|
||||
@include details-transition-open;
|
||||
}
|
||||
|
||||
&.open {
|
||||
.details-summary {
|
||||
> .details-summary {
|
||||
@include border-radius($global-border-radius $global-border-radius 0 0);
|
||||
|
||||
i.details-icon {
|
||||
@include transform(rotate(90deg));
|
||||
}
|
||||
}
|
||||
|
||||
i.details-icon {
|
||||
@include transform(rotate(90deg));
|
||||
}
|
||||
|
||||
.details-content {
|
||||
> .details-content {
|
||||
max-height: 100%;
|
||||
@include border-radius(0 0 $global-border-radius $global-border-radius);
|
||||
@include details-transition-close;
|
||||
}
|
||||
}
|
||||
|
||||
&.disabled {
|
||||
> .details-summary {
|
||||
cursor: default;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,15 +1,55 @@
|
||||
// Color map of admonition [$type $color $background-color, ... ]
|
||||
$admonition-color-map:
|
||||
'note' #448aff rgba(68, 138, 255, 0.1),
|
||||
'abstract' #00b0ff rgba(0, 176, 255, 0.1),
|
||||
'info' #00b8d4 rgba(0, 184, 212, 0.1),
|
||||
'tip' #00bfa5 rgba(0, 191, 165, 0.1),
|
||||
'success' #00c853 rgba(0, 200, 83, 0.1),
|
||||
'question' #64dd17 rgba(100, 221, 23, 0.1),
|
||||
'warning' #ff9100 rgba(255, 145, 0, 0.1),
|
||||
'failure' #ff5252 rgba(255, 82, 82, 0.1),
|
||||
'danger' #ff1744 rgba(255, 23, 68, 0.1),
|
||||
'bug' #f50057 rgba(245, 0, 87, 0.1),
|
||||
'example' #651fff rgba(101, 31, 255, 0.1),
|
||||
'quote' #9e9e9e rgba(159, 159, 159, 0.1)
|
||||
!default;
|
||||
// Color map of admonitions
|
||||
$admonition-color-map: (
|
||||
note: (
|
||||
color: #448aff,
|
||||
bg-color: rgba(68, 138, 255, 0.1),
|
||||
),
|
||||
abstract: (
|
||||
color: #00b0ff,
|
||||
bg-color: rgba(0, 176, 255, 0.1),
|
||||
),
|
||||
info: (
|
||||
color: #00b8d4,
|
||||
bg-color: rgba(0, 184, 212, 0.1),
|
||||
),
|
||||
todo: (
|
||||
color: #5e9aff,
|
||||
bg-color: rgba(94, 154, 255, 0.1),
|
||||
),
|
||||
tip: (
|
||||
color: #00bfa5,
|
||||
bg-color: rgba(0, 191, 165, 0.1),
|
||||
),
|
||||
success: (
|
||||
color: #00c853,
|
||||
bg-color: rgba(0, 200, 83, 0.1),
|
||||
),
|
||||
question: (
|
||||
color: #ffbd67,
|
||||
bg-color: rgba(255, 190, 0, 0.1),
|
||||
),
|
||||
warning: (
|
||||
color: #ff9100,
|
||||
bg-color: rgba(255, 145, 0, 0.1),
|
||||
),
|
||||
failure: (
|
||||
color: #ff5252,
|
||||
bg-color: rgba(255, 82, 82, 0.1),
|
||||
),
|
||||
danger: (
|
||||
color: #ff1744,
|
||||
bg-color: rgba(255, 23, 68, 0.1),
|
||||
),
|
||||
bug: (
|
||||
color: #f50057,
|
||||
bg-color: rgba(245, 0, 87, 0.1),
|
||||
),
|
||||
example: (
|
||||
color: #651fff,
|
||||
bg-color: rgba(101, 31, 255, 0.1),
|
||||
),
|
||||
quote: (
|
||||
color: #9e9e9e,
|
||||
bg-color: rgba(159, 159, 159, 0.1),
|
||||
),
|
||||
) !default;
|
||||
|
||||
@@ -1,16 +1,46 @@
|
||||
// Color map of alert [$type $border-color $color, ... ]
|
||||
$alert-color-map:
|
||||
'note' #0969da #0969da,
|
||||
'tip' #1a7f37 #1a7f37,
|
||||
'important' #8250df #8250df,
|
||||
'warning' #bf8700 #9a6700,
|
||||
'caution' #cf222e #d1242f,
|
||||
!default;
|
||||
// Color map of basic alerts
|
||||
$alert-color-map: (
|
||||
note: (
|
||||
border-color: #0969da,
|
||||
color: #0969da,
|
||||
),
|
||||
tip: (
|
||||
border-color: #1a7f37,
|
||||
color: #1a7f37,
|
||||
),
|
||||
important: (
|
||||
border-color: #8250df,
|
||||
color: #8250df,
|
||||
),
|
||||
warning: (
|
||||
border-color: #bf8700,
|
||||
color: #9a6700,
|
||||
),
|
||||
caution: (
|
||||
border-color: #cf222e,
|
||||
color: #d1242f,
|
||||
),
|
||||
) !default;
|
||||
|
||||
$alert-color-map-dark:
|
||||
'note' #316dca #478be6,
|
||||
'tip' #347d39 #57ab5a,
|
||||
'important' #8256d0 #986ee2,
|
||||
'warning' #966600 #c69026,
|
||||
'caution' #c93c37 #e5534b,
|
||||
!default;
|
||||
$alert-color-map-dark: (
|
||||
note: (
|
||||
border-color: #316dca,
|
||||
color: #478be6,
|
||||
),
|
||||
tip: (
|
||||
border-color: #347d39,
|
||||
color: #57ab5a,
|
||||
),
|
||||
important: (
|
||||
border-color: #8256d0,
|
||||
color: #986ee2,
|
||||
),
|
||||
warning: (
|
||||
border-color: #966600,
|
||||
color: #c69026,
|
||||
),
|
||||
caution: (
|
||||
border-color: #c93c37,
|
||||
color: #e5534b,
|
||||
),
|
||||
) !default;
|
||||
|
||||
@@ -26,18 +26,18 @@
|
||||
}
|
||||
}
|
||||
|
||||
@each $type, $border-color, $color in $alert-color-map {
|
||||
@each $type, $item in $alert-color-map {
|
||||
&.alert-#{$type} {
|
||||
--#{$prefix}alert-border-color: #{$border-color};
|
||||
--#{$prefix}alert-color: #{$color};
|
||||
--#{$prefix}alert-border-color: #{map-get($item, border-color)};
|
||||
--#{$prefix}alert-color: #{map-get($item, color)};
|
||||
}
|
||||
}
|
||||
|
||||
[data-theme='dark'] & {
|
||||
@each $type, $border-color, $color in $alert-color-map-dark {
|
||||
@each $type, $item in $alert-color-map-dark {
|
||||
&.alert-#{$type} {
|
||||
--#{$prefix}alert-border-color: #{$border-color};
|
||||
--#{$prefix}alert-color: #{$color};
|
||||
--#{$prefix}alert-border-color: #{map-get($item, border-color)};
|
||||
--#{$prefix}alert-color: #{map-get($item, color)};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,20 +1,6 @@
|
||||
// inline code
|
||||
code {
|
||||
padding: 0.2em 0.4em;
|
||||
margin: 0;
|
||||
font-size: $code-font-size;
|
||||
font-family: $code-font-family;
|
||||
color: $code-color;
|
||||
background-color: rgba(175, 184, 193, 0.2);
|
||||
text-decoration: inherit;
|
||||
@include border-radius($global-border-radius);
|
||||
@include overflow-wrap(break-word);
|
||||
@include line-break(auto);
|
||||
|
||||
[data-theme='dark'] & {
|
||||
color: $code-color-dark;
|
||||
background-color: rgba(99, 110, 123, 0.4);
|
||||
}
|
||||
@extend %code;
|
||||
}
|
||||
|
||||
// indented code
|
||||
@@ -23,7 +9,7 @@ pre:not(.mermaid[data-processed='true']) {
|
||||
line-height: 1.45em;
|
||||
padding: 0.5rem;
|
||||
overflow: auto;
|
||||
font-size: $code-font-size;
|
||||
font-size: $code-block-font-size;
|
||||
font-family: $code-font-family;
|
||||
@include border-radius($global-border-radius);
|
||||
@include tab-size(4);
|
||||
@@ -37,6 +23,7 @@ pre:not(.mermaid[data-processed='true']) {
|
||||
code {
|
||||
padding: 0;
|
||||
background-color: transparent;
|
||||
font-size: inherit;
|
||||
@include border-radius(0);
|
||||
@include max-content(min-width);
|
||||
|
||||
@@ -54,7 +41,7 @@ pre:not(.mermaid[data-processed='true']) {
|
||||
|
||||
.highlight,
|
||||
.gist {
|
||||
font-size: $code-font-size;
|
||||
font-size: $code-block-font-size;
|
||||
font-family: $code-font-family;
|
||||
|
||||
.table-wrapper {
|
||||
@@ -354,6 +341,7 @@ pre:not(.mermaid[data-processed='true']) {
|
||||
.gist-meta {
|
||||
padding: 0.4rem 0.8rem;
|
||||
@include link(false, false);
|
||||
@include border-radius(0 0 $global-border-radius $global-border-radius);
|
||||
background-color: darken($code-background-color, 5%);
|
||||
|
||||
[data-theme='dark'] & {
|
||||
@@ -362,12 +350,15 @@ pre:not(.mermaid[data-processed='true']) {
|
||||
}
|
||||
|
||||
.table-wrapper {
|
||||
.highlight {
|
||||
background-color: $code-background-color;
|
||||
padding-block: 0.25rem;
|
||||
@include border-radius($global-border-radius $global-border-radius 0 0);
|
||||
background-color: $code-background-color;
|
||||
|
||||
[data-theme='dark'] & {
|
||||
background-color: $code-background-color-dark;
|
||||
}
|
||||
[data-theme='dark'] & {
|
||||
background-color: $code-background-color-dark;
|
||||
}
|
||||
.highlight {
|
||||
background-color: transparent;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -130,7 +130,7 @@
|
||||
font-size: $collection-title-font-size;
|
||||
|
||||
&::before {
|
||||
content: attr(data-collections) '・';
|
||||
content: attr(title) '・';
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,73 @@
|
||||
// Related Content List (aside)
|
||||
.related-details {
|
||||
&:not(:first-of-type)::before {
|
||||
content: '';
|
||||
display: block;
|
||||
border: 0;
|
||||
padding-top: 1px;
|
||||
background: var(--#{$prefix}divider-edge-weak);
|
||||
margin-block: 1rem 0.5rem;
|
||||
}
|
||||
|
||||
&:not(:last-of-type) {
|
||||
margin-bottom: 0.5rem;
|
||||
}
|
||||
|
||||
.related-summary {
|
||||
display: flex;
|
||||
align-items: baseline;
|
||||
gap: 0.25em;
|
||||
padding: 0.2em 0.5em;
|
||||
|
||||
> i.fa-layer-group {
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.related-title {
|
||||
font-weight: bold;
|
||||
font-size: $related-title-font-size;
|
||||
}
|
||||
|
||||
.related-count {
|
||||
flex-shrink: 0;
|
||||
color: var(--#{$prefix}secondary);
|
||||
}
|
||||
|
||||
.details-icon {
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
@include user-select(none);
|
||||
}
|
||||
|
||||
.related-content {
|
||||
font-size: $related-list-font-size;
|
||||
|
||||
.related-list {
|
||||
margin: 0;
|
||||
padding-inline: 1.6em 0.8em;
|
||||
padding-block: 0.4em;
|
||||
text-indent: -0.8em;
|
||||
list-style: none;
|
||||
overflow-y: scroll;
|
||||
max-height: 60vh;
|
||||
@include scrollbar-width(none, 0);
|
||||
|
||||
.related-item > a::before,
|
||||
.related-item > span::before {
|
||||
content: '|';
|
||||
font-weight: 600;
|
||||
margin-right: 0.5em;
|
||||
position: relative;
|
||||
bottom: 2px;
|
||||
color: $single-link-color;
|
||||
|
||||
[data-theme='dark'] & {
|
||||
color: $single-link-color-dark;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -8,6 +8,10 @@
|
||||
.toc-content {
|
||||
font-size: $toc-content-font-size;
|
||||
|
||||
code {
|
||||
@extend %code;
|
||||
}
|
||||
|
||||
ul {
|
||||
text-indent: -0.8em;
|
||||
padding-left: 0.8em;
|
||||
@@ -110,7 +114,8 @@
|
||||
|
||||
.toc-content {
|
||||
overflow-y: scroll;
|
||||
max-height: calc(100vh - #{2*$header-height});
|
||||
// TODO 这里计算错误,待重构
|
||||
max-height: calc(100vh - #{2 * $header-height});
|
||||
@include scrollbar-width(none, 0);
|
||||
|
||||
&.always-active ul,
|
||||
|
||||
@@ -2,5 +2,6 @@
|
||||
@import '_widgets/fixed-button';
|
||||
@import '_widgets/github-corner';
|
||||
@import '_widgets/noscript-warning';
|
||||
@import '_widgets/post-chat';
|
||||
@import '_widgets/reading-progress';
|
||||
@import '_widgets/typeit';
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
#postChat_button,
|
||||
.post-TianliGPT {
|
||||
@extend .print-d-none;
|
||||
}
|
||||
@@ -16,6 +16,15 @@
|
||||
|
||||
.admonition-content {
|
||||
padding: 0.5rem 0;
|
||||
|
||||
// for extended alert syntax
|
||||
> p {
|
||||
margin: 0;
|
||||
}
|
||||
// title-only alert
|
||||
&:empty {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
i.icon {
|
||||
@@ -30,43 +39,35 @@
|
||||
top: 0.6rem;
|
||||
right: 0.3rem;
|
||||
}
|
||||
|
||||
background-color: var(--#{$prefix}admonition-bg-color);
|
||||
border-left-color: var(--#{$prefix}admonition-color);
|
||||
|
||||
@each $type, $color, $background-color in $admonition-color-map {
|
||||
@if $type == 'note' {
|
||||
background-color: $background-color;
|
||||
border-left-color: $color;
|
||||
> .admonition-title {
|
||||
border-bottom-color: var(--#{$prefix}admonition-bg-color);
|
||||
background-color: var(--#{$prefix}admonition-bg-color-collapsed);
|
||||
|
||||
.admonition-title {
|
||||
border-bottom-color: $background-color;
|
||||
background-color: opacify($background-color, 0.15);
|
||||
}
|
||||
|
||||
&.open .admonition-title {
|
||||
background-color: $background-color;
|
||||
}
|
||||
|
||||
i.icon {
|
||||
color: $color;
|
||||
}
|
||||
i.icon {
|
||||
color: var(--#{$prefix}admonition-color);
|
||||
}
|
||||
|
||||
@else {
|
||||
}
|
||||
|
||||
&.open > .admonition-title {
|
||||
background-color: var(--#{$prefix}admonition-bg-color);
|
||||
}
|
||||
|
||||
// default admonition type is note
|
||||
--#{$prefix}admonition-color: #{map-get(map-get($admonition-color-map, note), color)};
|
||||
--#{$prefix}admonition-bg-color: #{map-get(map-get($admonition-color-map, note), bg-color)};
|
||||
--#{$prefix}admonition-bg-color-collapsed: #{opacify(map-get(map-get($admonition-color-map, note), bg-color), 0.15)};
|
||||
|
||||
// set color for each admonition type
|
||||
@each $type, $item in $admonition-color-map {
|
||||
@if $type != 'note' {
|
||||
&.#{$type} {
|
||||
background-color: $background-color;
|
||||
border-left-color: $color;
|
||||
|
||||
.admonition-title {
|
||||
border-bottom-color: $background-color;
|
||||
background-color: opacify($background-color, 0.15);
|
||||
}
|
||||
|
||||
&.open .admonition-title {
|
||||
background-color: $background-color;
|
||||
}
|
||||
|
||||
i.icon {
|
||||
color: $color;
|
||||
}
|
||||
--#{$prefix}admonition-color: #{map-get($item, color)};
|
||||
--#{$prefix}admonition-bg-color: #{map-get($item, bg-color)};
|
||||
--#{$prefix}admonition-bg-color-collapsed: #{opacify(map-get($item, bg-color), 0.15)};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -39,6 +39,7 @@ $global-link-hover-color: #2983bb !default; // 潮蓝
|
||||
$global-link-hover-color-dark: #fff !default;
|
||||
|
||||
// Color of the border
|
||||
// TODO refactor border colors
|
||||
$global-border-color: #f0f0f0 !default;
|
||||
$global-border-color-dark: #363636 !default;
|
||||
// ========== Global ========== //
|
||||
@@ -102,6 +103,10 @@ $toc-content-font-size: 0.875rem !default;
|
||||
$collection-title-font-size: 1rem !default;
|
||||
$collection-list-font-size: 0.875rem !default;
|
||||
|
||||
// Font size of the Related Content List
|
||||
$related-title-font-size: 1rem !default;
|
||||
$related-list-font-size: 0.875rem !default;
|
||||
|
||||
// Color of the single link
|
||||
$single-link-color: #2376b7 !default; // 花青
|
||||
$single-link-color-dark: #1781b5 !default; // 釉蓝
|
||||
@@ -159,7 +164,8 @@ $code-info-color: #9c9c9c !default;
|
||||
$code-info-color-dark: #b1b0b0 !default;
|
||||
|
||||
// Font size of the code
|
||||
$code-font-size: 0.875rem !default;
|
||||
$code-font-size: 0.875em !default;
|
||||
$code-block-font-size: 0.875rem !default;
|
||||
|
||||
// Font family of the code
|
||||
$code-font-family: Source Code Pro, Menlo, Consolas, Monaco, monospace, $global-font-family !default;
|
||||
|
||||
@@ -30,8 +30,8 @@ libFiles:
|
||||
cryptoSha256JS: crypto-js@4.2.0/sha256.js
|
||||
# echarts@5.3.3 https://github.com/apache/echarts
|
||||
echartsJS: echarts@5.3.3/dist/echarts.min.js
|
||||
# fontawesome-free@6.4.2 https://github.com/FortAwesome/Font-Awesome
|
||||
fontawesomeFreeCSS: '@fortawesome/fontawesome-free@6.4.2/css/all.min.css'
|
||||
# fontawesome-free@6.7.1 https://github.com/FortAwesome/Font-Awesome
|
||||
fontawesomeFreeCSS: '@fortawesome/fontawesome-free@6.7.1/css/all.min.css'
|
||||
# fusejs@6.6.2 https://github.com/krisk/fuse
|
||||
fuseJS: fuse.js@6.6.2/dist/fuse.min.js
|
||||
# gitalk@1.7.2 https://github.com/gitalk/gitalk
|
||||
@@ -39,12 +39,9 @@ libFiles:
|
||||
gitalkJS: gitalk@1.7.2/dist/gitalk.min.js
|
||||
# instant.page@5.2.0 https://github.com/instantpage/instant.page
|
||||
instantPage: instant.page@5.2.0/instantpage.min.js
|
||||
# katex@0.16.10 https://github.com/KaTeX/KaTeX
|
||||
katexAutoRenderJS: katex@0.16.10/dist/contrib/auto-render.min.js
|
||||
katexCopyTexJS: katex@0.16.10/dist/contrib/copy-tex.min.js
|
||||
katexCSS: katex@0.16.10/dist/katex.min.css
|
||||
katexJS: katex@0.16.10/dist/katex.min.js
|
||||
katexMhchemJS: katex@0.16.10/dist/contrib/mhchem.min.js
|
||||
# katex@0.16.22 https://github.com/KaTeX/KaTeX
|
||||
katexCopyTexJS: katex@0.16.22/dist/contrib/copy-tex.min.js
|
||||
katexCSS: katex@0.16.22/dist/katex.min.css
|
||||
# lightgallery@2.7.2 https://github.com/sachinchoolur/lightgallery
|
||||
lightgalleryCSS: lightgallery@2.7.2/css/lightgallery-bundle.min.css
|
||||
lightgalleryJS: lightgallery@2.7.2/lightgallery.min.js
|
||||
@@ -66,15 +63,15 @@ libFiles:
|
||||
sharerJS: sharer.js@0.5.1/sharer.min.js
|
||||
# twemoji@14.0.2 https://github.com/twitter/twemoji
|
||||
twemojiJS: twemoji@14.0.2/dist/twemoji.min.js
|
||||
# twikoo@1.6.22 https://github.com/imaegoo/twikoo
|
||||
twikooJS: twikoo@1.6.22/dist/twikoo.all.min.js
|
||||
# twikoo@1.6.44 https://github.com/imaegoo/twikoo
|
||||
twikooJS: twikoo@1.6.44/dist/twikoo.all.min.js
|
||||
# typeit@8.8.4 https://github.com/alexmacarthur/typeit
|
||||
typeitJS: typeit@8.8.4/dist/index.umd.js
|
||||
# valine@1.5.2 https://github.com/xCss/Valine
|
||||
valineJS: valine@1.5.2/dist/Valine.min.js
|
||||
# waline@2.15.8 https://github.com/walinejs/waline
|
||||
walineCSS: '@waline/client@2.15.8/dist/waline.css'
|
||||
walineJS: '@waline/client@2.15.8/dist/waline.js'
|
||||
# waline@3.4.1 https://github.com/walinejs/waline
|
||||
walineCSS: '@waline/client@3.4.1/dist/waline.css'
|
||||
walineJS: '@waline/client@3.4.1/dist/waline.umd.js'
|
||||
# xxhash-wasm@1.0.2 https://github.com/jungomi/xxhash-wasm
|
||||
xxhashWasmJS: xxhash-wasm@1.0.2/umd/xxhash-wasm.js
|
||||
|
||||
+10
-13
@@ -30,8 +30,8 @@ libFiles:
|
||||
cryptoSha256JS: crypto-js@4.2.0/sha256.js
|
||||
# echarts@5.3.3 https://github.com/apache/echarts
|
||||
echartsJS: echarts@5.3.3/dist/echarts.min.js
|
||||
# fontawesome-free@6.4.2 https://github.com/FortAwesome/Font-Awesome
|
||||
fontawesomeFreeCSS: '@fortawesome/fontawesome-free@6.4.2/css/all.min.css'
|
||||
# fontawesome-free@6.7.1 https://github.com/FortAwesome/Font-Awesome
|
||||
fontawesomeFreeCSS: '@fortawesome/fontawesome-free@6.7.1/css/all.min.css'
|
||||
# fusejs@6.6.2 https://github.com/krisk/fuse
|
||||
fuseJS: fuse.js@6.6.2/dist/fuse.min.js
|
||||
# gitalk@1.7.2 https://github.com/gitalk/gitalk
|
||||
@@ -39,12 +39,9 @@ libFiles:
|
||||
gitalkJS: gitalk@1.7.2/dist/gitalk.min.js
|
||||
# instant.page@5.2.0 https://github.com/instantpage/instant.page
|
||||
instantPage: instant.page@5.2.0/instantpage.js
|
||||
# katex@0.16.10 https://github.com/KaTeX/KaTeX
|
||||
katexAutoRenderJS: katex@0.16.10/dist/contrib/auto-render.min.js
|
||||
katexCopyTexJS: katex@0.16.10/dist/contrib/copy-tex.min.js
|
||||
katexCSS: katex@0.16.10/dist/katex.min.css
|
||||
katexJS: katex@0.16.10/dist/katex.min.js
|
||||
katexMhchemJS: katex@0.16.10/dist/contrib/mhchem.min.js
|
||||
# katex@0.16.22 https://github.com/KaTeX/KaTeX
|
||||
katexCopyTexJS: katex@0.16.22/dist/contrib/copy-tex.min.js
|
||||
katexCSS: katex@0.16.22/dist/katex.min.css
|
||||
# lightgallery@2.7.2 https://github.com/sachinchoolur/lightgallery
|
||||
lightgalleryCSS: lightgallery@2.7.2/css/lightgallery-bundle.min.css
|
||||
lightgalleryJS: lightgallery@2.7.2/lightgallery.min.js
|
||||
@@ -66,14 +63,14 @@ libFiles:
|
||||
sharerJS: sharer.js@0.5.1/sharer.min.js
|
||||
# twemoji@14.0.2 https://github.com/twitter/twemoji
|
||||
twemojiJS: twemoji@14.0.2/dist/twemoji.min.js
|
||||
# twikoo@1.6.22 https://github.com/imaegoo/twikoo
|
||||
twikooJS: twikoo@1.6.22/dist/twikoo.all.min.js
|
||||
# twikoo@1.6.44 https://github.com/imaegoo/twikoo
|
||||
twikooJS: twikoo@1.6.44/dist/twikoo.all.min.js
|
||||
# typeit@8.8.4 https://github.com/alexmacarthur/typeit
|
||||
typeitJS: typeit@8.8.4/dist/index.umd.js
|
||||
# valine@1.5.2 https://github.com/xCss/Valine
|
||||
valineJS: valine@1.5.2/dist/Valine.min.js
|
||||
# waline@2.15.8 https://github.com/walinejs/waline
|
||||
walineCSS: '@waline/client@2.15.8/dist/waline.css'
|
||||
walineJS: '@waline/client@2.15.8/dist/waline.js'
|
||||
# waline@3.4.1 https://github.com/walinejs/waline
|
||||
walineCSS: '@waline/client@3.4.1/dist/waline.css'
|
||||
walineJS: '@waline/client@3.4.1/dist/waline.umd.js'
|
||||
# xxhash-wasm@1.0.2 https://github.com/jungomi/xxhash-wasm
|
||||
xxhashWasmJS: xxhash-wasm@1.0.2/umd/xxhash-wasm.js
|
||||
|
||||
@@ -673,6 +673,14 @@ credly:
|
||||
Icon:
|
||||
Class: fa-solid fa-certificate
|
||||
|
||||
# 086: Bluesky
|
||||
bluesky:
|
||||
Weight: 86
|
||||
Title: Bluesky
|
||||
Prefix: https://bsky.app/profile/
|
||||
Icon:
|
||||
Class: fa-brands fa-bluesky
|
||||
|
||||
# Phone
|
||||
phone:
|
||||
Weight: 997
|
||||
|
||||
@@ -0,0 +1,45 @@
|
||||
import * as params from '@params'
|
||||
|
||||
/**
|
||||
* Load MathJax script dynamically
|
||||
*/
|
||||
function loadMathJax() {
|
||||
const script = document.createElement('script')
|
||||
script.src = params.cdn || 'https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js'
|
||||
script.async = true
|
||||
document.head.appendChild(script)
|
||||
}
|
||||
|
||||
/**
|
||||
* Configuring MathJax
|
||||
* https://docs.mathjax.org/en/latest/options/index.html
|
||||
*/
|
||||
window.MathJax = {
|
||||
tex: {
|
||||
displayMath: [['\\[', '\\]'], ['$$', '$$']],
|
||||
inlineMath: [['\\(', '\\)'], ['$', '$']],
|
||||
packages: {
|
||||
...params.packages,
|
||||
},
|
||||
// custom macros
|
||||
macros: {
|
||||
// make \KaTeX command work in MathJax
|
||||
KaTeX: '{K\\kern-.325em\\raise.21em{\\scriptstyle{A}}\\kern-.17em\\TeX}',
|
||||
...params.macros,
|
||||
},
|
||||
...params.tex,
|
||||
},
|
||||
loader: {
|
||||
...params.loader,
|
||||
failed: function (error) {
|
||||
console.error(`MathJax(${error.package || '?'}): ${error.message}`);
|
||||
},
|
||||
},
|
||||
options: {
|
||||
ignoreHtmlClass: 'comment',
|
||||
processHtmlClass: 'content',
|
||||
...params.options,
|
||||
}
|
||||
}
|
||||
|
||||
loadMathJax()
|
||||
+139
-37
@@ -1,3 +1,4 @@
|
||||
// TODO use ESLint to check the code style
|
||||
import Util from './util';
|
||||
|
||||
class FixIt {
|
||||
@@ -124,6 +125,21 @@ class FixIt {
|
||||
const $searchToggle = document.getElementById(`search-toggle-${suffix}`);
|
||||
const $searchLoading = document.getElementById(`search-loading-${suffix}`);
|
||||
const $searchClear = document.getElementById(`search-clear-${suffix}`);
|
||||
const $searchCancel = document.getElementById('search-cancel-mobile');
|
||||
|
||||
// goto the PostChat panel rather than search results
|
||||
if (searchConfig.type === 'post-chat' && window.postChatUser) {
|
||||
if (isMobile) {
|
||||
$searchInput.addEventListener('focus', () => {
|
||||
window.postChatUser.setSearchInput('');
|
||||
}, false);
|
||||
} else {
|
||||
$searchToggle.addEventListener('click', () => {
|
||||
window.postChatUser.setSearchInput('');
|
||||
}, false);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
if (isMobile) {
|
||||
this._searchMobileOnce = true;
|
||||
@@ -132,7 +148,7 @@ class FixIt {
|
||||
document.body.classList.add('blur');
|
||||
$header.classList.add('open');
|
||||
}, false);
|
||||
document.getElementById('search-cancel-mobile').addEventListener('click', () => {
|
||||
$searchCancel.addEventListener('click', () => {
|
||||
this.disableScrollEvent = false;
|
||||
$header.classList.remove('open');
|
||||
document.body.classList.remove('blur');
|
||||
@@ -159,8 +175,10 @@ class FixIt {
|
||||
document.body.classList.add('blur');
|
||||
$header.classList.add('open');
|
||||
$searchInput.focus();
|
||||
this.disableScrollEvent = true;
|
||||
}, false);
|
||||
$searchClear.addEventListener('click', () => {
|
||||
this.disableScrollEvent = false;
|
||||
$searchClear.style.display = 'none';
|
||||
this._searchDesktop && this._searchDesktop.autocomplete.setVal('');
|
||||
}, false);
|
||||
@@ -289,25 +307,49 @@ class FixIt {
|
||||
finish([]);
|
||||
});
|
||||
} else finish(search());
|
||||
}
|
||||
} else if (searchConfig.type === 'cse') {
|
||||
const cseConfig = this.config.cse;
|
||||
if (cseConfig.engine === 'google' && cseConfig.cx) {
|
||||
finish([{
|
||||
uri: `${cseConfig.resultsPage}#gsc.tab=0&gsc.q=${encodeURIComponent(query)}`,
|
||||
title: cseConfig.searchIn,
|
||||
date: '<i class="fa-brands fa-searchengin fa-xl" aria-hidden="true"></i>',
|
||||
context: cseConfig.gotoResultsPage
|
||||
}]);
|
||||
}
|
||||
} else {
|
||||
finish([]);
|
||||
}
|
||||
},
|
||||
templates: {
|
||||
suggestion: ({ title, date, context }) =>
|
||||
`<div><span class="suggestion-title">${title}</span><span class="suggestion-date">${date}</span></div><div class="suggestion-context">${context}</div>`,
|
||||
empty: ({ query }) => `<div class="search-empty">${searchConfig.noResultsFound}: <span class="search-query">"${query}"</span></div>`,
|
||||
footer: ({}) => {
|
||||
const { searchType, icon, href } =
|
||||
searchConfig.type === 'algolia'
|
||||
? {
|
||||
searchType: 'algolia',
|
||||
icon: '<i class="fa-brands fa-algolia fa-fw" aria-hidden="true"></i>',
|
||||
href: 'https://www.algolia.com/'
|
||||
}
|
||||
: {
|
||||
searchType: 'Fuse.js',
|
||||
icon: '',
|
||||
href: 'https://fusejs.io/'
|
||||
}
|
||||
let searchType, icon, href;
|
||||
switch (searchConfig.type) {
|
||||
case 'algolia':
|
||||
searchType = 'algolia';
|
||||
icon = '<i class="fa-brands fa-algolia fa-fw" aria-hidden="true"></i>';
|
||||
href = 'https://www.algolia.com/';
|
||||
break;
|
||||
case 'fuse':
|
||||
searchType = 'Fuse.js';
|
||||
icon = '';
|
||||
href = 'https://fusejs.io/';
|
||||
break;
|
||||
case 'cse':
|
||||
if (this.config.cse.engine === 'google') {
|
||||
searchType = 'Google CSE';
|
||||
icon = '<i class="fa-brands fa-google fa-fw" aria-hidden="true"></i>';
|
||||
href = 'https://programmablesearchengine.google.com/';
|
||||
}
|
||||
break;
|
||||
default:
|
||||
searchType = '';
|
||||
icon = '';
|
||||
href = '';
|
||||
}
|
||||
return `<div class="search-footer">Search by <a href="${href}" rel="noopener noreferrer" target="_blank">${icon} ${searchType}</a></div>`;
|
||||
}
|
||||
}
|
||||
@@ -334,7 +376,7 @@ class FixIt {
|
||||
}
|
||||
|
||||
initDetails(target = document) {
|
||||
this.util.forEach(target.getElementsByClassName('details'), ($details) => {
|
||||
this.util.forEach(target.querySelectorAll('.details:not(.disabled)'), ($details) => {
|
||||
const $summary = $details.querySelector('.details-summary');
|
||||
$summary.addEventListener('click', () => {
|
||||
$details.classList.toggle('open');
|
||||
@@ -464,7 +506,7 @@ class FixIt {
|
||||
}
|
||||
$copy.title = this.config.code.copyTitle;
|
||||
$copy.addEventListener('click', () => {
|
||||
navigator.clipboard.writeText(code).then(() => {
|
||||
this.util.copyText(code).then(() => {
|
||||
this.util.animateCSS($code, 'animate__flash');
|
||||
}, () => {
|
||||
console.error('Clipboard write failed!', 'Your browser does not support clipboard API!');
|
||||
@@ -594,18 +636,12 @@ class FixIt {
|
||||
}
|
||||
}
|
||||
|
||||
initMath(target = document.body) {
|
||||
if (this.config.math) {
|
||||
renderMathInElement(target, this.config.math);
|
||||
}
|
||||
}
|
||||
|
||||
initMermaid() {
|
||||
if (!window.mermaid?.initialize) {
|
||||
if (!this.config.mermaid) {
|
||||
return;
|
||||
}
|
||||
const _initializeAndRun = () => {
|
||||
const themes = window.mermaid.themes ?? ['default', 'dark'];
|
||||
const themes = this.config.mermaid.themes ?? ['default', 'dark'];
|
||||
window.mermaid.initialize({
|
||||
securityLevel: 'loose',
|
||||
startOnLoad: false,
|
||||
@@ -642,12 +678,53 @@ class FixIt {
|
||||
this._echartsArr = [];
|
||||
const stagingDOM = this.util.getStagingDOM()
|
||||
this.util.forEach(document.getElementsByClassName('echarts'), ($echarts) => {
|
||||
if ($echarts.nextElementSibling.tagName === 'TEMPLATE') {
|
||||
const chart = echarts.init($echarts, this.isDark ? 'dark' : 'light', { renderer: 'svg' });
|
||||
stagingDOM.stage($echarts.nextElementSibling.content.cloneNode(true));
|
||||
chart.setOption(stagingDOM.contentAsJson());
|
||||
this._echartsArr.push(chart);
|
||||
const $dataEl = $echarts.nextElementSibling;
|
||||
if ($dataEl.tagName !== 'TEMPLATE') {
|
||||
return;
|
||||
}
|
||||
const chart = echarts.init($echarts, this.isDark ? 'dark' : 'light', { renderer: 'svg' });
|
||||
chart.showLoading();
|
||||
stagingDOM.stage($dataEl.content.cloneNode(true));
|
||||
const _setOption = (option) => {
|
||||
if (!option) {
|
||||
chart.hideLoading();
|
||||
console.warn('ECharts option is missing or invalid. Chart disposed.', {
|
||||
element: $echarts,
|
||||
option: $dataEl,
|
||||
});
|
||||
chart.dispose();
|
||||
$echarts.removeAttribute('style');
|
||||
return;
|
||||
}
|
||||
chart.hideLoading();
|
||||
chart.setOption(option);
|
||||
this._echartsArr.push(chart);
|
||||
};
|
||||
// support JS object literal or JS code
|
||||
if ($dataEl.dataset.fmt === 'js') {
|
||||
try {
|
||||
const jsCodes = stagingDOM.contentAsText();
|
||||
/**
|
||||
* Get ECharts option
|
||||
* @param {Object} fixit FixIt instance
|
||||
* @param {Object} chart ECharts instance
|
||||
* @returns {Object|Promise} ECharts option or Promise
|
||||
*/
|
||||
const _getOption = new Function('fixit', 'chart',
|
||||
this.util.isObjectLiteral(jsCodes) ? `return ${jsCodes}` : jsCodes
|
||||
);
|
||||
if ($dataEl.dataset.async === 'true') {
|
||||
return Promise.resolve(_getOption(this, chart)).then(option => {
|
||||
_setOption(option);
|
||||
});
|
||||
}
|
||||
return _setOption(_getOption(this, chart));
|
||||
} catch (err) {
|
||||
return console.error(err);
|
||||
}
|
||||
}
|
||||
// support JSON
|
||||
_setOption(stagingDOM.contentAsJson());
|
||||
});
|
||||
stagingDOM.destroy();
|
||||
});
|
||||
@@ -914,13 +991,17 @@ class FixIt {
|
||||
document.querySelector('.giscus-frame')?.contentWindow.postMessage({ giscus: message }, giscusConfig.origin);
|
||||
});
|
||||
this.switchThemeEventSet.add(this._giscusOnSwitchTheme);
|
||||
this.giscus2parentMsg = window.addEventListener('message', (event) => {
|
||||
// gicuss to parent message
|
||||
this._messageListener = (event) => {
|
||||
if (event.origin !== giscusConfig.origin) return;
|
||||
const $script = document.querySelector('#giscus>script');
|
||||
if ($script){
|
||||
this._giscusOnSwitchTheme();
|
||||
$script.parentElement.removeChild($script);
|
||||
}
|
||||
}, { once: true });
|
||||
this._giscusOnSwitchTheme()
|
||||
window.removeEventListener('message', this._messageListener, false);
|
||||
};
|
||||
window.addEventListener('message', this._messageListener, false);
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -999,6 +1080,8 @@ class FixIt {
|
||||
}
|
||||
const selector = this.config.pangu.selector;
|
||||
if (selector) {
|
||||
// to avoid extra spaces for extended Markdown syntax fraction in Chinese
|
||||
pangu.ignoredTags = /^(script|code|pre|textarea|sup|sub)$/i;
|
||||
if (selector.startsWith('#')) {
|
||||
pangu.spacingElementById(selector.slice(1));
|
||||
} else if (selector.startsWith('.')) {
|
||||
@@ -1011,6 +1094,10 @@ class FixIt {
|
||||
pangu.autoSpacingPage();
|
||||
}
|
||||
|
||||
initMathJax() {
|
||||
window.MathJax?.typeset && window.MathJax.typeset();
|
||||
}
|
||||
|
||||
initFixItDecryptor() {
|
||||
this.decryptor = new FixItDecryptor({
|
||||
decrypted: () => {
|
||||
@@ -1019,15 +1106,15 @@ class FixIt {
|
||||
this.initLightGallery();
|
||||
this.initCodeWrapper();
|
||||
this.initTable();
|
||||
this.initMath();
|
||||
this.initMermaid();
|
||||
this.initEcharts();
|
||||
this.initTypeit();
|
||||
this.initMapbox();
|
||||
this.fixTocScroll();
|
||||
this.initToc();
|
||||
this.initTocListener();
|
||||
this.initPangu();
|
||||
this.fixTocScroll();
|
||||
this.initMathJax();
|
||||
this.util.forEach(document.querySelectorAll('.encrypted-hidden'), ($element) => {
|
||||
$element.classList.replace('encrypted-hidden', 'decrypted-shown');
|
||||
});
|
||||
@@ -1038,12 +1125,12 @@ class FixIt {
|
||||
this.initLightGallery();
|
||||
this.initCodeWrapper();
|
||||
this.initTable($content);
|
||||
this.initMath($content);
|
||||
this.initMermaid();
|
||||
this.initEcharts();
|
||||
this.initTypeit($content);
|
||||
this.initMapbox();
|
||||
this.initPangu();
|
||||
this.initMathJax();
|
||||
this.util.forEach($content.querySelectorAll('.encrypted-hidden'), ($element) => {
|
||||
$element.classList.replace('encrypted-hidden', 'decrypted-shown');
|
||||
});
|
||||
@@ -1104,6 +1191,21 @@ class FixIt {
|
||||
this.scrollEventSet.add(_closeRewardExclude);
|
||||
}
|
||||
|
||||
initPostChatUser() {
|
||||
if (!window.postChatUser || !postChatConfig || postChatConfig.userMode === 'magic') {
|
||||
return;
|
||||
}
|
||||
postChat_theme = this.isDark ? 'dark' : 'light';
|
||||
this.switchThemeEventSet.add((isDark) => {
|
||||
const targetFrame = document.getElementById("postChat_iframeContainer")
|
||||
if (targetFrame) {
|
||||
window.postChatUser.setPostChatTheme(isDark ? 'dark' : 'light');
|
||||
} else {
|
||||
postChat_theme = isDark ? 'dark' : 'light';
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
onScroll() {
|
||||
const $headers = [];
|
||||
const ACCURACY = 20;
|
||||
@@ -1224,7 +1326,6 @@ class FixIt {
|
||||
this.initLightGallery();
|
||||
this.initCodeWrapper();
|
||||
this.initTable();
|
||||
this.initMath();
|
||||
this.initMermaid();
|
||||
this.initEcharts();
|
||||
this.initTypeit();
|
||||
@@ -1243,13 +1344,14 @@ class FixIt {
|
||||
this.initWatermark();
|
||||
this.initAutoMark();
|
||||
this.initReward();
|
||||
this.initPostChatUser();
|
||||
|
||||
window.setTimeout(() => {
|
||||
this.initComment();
|
||||
if (!this.config.encryption?.all) {
|
||||
this.fixTocScroll();
|
||||
this.initToc();
|
||||
this.initTocListener();
|
||||
this.fixTocScroll();
|
||||
}
|
||||
this.onScroll();
|
||||
this.onResize();
|
||||
|
||||
+43
-1
@@ -42,7 +42,7 @@ export default class Util {
|
||||
isValidDate(date) {
|
||||
return date instanceof Date && !isNaN(date.getTime());
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* scroll some element into view
|
||||
* @param {String} selector element to scroll
|
||||
@@ -86,4 +86,46 @@ export default class Util {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* copy text to clipboard
|
||||
* @param {String} text text to copy
|
||||
* @returns {Promise} promise
|
||||
*/
|
||||
copyText(text) {
|
||||
if (navigator.clipboard) {
|
||||
this.copyText = (text) => navigator.clipboard.writeText(text);
|
||||
return this.copyText(text);
|
||||
}
|
||||
this.copyText = (text) => new Promise((resolve, reject) => {
|
||||
const input = document.createElement('input');
|
||||
input.value = text;
|
||||
document.body.appendChild(input);
|
||||
input.select();
|
||||
if (document.execCommand('copy')) {
|
||||
document.body.removeChild(input);
|
||||
resolve();
|
||||
} else {
|
||||
reject();
|
||||
}
|
||||
});
|
||||
return this.copyText(text);
|
||||
}
|
||||
|
||||
/**
|
||||
* check if a string is a JS object string
|
||||
* @example isObjectLiteral("{a:1,b:2}") // true
|
||||
* @param {String} str string to check
|
||||
* @returns {Boolean} whether the string is a JS object string
|
||||
*/
|
||||
isObjectLiteral(str) {
|
||||
if (typeof str !== 'string') {
|
||||
return false;
|
||||
}
|
||||
str = str.replace(/\s+/g, ' ').trim().replace(/;$/, '')
|
||||
if (str.startsWith('{') && str.endsWith('}')) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
Vendored
+4
-4
@@ -9,11 +9,11 @@ crypto-js@4.2.0 https://github.com/brix/crypto-js
|
||||
echarts@5.3.3 https://github.com/apache/echarts
|
||||
TODO update emoji-data to 15.x
|
||||
emoji-data@14.0.0 https://github.com/iamcal/emoji-data
|
||||
fontawesome-free@6.4.2 https://github.com/FortAwesome/Font-Awesome
|
||||
fontawesome-free@6.7.1 https://github.com/FortAwesome/Font-Awesome
|
||||
fusejs@6.6.2 https://github.com/krisk/fuse
|
||||
gitalk@1.7.2 https://github.com/gitalk/gitalk
|
||||
instant.page@5.2.0 https://github.com/instantpage/instant.page
|
||||
katex@0.16.10 https://github.com/KaTeX/KaTeX
|
||||
katex@0.16.22 https://github.com/KaTeX/KaTeX
|
||||
lightgallery@2.7.2 https://github.com/sachinchoolur/lightgallery
|
||||
mapbox-gl@2.10.0 https://github.com/mapbox/mapbox-gl-js
|
||||
meting@2.0.1 https://github.com/metowolf/MetingJS
|
||||
@@ -23,8 +23,8 @@ pangu.js@4.0.7 https://github.com/vinta/pangu.js
|
||||
sharer.js@0.5.1 https://github.com/ellisonleao/sharer.js
|
||||
simple-icons@9.19.0 https://github.com/simple-icons/simple-icons
|
||||
twemoji@14.0.2 https://github.com/twitter/twemoji
|
||||
twikoo@1.6.22 https://github.com/imaegoo/twikoo
|
||||
twikoo@1.6.44 https://github.com/imaegoo/twikoo
|
||||
typeit@8.8.4 https://github.com/alexmacarthur/typeit
|
||||
valine@1.5.2 https://github.com/xCss/Valine
|
||||
waline@2.15.8 https://github.com/walinejs/waline
|
||||
waline@3.4.1 https://github.com/walinejs/waline
|
||||
xxhash-wasm@1.0.2 https://github.com/jungomi/xxhash-wasm
|
||||
|
||||
+5
-5
File diff suppressed because one or more lines are too long
Vendored
-1
@@ -1 +0,0 @@
|
||||
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("katex")):"function"==typeof define&&define.amd?define(["katex"],t):"object"==typeof exports?exports.renderMathInElement=t(require("katex")):e.renderMathInElement=t(e.katex)}("undefined"!=typeof self?self:this,(function(e){return function(){"use strict";var t={771:function(t){t.exports=e}},n={};function r(e){var o=n[e];if(void 0!==o)return o.exports;var i=n[e]={exports:{}};return t[e](i,i.exports,r),i.exports}r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,{a:t}),t},r.d=function(e,t){for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)};var o={};return function(){r.d(o,{default:function(){return d}});var e=r(771),t=r.n(e);const n=function(e,t,n){let r=n,o=0;const i=e.length;for(;r<t.length;){const n=t[r];if(o<=0&&t.slice(r,r+i)===e)return r;"\\"===n?r++:"{"===n?o++:"}"===n&&o--,r++}return-1},i=/^\\begin{/;var a=function(e,t){let r;const o=[],a=new RegExp("("+t.map((e=>e.left.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&"))).join("|")+")");for(;r=e.search(a),-1!==r;){r>0&&(o.push({type:"text",data:e.slice(0,r)}),e=e.slice(r));const a=t.findIndex((t=>e.startsWith(t.left)));if(r=n(t[a].right,e,t[a].left.length),-1===r)break;const l=e.slice(0,r+t[a].right.length),s=i.test(l)?l:e.slice(t[a].left.length,r);o.push({type:"math",data:s,rawData:l,display:t[a].display}),e=e.slice(r+t[a].right.length)}return""!==e&&o.push({type:"text",data:e}),o};const l=function(e,n){const r=a(e,n.delimiters);if(1===r.length&&"text"===r[0].type)return null;const o=document.createDocumentFragment();for(let e=0;e<r.length;e++)if("text"===r[e].type)o.appendChild(document.createTextNode(r[e].data));else{const i=document.createElement("span");let a=r[e].data;n.displayMode=r[e].display;try{n.preProcess&&(a=n.preProcess(a)),t().render(a,i,n)}catch(i){if(!(i instanceof t().ParseError))throw i;n.errorCallback("KaTeX auto-render: Failed to parse `"+r[e].data+"` with ",i),o.appendChild(document.createTextNode(r[e].rawData));continue}o.appendChild(i)}return o},s=function(e,t){for(let n=0;n<e.childNodes.length;n++){const r=e.childNodes[n];if(3===r.nodeType){let o=r.textContent,i=r.nextSibling,a=0;for(;i&&i.nodeType===Node.TEXT_NODE;)o+=i.textContent,i=i.nextSibling,a++;const s=l(o,t);if(s){for(let e=0;e<a;e++)r.nextSibling.remove();n+=s.childNodes.length-1,e.replaceChild(s,r)}else n+=a}else if(1===r.nodeType){const e=" "+r.className+" ";-1===t.ignoredTags.indexOf(r.nodeName.toLowerCase())&&t.ignoredClasses.every((t=>-1===e.indexOf(" "+t+" ")))&&s(r,t)}}};var d=function(e,t){if(!e)throw new Error("No element provided to render");const n={};for(const e in t)t.hasOwnProperty(e)&&(n[e]=t[e]);n.delimiters=n.delimiters||[{left:"$$",right:"$$",display:!0},{left:"\\(",right:"\\)",display:!1},{left:"\\begin{equation}",right:"\\end{equation}",display:!0},{left:"\\begin{align}",right:"\\end{align}",display:!0},{left:"\\begin{alignat}",right:"\\end{alignat}",display:!0},{left:"\\begin{gather}",right:"\\end{gather}",display:!0},{left:"\\begin{CD}",right:"\\end{CD}",display:!0},{left:"\\[",right:"\\]",display:!0}],n.ignoredTags=n.ignoredTags||["script","noscript","style","textarea","pre","code","option"],n.ignoredClasses=n.ignoredClasses||[],n.errorCallback=n.errorCallback||console.error,n.macros=n.macros||{},s(e,n)}}(),o=o.default}()}));
|
||||
Vendored
+1
-1
File diff suppressed because one or more lines are too long
Vendored
-1
File diff suppressed because one or more lines are too long
Vendored
-1
File diff suppressed because one or more lines are too long
Vendored
+1
-1
File diff suppressed because one or more lines are too long
Vendored
+1
-1
File diff suppressed because one or more lines are too long
Vendored
-1
File diff suppressed because one or more lines are too long
Vendored
+83
File diff suppressed because one or more lines are too long
@@ -34,6 +34,8 @@ enableRobotsTXT = true
|
||||
enableGitInfo = true
|
||||
# whether to use emoji code
|
||||
enableEmoji = true
|
||||
# the main sections of a site
|
||||
mainSections = []
|
||||
|
||||
# -------------------------------------------------------------------------------------
|
||||
# Menu Configuration
|
||||
@@ -135,7 +137,7 @@ enableEmoji = true
|
||||
[module]
|
||||
[module.hugoVersion]
|
||||
extended = true
|
||||
min = "0.132.0"
|
||||
min = "0.147.7"
|
||||
|
||||
# -------------------------------------------------------------------------------------
|
||||
# Markup related configuration in Hugo
|
||||
@@ -178,8 +180,12 @@ enableEmoji = true
|
||||
enable = true
|
||||
[markup.goldmark.extensions.extras.superscript]
|
||||
enable = true
|
||||
# TODO passthrough refactor https://gohugo.io/getting-started/configuration-markup/#parserattributeblock
|
||||
# TODO hugo 0.122.0 https://gohugo.io/content-management/mathematics/
|
||||
# https://gohugo.io/content-management/mathematics/
|
||||
[markup.goldmark.extensions.passthrough]
|
||||
enable = true
|
||||
[markup.goldmark.extensions.passthrough.delimiters]
|
||||
block = [['\[', '\]'], ['$$', '$$']]
|
||||
inline = [['\(', '\)'], ['$', '$']]
|
||||
[markup.goldmark.parser]
|
||||
[markup.goldmark.parser.attribute]
|
||||
block = true
|
||||
@@ -197,6 +203,7 @@ enableEmoji = true
|
||||
|
||||
[sitemap]
|
||||
changefreq = "weekly"
|
||||
disable = false
|
||||
filename = "sitemap.xml"
|
||||
priority = 0.5
|
||||
|
||||
@@ -329,6 +336,8 @@ enableEmoji = true
|
||||
enablePWA = false
|
||||
# FixIt 0.2.14 | NEW whether to add external Icon for external links automatically
|
||||
externalIcon = false
|
||||
# FixIt 0.3.13 | NEW whether to capitalize titles
|
||||
capitalizeTitles = true
|
||||
# FixIt 0.3.0 | NEW whether to add site title to the title of every page
|
||||
# remember to set up your site title in `hugo.toml` (e.g. title = "title")
|
||||
withSiteTitle = true
|
||||
@@ -337,6 +346,8 @@ enableEmoji = true
|
||||
# FixIt 0.3.0 | NEW whether to add site subtitle to the title of index page
|
||||
# remember to set up your site subtitle by `params.header.subtitle.name`
|
||||
indexWithSubtitle = false
|
||||
# FixIt 0.3.13 | NEW whether to show summary in plain text
|
||||
summaryPlainify = false
|
||||
# FixIt 0.2.14 | NEW FixIt will, by default, inject a theme meta tag in the HTML head on the home page only.
|
||||
# You can turn it off, but we would really appreciate if you don’t, as this is a good way to watch FixIt's popularity on the rise.
|
||||
disableThemeInject = false
|
||||
@@ -379,7 +390,7 @@ enableEmoji = true
|
||||
# Search config
|
||||
[params.search]
|
||||
enable = false
|
||||
# type of search engine ["algolia", "fuse"]
|
||||
# type of search engine ["algolia", "fuse", "cse", "post-chat"]
|
||||
type = "fuse"
|
||||
# max index length of the chunked content
|
||||
contentLength = 4000
|
||||
@@ -409,6 +420,19 @@ enableEmoji = true
|
||||
useExtendedSearch = false
|
||||
ignoreFieldNorm = false
|
||||
|
||||
# FixIt 0.3.16 | NEW Custom Search Engine (CSE)
|
||||
[params.cse]
|
||||
# Search Engine: ["google", "bing"]
|
||||
engine = ""
|
||||
# Search results page URL (layout: search)
|
||||
resultsPage = "/search/"
|
||||
# Google: https://programmablesearchengine.google.com/
|
||||
# Google Custom Search Engine Context
|
||||
[params.cse.google]
|
||||
cx = ""
|
||||
# Bing (Unsupported): https://www.customsearch.ai/
|
||||
[params.cse.bing]
|
||||
|
||||
# Header config
|
||||
[params.header]
|
||||
# FixIt 0.2.13 | CHANGED desktop header mode ["sticky", "normal", "auto"]
|
||||
@@ -439,6 +463,9 @@ enableEmoji = true
|
||||
enable = false
|
||||
sticky = false
|
||||
showHome = false
|
||||
# FixIt 0.3.13 | NEW
|
||||
separator = "/"
|
||||
capitalize = true
|
||||
|
||||
# FixIt 0.3.10 | NEW Post navigation config
|
||||
[params.navigation]
|
||||
@@ -501,13 +528,6 @@ enableEmoji = true
|
||||
limit = -1
|
||||
# whether to show the full text content in feed.
|
||||
fullText = false
|
||||
# FixIt 0.2.13 | NEW recently updated pages config
|
||||
# TODO refactor to support archives, section, taxonomy and term
|
||||
[params.section.recentlyUpdated]
|
||||
enable = false
|
||||
rss = false
|
||||
days = 30
|
||||
maxCount = 10
|
||||
|
||||
# Term list (category or tag) page config
|
||||
[params.list]
|
||||
@@ -522,6 +542,14 @@ enableEmoji = true
|
||||
# whether to show the full text content in feed.
|
||||
fullText = false
|
||||
|
||||
# FixIt 0.3.13 | NEW recently updated pages config for archives, section and term list
|
||||
[params.recentlyUpdated]
|
||||
archives = true
|
||||
section = true
|
||||
list = true
|
||||
days = 30
|
||||
maxCount = 10
|
||||
|
||||
# FixIt 0.2.17 | NEW TagCloud config for tags page
|
||||
[params.tagcloud]
|
||||
enable = false
|
||||
@@ -644,6 +672,7 @@ enableEmoji = true
|
||||
Douyin = ""
|
||||
TikTok = ""
|
||||
Credly = ""
|
||||
Bluesky = ""
|
||||
Phone = ""
|
||||
Email = ""
|
||||
RSS = true
|
||||
@@ -674,6 +703,25 @@ enableEmoji = true
|
||||
# For values, see https://mermaid.js.org/config/theming.html#available-themes
|
||||
themes = ["default", "dark"]
|
||||
|
||||
# FixIt 0.3.13 | NEW Admonitions custom config
|
||||
# See https://fixit.lruihao.cn/documentation/content-management/shortcodes/extended/admonition/#custom-admonitions
|
||||
# syntax: <type> = <icon>
|
||||
[params.admonition]
|
||||
# ban = "fa-solid fa-ban"
|
||||
|
||||
# FixIt 0.3.14 | NEW Task lists custom config
|
||||
# See https://fixit.lruihao.cn/documentation/content-management/advanced/#custom-task-lists
|
||||
# syntax: <sign> = <icon>
|
||||
[params.taskList]
|
||||
# tip = "fa-regular fa-lightbulb"
|
||||
|
||||
# FixIt 0.3.15 | NEW version shortcode config
|
||||
[params.repoVersion]
|
||||
# url prefix for the release tag
|
||||
url = "https://github.com/hugo-fixit/FixIt/releases/tag/v"
|
||||
# project name
|
||||
name = "FixIt"
|
||||
|
||||
# FixIt 0.2.12 | NEW PanguJS config
|
||||
[params.pangu]
|
||||
# For Chinese writing
|
||||
@@ -744,6 +792,31 @@ enableEmoji = true
|
||||
id = ""
|
||||
# server url for your tracker if you're self hosting
|
||||
server = ""
|
||||
# FixIt 0.3.16 | NEW Baidu Analytics
|
||||
[params.analytics.baidu]
|
||||
id = ""
|
||||
# FixIt 0.3.16 | NEW Umami Analytics
|
||||
[params.analytics.umami]
|
||||
data_website_id = ""
|
||||
src = ""
|
||||
data_host_url = ""
|
||||
data_domains = ""
|
||||
# FixIt 0.3.16 | NEW Plausible Analytics
|
||||
[params.analytics.plausible]
|
||||
data_domain = ""
|
||||
src = ""
|
||||
# FixIt 0.3.16 | NEW Cloudflare Analytics
|
||||
[params.analytics.cloudflare]
|
||||
token = ""
|
||||
# FixIt 0.3.16 | NEW Splitbee Analytics
|
||||
[params.analytics.splitbee]
|
||||
enable = false
|
||||
# no cookie mode
|
||||
no_cookie = true
|
||||
# respect the do not track setting of the browser
|
||||
do_not_track = true
|
||||
# token(optional), more info on https://splitbee.io/docs/embed-the-script
|
||||
data_token = ""
|
||||
|
||||
# Cookie consent config
|
||||
[params.cookieconsent]
|
||||
@@ -763,7 +836,8 @@ enableEmoji = true
|
||||
|
||||
# Compatibility config
|
||||
[params.compatibility]
|
||||
# whether to use Polyfill.io to be compatible with older browsers
|
||||
# whether to use Polyfill.io on cdnjs to be compatible with older browsers
|
||||
# https://cdnjs.cloudflare.com/polyfill
|
||||
polyfill = false
|
||||
# whether to use object-fit-images to be compatible with older browsers
|
||||
objectFit = false
|
||||
@@ -813,24 +887,90 @@ enableEmoji = true
|
||||
# "corner-indicator", "fill-left", "flash", "flat-top", "loading-bar", "mac-osx", "material", "minimal"]
|
||||
theme = "minimal"
|
||||
|
||||
# FixIt 0.3.17 | NEW PostChat AI config
|
||||
# Based on your posts to build a knowledge base, support AI summary, AI search, and AI Chatbot.
|
||||
# Get PostChat Key from my invitation link, thanks for your support!
|
||||
# https://ai.zhheo.com/console/login?InviteID=85041330
|
||||
[params.postChat]
|
||||
enable = false
|
||||
key = ""
|
||||
# How users initiate chats: ["iframe", "magic"]
|
||||
userMode = "iframe"
|
||||
addButton = true
|
||||
defaultInput = false
|
||||
left = ""
|
||||
bottom = ""
|
||||
width = ""
|
||||
height = ""
|
||||
fill = ""
|
||||
backgroundColor = ""
|
||||
upLoadWeb = true
|
||||
showInviteLink = true
|
||||
userTitle = ""
|
||||
userDesc = ""
|
||||
# dom container to be blacked out, e.g. [".aplayer"]
|
||||
blackDom = []
|
||||
# Only for iframe mode
|
||||
frameWidth = "" # e.g. "375px"
|
||||
frameHeight = "" # e.g. "600px"
|
||||
# only for magic mode
|
||||
userIcon = ""
|
||||
defaultChatQuestions = []
|
||||
defaultSearchQuestions = []
|
||||
# FixIt 0.4.0 | NEW
|
||||
hotWords = true
|
||||
|
||||
# FixIt 0.3.17 | NEW Summary AI config
|
||||
# See https://ai.zhheo.com/docs/summary.html
|
||||
[params.postSummary]
|
||||
enable = false
|
||||
# If you set `params.postChat.key`, you don't need to set `params.postSummary.key`
|
||||
key = ""
|
||||
title = ""
|
||||
# themes options: ["", "simple", "yanzhi"]
|
||||
theme = ""
|
||||
postURL = ""
|
||||
blacklist = ""
|
||||
wordLimit = 1000
|
||||
typingAnimate = true
|
||||
beginningText = ""
|
||||
loadingText = true
|
||||
|
||||
# FixIt 0.3.10 | NEW Global Feed config for RSS, Atom and JSON feed.
|
||||
[params.feed]
|
||||
# The number of posts to include in the feed. If set to -1, all posts.
|
||||
limit = 10
|
||||
# whether to show the full text content in feed.
|
||||
fullText = true
|
||||
# Site Challenge for Follow: https://follow.is/
|
||||
[params.feed.follow]
|
||||
feedId = ""
|
||||
userId = ""
|
||||
|
||||
# FixIt 0.3.17 | NEW Image config
|
||||
[params.image]
|
||||
# cache remote images for better optimisations
|
||||
cacheRemote = false
|
||||
# Image resizing and optimisation
|
||||
optimise = false
|
||||
|
||||
# FixIt 0.3.12 | NEW Custom partials config
|
||||
# Custom partials must be stored in the /layouts/partials/ directory.
|
||||
# Depends on open custom blocks https://fixit.lruihao.cn/references/blocks/
|
||||
[params.customPartials]
|
||||
head = []
|
||||
menuDesktop = []
|
||||
menuMobile = []
|
||||
profile = []
|
||||
aside = []
|
||||
comment = []
|
||||
footer = []
|
||||
widgets = []
|
||||
assets = []
|
||||
postTocBefore = []
|
||||
postTocAfter = []
|
||||
postContentBefore = []
|
||||
postContentAfter = []
|
||||
postFooterBefore = []
|
||||
postFooterAfter = []
|
||||
|
||||
@@ -876,6 +1016,8 @@ enableEmoji = true
|
||||
linkToEdit = true
|
||||
# FixIt 0.3.0 | NEW whether to show link to report issue for the post
|
||||
linkToReport = true
|
||||
# FixIt 0.3.20 | NEW whether to show link to view the post in VSCode
|
||||
linkToVscode = true
|
||||
# FixIt 0.3.10 | CHANGED Page style ["narrow", "normal", "wide", ...]
|
||||
pageStyle = "normal"
|
||||
# FixIt 0.2.17 | CHANGED Auto Bookmark Support
|
||||
@@ -938,19 +1080,41 @@ enableEmoji = true
|
||||
h4 = "{h2}.{h3}.{h4} {title}"
|
||||
h5 = "{h2}.{h3}.{h4}.{h5} {title}"
|
||||
h6 = "{h2}.{h3}.{h4}.{h5}.{h6} {title}"
|
||||
# FixIt 0.2.16 | CHANGED KaTeX mathematical formulas (https://katex.org)
|
||||
# FixIt 0.4.0 | CHANGED mathematical formulas configuration
|
||||
# See http://fixit.lruihao.cn/documentation/content-management/markdown-syntax/extended/#formula
|
||||
[params.page.math]
|
||||
enable = true
|
||||
# default inline delimiter is $ ... $ and \( ... \)
|
||||
inlineLeftDelimiter = ""
|
||||
inlineRightDelimiter = ""
|
||||
# default block delimiter is $$ ... $$, \[ ... \], \begin{equation} ... \end{equation} and some other functions
|
||||
blockLeftDelimiter = ""
|
||||
blockRightDelimiter = ""
|
||||
# KaTeX extension copy_tex
|
||||
copyTex = true
|
||||
# KaTeX extension mhchem
|
||||
mhchem = true
|
||||
# mathematical formulas rendering engines, optional values: ["katex", "mathjax"]
|
||||
type = "katex"
|
||||
# KaTeX server-side rendering (https://katex.org)
|
||||
# KaTeX partial config: https://gohugo.io/functions/transform/tomath/#options
|
||||
[params.page.math.katex]
|
||||
# KaTeX extension copy-tex
|
||||
copyTex = true
|
||||
throwOnError = false
|
||||
errorColor = "#ff4949"
|
||||
# custom macros map
|
||||
# syntax: <macro> = <definition>
|
||||
[params.page.math.katex.macros]
|
||||
# "\\f" = "#1f(#2)" # usage: $\f{a}{b}$
|
||||
# MathJax server-side rendering (https://www.mathjax.org)
|
||||
# MathJax config: https://docs.mathjax.org/en/latest/options/index.html
|
||||
[params.page.math.mathjax]
|
||||
cdn = "https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"
|
||||
[params.page.math.mathjax.packages]
|
||||
# "[+]" = ["configmacros"]
|
||||
# custom macros map
|
||||
# syntax: <macro> = <definition>
|
||||
[params.page.math.mathjax.macros]
|
||||
# "bold" = ["{\\bf #1}", 1] # usage: $\bold{math}$
|
||||
[params.page.math.mathjax.loader]
|
||||
load = ["ui/safe"]
|
||||
[params.page.math.mathjax.loader.paths]
|
||||
# custom = "https://cdn.jsdelivr.net/gh/sonoisa/XyJax-v3@3.0.1/build/"
|
||||
# more loader config e.g source, dependencies, provides etc.
|
||||
[params.page.math.mathjax.options]
|
||||
enableMenu = true
|
||||
# more options config e.g. skipHtmlTags, ignoreHtmlClass etc.
|
||||
# Code wrapper config
|
||||
[params.page.code]
|
||||
# FixIt 0.3.9 | NEW whether to enable the code wrapper
|
||||
@@ -977,15 +1141,12 @@ enableEmoji = true
|
||||
scale = true
|
||||
# whether to add FullscreenControl
|
||||
fullscreen = true
|
||||
# FixIt 0.3.0 | NEW [Experimental] cache remote images locally, see: https://github.com/hugo-fixit/FixIt/pull/362
|
||||
[params.page.cacheRemoteImages]
|
||||
enable = false
|
||||
# replace remote image url with local image url (place in public/images/remote/)
|
||||
replace = false
|
||||
# FixIt 0.3.0 | NEW Related content config (https://gohugo.io/content-management/related/)
|
||||
[params.page.related]
|
||||
enable = false
|
||||
count = 5
|
||||
# FixIt 0.3.20 | NEW position of related content, optional values: ["aside", "footer"]
|
||||
position = ["aside", "footer"]
|
||||
# FixIt 0.2.17 | NEW Donate (Sponsor) settings
|
||||
[params.page.reward]
|
||||
enable = false
|
||||
@@ -1075,8 +1236,8 @@ enableEmoji = true
|
||||
appKey = ""
|
||||
placeholder = ""
|
||||
avatar = "mp"
|
||||
meta = ""
|
||||
requiredFields = ""
|
||||
meta = ['nick','mail','link']
|
||||
requiredFields = []
|
||||
pageSize = 10
|
||||
lang = ""
|
||||
visitor = true
|
||||
|
||||
+48
-33
@@ -1,27 +1,26 @@
|
||||
# Translations for German
|
||||
# Übersetzung auf Deutsch
|
||||
# https://gohugo.io/content-management/multilingual/#translation-of-strings
|
||||
# TODO Some fields are waiting for your translation
|
||||
|
||||
# === init ===
|
||||
[init]
|
||||
configurationError = ""
|
||||
compatibilityError = ""
|
||||
devVersionWarn = ""
|
||||
devEnvWarn = ""
|
||||
quicklyUpgrade = ""
|
||||
configurationError = "Konfigurationsfehler\nSie haben den FixIt-Versionsparameter noch nicht korrekt konfiguriert. Siehe https://fixit.lruihao.cn/documentation/basics/#theme-configuration"
|
||||
compatibilityError = "Kompatibilitätsfehler ({{ .From }} -> {{ .To }}):\nSie haben ein inkompatibles Update. Siehe https://github.com/hugo-fixit/FixIt/releases"
|
||||
devVersionWarn = "Sie verwenden eine Entwicklungsversion von FixIt. Bitte erwägen Sie die Verwendung einer stabilen Version.\nSiehe https://github.com/hugo-fixit/FixIt/releases"
|
||||
devEnvWarn = "Die aktuelle Umgebung ist \"Entwicklung\". Das \"Kommentarsystem\", \"PWA\", \"CDN\", \"Fingerprint\" und \"Analytics\" werden deaktiviert."
|
||||
quicklyUpgrade = "Schnelles Upgrade verwenden Sie den Befehl: "
|
||||
# === init ===
|
||||
|
||||
# === baseof ===
|
||||
[baseof]
|
||||
backToTop = "Nach oben"
|
||||
viewComments = "Kommentare anzeigen"
|
||||
noscript = ""
|
||||
noscript = "Diese Website funktioniert am besten mit aktiviertem JavaScript."
|
||||
# === baseof ===
|
||||
|
||||
# === Taxonomy ===
|
||||
[archives]
|
||||
other = ""
|
||||
other = "Archiv"
|
||||
|
||||
[allSome]
|
||||
other = "Alle {{ .Some }}"
|
||||
@@ -33,10 +32,10 @@ other = "Kategorie"
|
||||
other = "Kategorien"
|
||||
|
||||
[collection]
|
||||
other = ""
|
||||
other = "Sammlung"
|
||||
|
||||
[collections]
|
||||
other = ""
|
||||
other = "Sammlungen"
|
||||
|
||||
[tag]
|
||||
other = "Tag"
|
||||
@@ -53,12 +52,12 @@ other = "Artikel"
|
||||
recentlyUpdated = "Zuletzt aktualisiert"
|
||||
|
||||
[section.totalWordCount]
|
||||
one = ""
|
||||
other = ""
|
||||
one = "Ein Wort"
|
||||
other = "Insgesamt {{ .Count }} Wörter"
|
||||
|
||||
[section.archiveCounter]
|
||||
one = ""
|
||||
other = ""
|
||||
one = "Nur ein Artikel"
|
||||
other = "Insgesamt {{ .Count }} Artikel"
|
||||
# === Section ===
|
||||
|
||||
# === Pagination ===
|
||||
@@ -92,6 +91,8 @@ facebookLanguageCode = "de_DE"
|
||||
[assets]
|
||||
search = "Suche"
|
||||
searchPlaceholder = "Suche nach Titel und Inhalt..."
|
||||
searchIn = "Suche in {{ . }}"
|
||||
gotoResultsPage = "Zu den Suchergebnissen ..."
|
||||
clear = "Leeren"
|
||||
cancel = "Abbrechen"
|
||||
noResultsFound = "Keine Ergebnisse gefunden"
|
||||
@@ -111,26 +112,27 @@ other = "Teilen auf"
|
||||
# === posts/single.html ===
|
||||
[single]
|
||||
contents = "Inhalt"
|
||||
pin = ""
|
||||
repost = ""
|
||||
pin = "Oben anheften"
|
||||
repost = "Erneut posten"
|
||||
publishedOnDate = "veröffentlicht an {{ .Date }}"
|
||||
views = "Aufrufe"
|
||||
comments = "Kommentare"
|
||||
author = "Autor"
|
||||
updatedOnDate = "Aktualisiert am {{ .Date }}"
|
||||
readMarkdown = "Markdown anzeigen"
|
||||
viewSource = ""
|
||||
viewSource = "Quelle anzeigen"
|
||||
editThisPage = "Diese Seite bearbeiten"
|
||||
reportIssue = ""
|
||||
reportIssue = "Problem melden"
|
||||
openInEditor = "Im Editor öffnen"
|
||||
back = "Zurück"
|
||||
home = "Startseite"
|
||||
readMore = "Mehr lesen"
|
||||
expirationReminder = "Dieser Artikel wurde zuletzt auf {{ .Date }} aktualisiert, der Inhalt kann veraltet sein."
|
||||
encryptedAbstract = ""
|
||||
encryptedMessage = ""
|
||||
encryptedAbstract = "Dieser Artikel wurde verschlüsselt, daher ist sein Rohinhalt unsichtbar!"
|
||||
encryptedMessage = "Bitte geben Sie das Passwort ein"
|
||||
password = "Passwort"
|
||||
enterBtn = ""
|
||||
encryptyAgain = ""
|
||||
enterBtn = "Eintreten"
|
||||
encryptyAgain = "Erneut verschlüsseln"
|
||||
relatedContent = "Ähnliche Inhalte"
|
||||
|
||||
[single.includedIn]
|
||||
@@ -142,7 +144,7 @@ both = "enthalten in {{ .Categories }} und {{ .Collections }}"
|
||||
one = "Ein Wort"
|
||||
other = "{{ .Count }} Wörter"
|
||||
|
||||
[single.fuzzywordcount]
|
||||
[single.fuzzyWordCount]
|
||||
other = "{{ .Count }} Wörter (ungefähr)"
|
||||
|
||||
[single.readingTime]
|
||||
@@ -150,11 +152,11 @@ one = "Eine Minute"
|
||||
other = "{{ .Count }} Minuten"
|
||||
|
||||
[single.reward]
|
||||
donate = ""
|
||||
wechatpay = ""
|
||||
alipay = ""
|
||||
paypal = ""
|
||||
bitcoin = ""
|
||||
donate = "Spenden"
|
||||
wechatpay = "WeChat Pay"
|
||||
alipay = "Alipay"
|
||||
paypal = "PayPal"
|
||||
bitcoin = "Bitcoin"
|
||||
# === posts/single.html ===
|
||||
|
||||
# === 404.html ===
|
||||
@@ -175,18 +177,31 @@ other = "Sie sind nicht mit dem Internet verbunden, es stehen nur zwischengespei
|
||||
|
||||
# === GitHub Alert ===
|
||||
[alert]
|
||||
note = ""
|
||||
tip = ""
|
||||
important = ""
|
||||
warning = ""
|
||||
caution = ""
|
||||
note = "Hinweis"
|
||||
tip = "Tipp"
|
||||
important = "Wichtig"
|
||||
warning = "Warnung"
|
||||
caution = "Vorsicht"
|
||||
# === GitHub Alert ===
|
||||
|
||||
# === Task lists ===
|
||||
[taskList]
|
||||
" " = "Nicht überprüft"
|
||||
"x" = "Überprüft"
|
||||
"/" = "In Bearbeitung"
|
||||
"-" = "Abgebrochen"
|
||||
"<" = "Geplant"
|
||||
">" = "Verschoben"
|
||||
"!" = "Wichtig"
|
||||
"?" = "Frage"
|
||||
# === Task lists ===
|
||||
|
||||
# === shortcodes/admonition.html ===
|
||||
[admonition]
|
||||
note = "Notiz"
|
||||
abstract = "Kurzfassung"
|
||||
info = "Info"
|
||||
todo = "Aufgabe"
|
||||
tip = "Tipp"
|
||||
success = "Erfolg"
|
||||
question = "Frage"
|
||||
|
||||
+17
-1
@@ -6,7 +6,7 @@
|
||||
configurationError = "Configuration Error\nYou haven't configured the FixIt version param correctly yet. See https://fixit.lruihao.cn/documentation/basics/#theme-configuration"
|
||||
compatibilityError = "Compatibility Error ({{ .From }} -> {{ .To }}):\nYou have an incompatible update. See https://github.com/hugo-fixit/FixIt/releases"
|
||||
devVersionWarn = "You are using a development version of FixIt. Please consider using a stable version.\nSee https://github.com/hugo-fixit/FixIt/releases"
|
||||
devEnvWarn = "Current environment is \"development\". The \"comment system\", \"PWA\", \"CDN\" and \"fingerprint\" will be disabled."
|
||||
devEnvWarn = "Current environment is \"development\". The \"comment system\", \"PWA\", \"CDN\", \"fingerprint\" and \"analytics\" will be disabled."
|
||||
quicklyUpgrade = "Quickly upgrade use command: "
|
||||
# === init ===
|
||||
|
||||
@@ -91,6 +91,8 @@ facebookLanguageCode = "en_US"
|
||||
[assets]
|
||||
search = "Search"
|
||||
searchPlaceholder = "Search titles or contents ..."
|
||||
searchIn = "Search in {{ . }}"
|
||||
gotoResultsPage = "Go to search results page ..."
|
||||
clear = "Clear"
|
||||
cancel = "Cancel"
|
||||
noResultsFound = "No results found"
|
||||
@@ -121,6 +123,7 @@ readMarkdown = "Read Markdown"
|
||||
viewSource = "View source"
|
||||
editThisPage = "Edit this page"
|
||||
reportIssue = "Report issue"
|
||||
openInEditor = "Open in editor"
|
||||
back = "Back"
|
||||
home = "Home"
|
||||
readMore = "Read More"
|
||||
@@ -181,11 +184,24 @@ warning = "Warning"
|
||||
caution = "Caution"
|
||||
# === GitHub Alert ===
|
||||
|
||||
# === Task lists ===
|
||||
[taskList]
|
||||
" " = "Unchecked"
|
||||
"x" = "Checked"
|
||||
"/" = "In Progress"
|
||||
"-" = "Cancelled"
|
||||
"<" = "Scheduled"
|
||||
">" = "Rescheduled"
|
||||
"!" = "Important"
|
||||
"?" = "Question"
|
||||
# === Task lists ===
|
||||
|
||||
# === shortcodes/admonition.html ===
|
||||
[admonition]
|
||||
note = "Note"
|
||||
abstract = "Abstract"
|
||||
info = "Info"
|
||||
todo = "Todo"
|
||||
tip = "Tip"
|
||||
success = "Success"
|
||||
question = "Question"
|
||||
|
||||
+47
-32
@@ -1,27 +1,26 @@
|
||||
# Translations for Spanish
|
||||
# Traducciones para español
|
||||
# https://gohugo.io/content-management/multilingual/#translation-of-strings
|
||||
# TODO Some fields are waiting for your translation
|
||||
|
||||
# === init ===
|
||||
[init]
|
||||
configurationError = ""
|
||||
compatibilityError = ""
|
||||
devVersionWarn = ""
|
||||
devEnvWarn = ""
|
||||
quicklyUpgrade = ""
|
||||
configurationError = "Error de configuración\nAún no ha configurado correctamente el parámetro de versión de FixIt. Consulte https://fixit.lruihao.cn/documentation/basics/#theme-configuration"
|
||||
compatibilityError = "Error de compatibilidad ({{ .From }} -> {{ .To }}):\nTiene una actualización incompatible. Consulte https://github.com/hugo-fixit/FixIt/releases"
|
||||
devVersionWarn = "Está utilizando una versión de desarrollo de FixIt. Considere usar una versión estable.\nConsulte https://github.com/hugo-fixit/FixIt/releases"
|
||||
devEnvWarn = "El entorno actual es \"desarrollo\". El \"sistema de comentarios\", \"PWA\", \"CDN\", \"huella digital\" y \"análisis\" estarán deshabilitados."
|
||||
quicklyUpgrade = "Actualización rápida use el comando: "
|
||||
# === init ===
|
||||
|
||||
# === baseof ===
|
||||
[baseof]
|
||||
backToTop = "Volver arriba"
|
||||
viewComments = "Ver comentarios"
|
||||
noscript = ""
|
||||
noscript = "Este sitio web funciona mejor con JavaScript habilitado."
|
||||
# === baseof ===
|
||||
|
||||
# === Taxonomy ===
|
||||
[archives]
|
||||
other = ""
|
||||
other = "Total {{ .Count }} artículos"
|
||||
|
||||
[allSome]
|
||||
other = "Todo {{ .Some }}"
|
||||
@@ -33,10 +32,10 @@ other = "Categoría"
|
||||
other = "Categorías"
|
||||
|
||||
[collection]
|
||||
other = ""
|
||||
other = "Colección"
|
||||
|
||||
[collections]
|
||||
other = ""
|
||||
other = "Colecciones"
|
||||
|
||||
[tag]
|
||||
other = "Etiqueta"
|
||||
@@ -53,12 +52,12 @@ other = "Artículos"
|
||||
recentlyUpdated = "Actualizado recientemente"
|
||||
|
||||
[section.totalWordCount]
|
||||
one = ""
|
||||
other = ""
|
||||
one = "Una palabra"
|
||||
other = "Total {{ .Count }} palabras"
|
||||
|
||||
[section.archiveCounter]
|
||||
one = ""
|
||||
other = ""
|
||||
one = "Solo un artículo"
|
||||
other = "Total {{ .Count }} artículos"
|
||||
# === Section ===
|
||||
|
||||
# === Pagination ===
|
||||
@@ -92,6 +91,8 @@ facebookLanguageCode = "es_MX"
|
||||
[assets]
|
||||
search = "Buscar"
|
||||
searchPlaceholder = "Busca títulos o contenido..."
|
||||
searchIn = "Buscar en {{ . }}"
|
||||
gotoResultsPage = "Ir a la página de resultados de búsqueda ..."
|
||||
clear = "Limpiar"
|
||||
cancel = "Cancelar"
|
||||
noResultsFound = "No se encontraron resultados"
|
||||
@@ -111,26 +112,27 @@ other = "Compartir en"
|
||||
# === posts/single.html ===
|
||||
[single]
|
||||
contents = "Contenido"
|
||||
pin = ""
|
||||
repost = ""
|
||||
pin = "Fijar en la parte superior"
|
||||
repost = "Repostear"
|
||||
publishedOnDate = "publicado el {{ .Date }}"
|
||||
views = "vistas"
|
||||
comments = "Comentarios"
|
||||
author = "Autor"
|
||||
updatedOnDate = "Actualizado el {{ .Date }}"
|
||||
readMarkdown = "Leer Markdown"
|
||||
viewSource = ""
|
||||
viewSource = "Ver fuente"
|
||||
editThisPage = "Editar esta página"
|
||||
reportIssue = ""
|
||||
reportIssue = "Reportar problema"
|
||||
openInEditor = "Abrir en el editor"
|
||||
back = "Regresar"
|
||||
home = "Inicio"
|
||||
readMore = "Leer más"
|
||||
expirationReminder = "Este artículo se actualizó por última vez el {{ .Date }}, es posible que el contenido no esté actualizado."
|
||||
encryptedAbstract = ""
|
||||
encryptedMessage = ""
|
||||
encryptedAbstract = "Este artículo ha sido encriptado, por lo que su contenido bruto es invisible!"
|
||||
encryptedMessage = "Por favor, ingrese la contraseña"
|
||||
password = "Contraseña"
|
||||
enterBtn = ""
|
||||
encryptyAgain = ""
|
||||
enterBtn = "Entrar"
|
||||
encryptyAgain = "Encriptar de nuevo"
|
||||
relatedContent = "Contenido relacionado"
|
||||
|
||||
[single.includedIn]
|
||||
@@ -150,11 +152,11 @@ one = "Un minuto"
|
||||
other = "{{ .Count }} minutos"
|
||||
|
||||
[single.reward]
|
||||
donate = ""
|
||||
wechatpay = ""
|
||||
alipay = ""
|
||||
paypal = ""
|
||||
bitcoin = ""
|
||||
donate = "Donar"
|
||||
wechatpay = "WeChat Pay"
|
||||
alipay = "Alipay"
|
||||
paypal = "PayPal"
|
||||
bitcoin = "Bitcoin"
|
||||
# === posts/single.html ===
|
||||
|
||||
# === 404.html ===
|
||||
@@ -175,18 +177,31 @@ other = "No está conectado a Internet, solo estarán disponibles las páginas a
|
||||
|
||||
# === GitHub Alert ===
|
||||
[alert]
|
||||
note = ""
|
||||
tip = ""
|
||||
important = ""
|
||||
warning = ""
|
||||
caution = ""
|
||||
note = "Nota"
|
||||
tip = "Consejo"
|
||||
important = "Importante"
|
||||
warning = "Advertencia"
|
||||
caution = "Precaución"
|
||||
# === GitHub Alert ===
|
||||
|
||||
# === Task lists ===
|
||||
[taskList]
|
||||
" " = "No verificado"
|
||||
"x" = "Verificado"
|
||||
"/" = "En progreso"
|
||||
"-" = "Cancelado"
|
||||
"<" = "Programado"
|
||||
">" = "Reprogramado"
|
||||
"!" = "Importante"
|
||||
"?" = "Pregunta"
|
||||
# === Task lists ===
|
||||
|
||||
# === shortcodes/admonition.html ===
|
||||
[admonition]
|
||||
note = "Nota"
|
||||
abstract = "Resumen"
|
||||
info = "Información"
|
||||
todo = "Por hacer"
|
||||
tip = "Consejo"
|
||||
success = "Éxito"
|
||||
question = "Pregunta"
|
||||
|
||||
+30
-14
@@ -7,7 +7,7 @@
|
||||
configurationError = "Erreur de configuration\nVous n'avez pas configuré la version de FixIt correctement. Voir https://fixit.lruihao.cn/documentation/basics/#theme-configuration"
|
||||
compatibilityError = "Erreur de compatibilité ({{ .From }} -> {{ .To }}):\nVous avez une mise à jour incompatible. Voir https://github.com/hugo-fixit/FixIt/releases"
|
||||
devVersionWarn = "Vous utilisez une version de développement de FixIt. Veuillez considérer l'utilisation d'une version stable.\nVoir https://github.com/hugo-fixit/FixIt/releases"
|
||||
devEnvWarn = "L'environnement actuel est \"développement\". Le \"système de commentaires\", le \"PWA\", le \"CDN\" et la \"prise d'empreinte\" seront désactivés."
|
||||
devEnvWarn = "L'environnement actuel est \"développement\". Le \"système de commentaires\", le \"PWA\", le \"CDN\", le \"prise d'empreinte\" et la \"analyses\" seront désactivés."
|
||||
quicklyUpgrade = "La mise à jour rapide utilise la commande: "
|
||||
# === init ===
|
||||
|
||||
@@ -20,7 +20,7 @@ noscript = "Ce site Web fonctionne mieux quand JavaScript est activé."
|
||||
|
||||
# === Taxonomy ===
|
||||
[archives]
|
||||
other = ""
|
||||
other = "Archives"
|
||||
|
||||
[allSome]
|
||||
other = "Tous les {{ .Some }}"
|
||||
@@ -32,10 +32,10 @@ other = "Catégorie"
|
||||
other = "Catégories"
|
||||
|
||||
[collection]
|
||||
other = ""
|
||||
other = "Collection"
|
||||
|
||||
[collections]
|
||||
other = ""
|
||||
other = "Collections"
|
||||
|
||||
[tag]
|
||||
other = "Tag"
|
||||
@@ -56,8 +56,8 @@ one = "Nombre de mots: 1"
|
||||
other = "Nombre de mots: {{ .Count }}"
|
||||
|
||||
[section.archiveCounter]
|
||||
one = ""
|
||||
other = ""
|
||||
one = "Seulement un article"
|
||||
other = "{{ .Count }} articles au total"
|
||||
# === Section ===
|
||||
|
||||
# === Pagination ===
|
||||
@@ -91,6 +91,8 @@ facebookLanguageCode = "fr"
|
||||
[assets]
|
||||
search = "Chercher"
|
||||
searchPlaceholder = "Rechercher des titres, des contenus..."
|
||||
searchIn = "Rechercher dans {{ . }}"
|
||||
gotoResultsPage = "Aller à la page de résultats de recherche ..."
|
||||
clear = "Effacer"
|
||||
cancel = "Annuler"
|
||||
noResultsFound = "Aucun résultat trouvé"
|
||||
@@ -110,7 +112,7 @@ other = "Partager via"
|
||||
# === posts/single.html ===
|
||||
[single]
|
||||
contents = "Contenus"
|
||||
pin = ""
|
||||
pin = "Épingler en haut"
|
||||
repost = "Reposter"
|
||||
publishedOnDate = "publié le {{ .Date }}"
|
||||
views = "vues"
|
||||
@@ -118,9 +120,10 @@ comments = "commentaires"
|
||||
author = "Auteur"
|
||||
updatedOnDate = "Mis à jour le {{ .Date }}"
|
||||
readMarkdown = "Ouvrir le Markdown"
|
||||
viewSource = ""
|
||||
viewSource = "Voir la source"
|
||||
editThisPage = "Modifier cette page"
|
||||
reportIssue = ""
|
||||
reportIssue = "Signaler un problème"
|
||||
openInEditor = "Ouvrir dans l'éditeur"
|
||||
back = "Retour"
|
||||
home = "Accueil"
|
||||
readMore = "En savoir plus"
|
||||
@@ -174,18 +177,31 @@ other = "Vous n'êtes pas connecté à Internet, seules les pages mises en cache
|
||||
|
||||
# === GitHub Alert ===
|
||||
[alert]
|
||||
note = ""
|
||||
tip = ""
|
||||
important = ""
|
||||
warning = ""
|
||||
caution = ""
|
||||
note = "Remarque"
|
||||
tip = "Astuce"
|
||||
important = "Important"
|
||||
warning = "Avertissement"
|
||||
caution = "Attention"
|
||||
# === GitHub Alert ===
|
||||
|
||||
# === Task lists ===
|
||||
[taskList]
|
||||
" " = "Non vérifié"
|
||||
"x" = "Vérifié"
|
||||
"/" = "En cours"
|
||||
"-" = "Annulé"
|
||||
"<" = "Planifié"
|
||||
">" = "Replanifié"
|
||||
"!" = "Important"
|
||||
"?" = "Question"
|
||||
# === Task lists ===
|
||||
|
||||
# === shortcodes/admonition.html ===
|
||||
[admonition]
|
||||
note = "Remarque"
|
||||
abstract = "Résumé"
|
||||
info = "Info"
|
||||
todo = "À faire"
|
||||
tip = "Astuce"
|
||||
success = "Succès"
|
||||
question = "Question"
|
||||
|
||||
+22
-6
@@ -7,7 +7,7 @@
|
||||
configurationError = "कन्फ़िग्यरेशन त्रुटि \nआपने फिक्सइट संस्करण पैरामीटर को सही ढंग से कॉन्फ़िगर नहीं किया है।. यह देखें: https://fixit.lruihao.cn/documentation/basics/#theme-configuration"
|
||||
compatibilityError = "संगतता त्रुटि ({{ .From }} -> {{ .To }}):\nआपके पास एक असंगत अपडेट है. यह देखें: https://github.com/hugo-fixit/FixIt/releases"
|
||||
devVersionWarn = "आप फिक्सइट के डिवेलपर संस्करण का उपयोग कर रहे हैं। कृपया एक स्थिर संस्करण का उपयोग करने पर विचार करें।\nयह देखें: https://github.com/hugo-fixit/FixIt/releases"
|
||||
devEnvWarn = "वर्तमान परिवेश \"डिवेलप्मेंट\" का है। \"टिप्पणी प्रणाली\", \"पीडब्ल्यूए\", \"सीडीएन\" और \"फ़िंगरप्रिंट\" अक्षम कर दिए जाएंगे। "
|
||||
devEnvWarn = "वर्तमान परिवेश \"डिवेलप्मेंट\" का है। \"टिप्पणी प्रणाली\", \"पीडब्ल्यूए\", \"सीडीएन\", \"फ़िंगरप्रिंट\" और \"विश्लेषण\" अक्षम कर दिए जाएंगे।"
|
||||
quicklyUpgrade = "शीघ्रता से अपग्रेड यह कमांड का उपयोग करें: "
|
||||
# === init ===
|
||||
|
||||
@@ -92,6 +92,8 @@ facebookLanguageCode = "hi"
|
||||
[assets]
|
||||
search = "खोज"
|
||||
searchPlaceholder = "शीर्षक या सामग्री खोजें ..."
|
||||
searchIn = "{{ . }} में खोजें"
|
||||
gotoResultsPage = "खोज परिणाम पेज पर जाएं ..."
|
||||
clear = "साफ़ करें"
|
||||
cancel = "रद्द करें"
|
||||
noResultsFound = "कोई परिणाम नहीं मिला"
|
||||
@@ -122,6 +124,7 @@ readMarkdown = "मार्कडाउन पढ़ें"
|
||||
viewSource = "स्रोत देखें"
|
||||
editThisPage = "इस पृष्ठ को संपादित करें"
|
||||
reportIssue = "समस्या की रिपोर्ट करें"
|
||||
openInEditor = "संपादक में खोलें"
|
||||
back = "पीछे"
|
||||
home = "घर"
|
||||
readMore = "और पढ़ें"
|
||||
@@ -175,18 +178,31 @@ other = "आप इंटरनेट से कनेक्ट नहीं ह
|
||||
|
||||
# === GitHub Alert ===
|
||||
[alert]
|
||||
note = ""
|
||||
tip = ""
|
||||
important = ""
|
||||
warning = ""
|
||||
caution = ""
|
||||
note = "ध्यान दें"
|
||||
tip = "टिप"
|
||||
important = "महत्वपूर्ण"
|
||||
warning = "चेतावनी"
|
||||
caution = "सावधान"
|
||||
# === GitHub Alert ===
|
||||
|
||||
# === Task lists ===
|
||||
[taskList]
|
||||
" " = "जांच नहीं की गई"
|
||||
"x" = "जांच की गई"
|
||||
"/" = "काम जारी है"
|
||||
"-" = "रद्द किया गया"
|
||||
"<" = "अनुसूचित"
|
||||
">" = "पुनः अनुसूचित"
|
||||
"!" = "महत्वपूर्ण"
|
||||
"?" = "सवाल"
|
||||
# === Task lists ===
|
||||
|
||||
# === shortcodes/admonition.html ===
|
||||
[admonition]
|
||||
note = "ध्यान दें"
|
||||
abstract = "सारांश"
|
||||
info = "जानकारी"
|
||||
todo = "करने के लिए"
|
||||
tip = "टिप"
|
||||
success = "सफलता"
|
||||
question = "प्रश्न"
|
||||
|
||||
+47
-32
@@ -1,27 +1,26 @@
|
||||
# Translations for Italian
|
||||
# Traduzioni per l'italiano
|
||||
# https://gohugo.io/content-management/multilingual/#translation-of-strings
|
||||
# TODO Some fields are waiting for your translation
|
||||
|
||||
# === init ===
|
||||
[init]
|
||||
configurationError = ""
|
||||
compatibilityError = ""
|
||||
devVersionWarn = ""
|
||||
devEnvWarn = ""
|
||||
quicklyUpgrade = ""
|
||||
configurationError = "Errore di configurazione\nNon hai ancora configurato correttamente il parametro della versione di FixIt. Vedi https://fixit.lruihao.cn/documentation/basics/#theme-configuration"
|
||||
compatibilityError = "Errore di compatibilità ({{ .From }} -> {{ .To }}):\nHai un aggiornamento incompatibile. Vedi https://github.com/hugo-fixit/FixIt/releases"
|
||||
devVersionWarn = "Stai utilizzando una versione di sviluppo di FixIt. Si prega di considerare l'utilizzo di una versione stabile.\nVedi https://github.com/hugo-fixit/FixIt/releases"
|
||||
devEnvWarn = "L'ambiente attuale è \"sviluppo\". Il \"sistema di commenti\", \"PWA\", \"CDN\", \"impronta digitale\" e \"analisi\" saranno disabilitati."
|
||||
quicklyUpgrade = "Aggiornamento rapido usa il comando: "
|
||||
# === init ===
|
||||
|
||||
# === baseof ===
|
||||
[baseof]
|
||||
backToTop = "Torna all'inizio"
|
||||
viewComments = "Vedi commenti"
|
||||
noscript = ""
|
||||
noscript = "Questo sito funziona meglio con JavaScript abilitato."
|
||||
# === baseof ===
|
||||
|
||||
# === Taxonomy ===
|
||||
[archives]
|
||||
other = ""
|
||||
other = "Archivi"
|
||||
|
||||
[allSome]
|
||||
other = "Tutti {{ .Some }}"
|
||||
@@ -33,10 +32,10 @@ other = "Categoria"
|
||||
other = "Categorie"
|
||||
|
||||
[collection]
|
||||
other = ""
|
||||
other = "Collezione"
|
||||
|
||||
[collections]
|
||||
other = ""
|
||||
other = "Collezioni"
|
||||
|
||||
[tag]
|
||||
other = "Etichetta"
|
||||
@@ -53,12 +52,12 @@ other = "Articoli"
|
||||
recentlyUpdated = "Aggiornati di recente"
|
||||
|
||||
[section.totalWordCount]
|
||||
one = ""
|
||||
other = ""
|
||||
one = "Una parola"
|
||||
other = "Totale {{ .Count }} parole"
|
||||
|
||||
[section.archiveCounter]
|
||||
one = ""
|
||||
other = ""
|
||||
one = "Solo un articolo"
|
||||
other = "Totale {{ .Count }} articoli"
|
||||
# === Section ===
|
||||
|
||||
# === Pagination ===
|
||||
@@ -92,6 +91,8 @@ facebookLanguageCode = "it"
|
||||
[assets]
|
||||
search = "Cerca"
|
||||
searchPlaceholder = "Cerca il titolo o il contenuto dell'articolo ..."
|
||||
searchIn = "Cerca in"
|
||||
gotoResultsPage = "Vai alla pagina dei risultati della ricerca ..."
|
||||
clear = "Chiaro"
|
||||
cancel = "Annulla"
|
||||
noResultsFound = "Nessun risultato trovato"
|
||||
@@ -111,26 +112,27 @@ other = "Condividi su"
|
||||
# === posts/single.html ===
|
||||
[single]
|
||||
contents = "Contenuti"
|
||||
pin = ""
|
||||
repost = ""
|
||||
pin = "Fissa in alto"
|
||||
repost = "Ripubblica"
|
||||
publishedOnDate = "pubblicato su {{ .Date }}"
|
||||
views = "visualizzazioni"
|
||||
comments = "commenti"
|
||||
author = "Autore"
|
||||
updatedOnDate = "Aggiornato il {{ .Date }}"
|
||||
readMarkdown = "Leggi Markdown"
|
||||
viewSource = ""
|
||||
viewSource = "Visualizza sorgente"
|
||||
editThisPage = "Modifica questa pagina"
|
||||
reportIssue = ""
|
||||
reportIssue = "Segnala un problema"
|
||||
openInEditor = "Apri nell'editor"
|
||||
back = "Indietro"
|
||||
home = "Home"
|
||||
readMore = "Leggi di più"
|
||||
expirationReminder = "Questo articolo è stato aggiornato l'ultima volta il {{ .Date }}, il contenuto potrebbe non essere aggiornato."
|
||||
encryptedAbstract = ""
|
||||
encryptedMessage = ""
|
||||
encryptedAbstract = "Questo articolo è stato crittografato, quindi il suo contenuto grezzo è invisibile!"
|
||||
encryptedMessage = "Per favore inserisci la password"
|
||||
password = "Password"
|
||||
enterBtn = ""
|
||||
encryptyAgain = ""
|
||||
enterBtn = "Entra"
|
||||
encryptyAgain = "Crittografa di nuovo"
|
||||
relatedContent = "Contenuti correlati"
|
||||
|
||||
[single.includedIn]
|
||||
@@ -150,11 +152,11 @@ one = "Un minuto"
|
||||
other = "{{ .Count }} minuti"
|
||||
|
||||
[single.reward]
|
||||
donate = ""
|
||||
wechatpay = ""
|
||||
alipay = ""
|
||||
paypal = ""
|
||||
bitcoin = ""
|
||||
donate = "Dona"
|
||||
wechatpay = "WeChat Pay"
|
||||
alipay = "Alipay"
|
||||
paypal = "PayPal"
|
||||
bitcoin = "Bitcoin"
|
||||
# === posts/single.html ===
|
||||
|
||||
# === 404.html ===
|
||||
@@ -175,18 +177,31 @@ other = "Non sei connesso a Internet, saranno disponibili solo le pagine memoriz
|
||||
|
||||
# === GitHub Alert ===
|
||||
[alert]
|
||||
note = ""
|
||||
tip = ""
|
||||
important = ""
|
||||
warning = ""
|
||||
caution = ""
|
||||
note = "Nota"
|
||||
tip = "Suggerimento"
|
||||
important = "Importante"
|
||||
warning = "Avvertimento"
|
||||
caution = "Attenzione"
|
||||
# === GitHub Alert ===
|
||||
|
||||
# === Task lists ===
|
||||
[taskList]
|
||||
" " = "Non verificato"
|
||||
"x" = "Verificato"
|
||||
"/" = "In corso"
|
||||
"-" = "Annullato"
|
||||
"<" = "Programmato"
|
||||
">" = "Ripianificato"
|
||||
"!" = "Importante"
|
||||
"?" = "Domanda"
|
||||
# === Task lists ===
|
||||
|
||||
# === shortcodes/admonition.html ===
|
||||
[admonition]
|
||||
note = "Note"
|
||||
abstract = "Sommario"
|
||||
info = "Info"
|
||||
todo = "Da fare"
|
||||
tip = "Suggerimenti"
|
||||
success = "Successo"
|
||||
question = "Domande"
|
||||
|
||||
+47
-32
@@ -1,27 +1,26 @@
|
||||
# Translations for Polish
|
||||
# Tłumaczenie na język polski
|
||||
# https://gohugo.io/content-management/multilingual/#translation-of-strings
|
||||
# TODO Some fields are waiting for your translation
|
||||
|
||||
# === init ===
|
||||
[init]
|
||||
configurationError = ""
|
||||
compatibilityError = ""
|
||||
devVersionWarn = ""
|
||||
devEnvWarn = ""
|
||||
quicklyUpgrade = ""
|
||||
configurationError = "Błąd konfiguracji\nNie skonfigurowałeś jeszcze poprawnie parametru wersji FixIt. Zobacz https://fixit.lruihao.cn/documentation/basics/#theme-configuration"
|
||||
compatibilityError = "Błąd zgodności ({{ .From }} -> {{ .To }}):\nMasz niekompatybilną aktualizację. Zobacz https://github.com/hugo-fixit/FixIt/releases"
|
||||
devVersionWarn = "Używasz wersji deweloperskiej FixIt. Proszę rozważyć użycie stabilnej wersji.\nZobacz https://github.com/hugo-fixit/FixIt/releases"
|
||||
devEnvWarn = "Obecne środowisko to \"rozwój\". \"System komentarzy\", \"PWA\", \"CDN\", \"odcisk palca\" i \"analiza\" będą wyłączone."
|
||||
quicklyUpgrade = "Szybka aktualizacja użyj polecenia: "
|
||||
# === init ===
|
||||
|
||||
# === baseof ===
|
||||
[baseof]
|
||||
backToTop = "Powrót do góry"
|
||||
viewComments = "Zobacz komentarze"
|
||||
noscript = ""
|
||||
noscript = "Ta strona działa najlepiej z włączonym JavaScriptem."
|
||||
# === baseof ===
|
||||
|
||||
# === Taxonomy ===
|
||||
[archives]
|
||||
other = ""
|
||||
other = "Archiwum"
|
||||
|
||||
[allSome]
|
||||
other = "Wszystkie {{ .Some }}"
|
||||
@@ -33,10 +32,10 @@ other = "Kategoria"
|
||||
other = "Kategorie"
|
||||
|
||||
[collection]
|
||||
other = ""
|
||||
other = "Collection"
|
||||
|
||||
[collections]
|
||||
other = ""
|
||||
other = "Collections"
|
||||
|
||||
[tag]
|
||||
other = "Tag"
|
||||
@@ -53,12 +52,12 @@ other = "Posty"
|
||||
recentlyUpdated = "Ostatnio zaktualizowane"
|
||||
|
||||
[section.totalWordCount]
|
||||
one = ""
|
||||
other = ""
|
||||
one = "Jedno słowo"
|
||||
other = "Łącznie {{ .Count }} słów"
|
||||
|
||||
[section.archiveCounter]
|
||||
one = ""
|
||||
other = ""
|
||||
one = "Tylko jeden artykuł"
|
||||
other = "Łącznie {{ .Count }} artykułów"
|
||||
# === Section ===
|
||||
|
||||
# === Pagination ===
|
||||
@@ -92,6 +91,8 @@ facebookLanguageCode = "pl"
|
||||
[assets]
|
||||
search = "Szukaj"
|
||||
searchPlaceholder = "Wyszukaj tytuł lub treść artykułu ..."
|
||||
searchIn = "Szukaj w {{ . }}"
|
||||
gotoResultsPage = "Przejdź do strony wyników wyszukiwania ..."
|
||||
clear = "Pusty"
|
||||
cancel = "Anuluj"
|
||||
noResultsFound = "Nie znaleziono wyników"
|
||||
@@ -111,26 +112,27 @@ other = "Udostępnij na"
|
||||
# === posts/single.html ===
|
||||
[single]
|
||||
contents = "Spis treści"
|
||||
pin = ""
|
||||
repost = ""
|
||||
pin = "Przypnij na górze"
|
||||
repost = "Prześlij ponownie"
|
||||
publishedOnDate = "opublikowano {{ .Date }}"
|
||||
views = "wyświetleń"
|
||||
comments = "komentarzy"
|
||||
author = "Autor"
|
||||
updatedOnDate = "Zaktualizowano {{ .Date }}"
|
||||
readMarkdown = "Zobacz Markdown"
|
||||
viewSource = ""
|
||||
viewSource = "Zobacz źródło"
|
||||
editThisPage = "Edytuj tą stronę"
|
||||
reportIssue = ""
|
||||
reportIssue = "Zgłoś problem"
|
||||
openInEditor = "Otwórz w edytorze"
|
||||
back = "Wstecz"
|
||||
home = "Strona główna"
|
||||
readMore = "Czytaj więcej"
|
||||
expirationReminder = "Ten artykuł był ostatnio aktualizowany {{ .Date }}, jego treść może być nieaktualna."
|
||||
encryptedAbstract = ""
|
||||
encryptedMessage = ""
|
||||
encryptedAbstract = "Ten artykuł został zaszyfrowany, więc jego surowa treść jest niewidoczna!"
|
||||
encryptedMessage = "Proszę wprowadzić hasło"
|
||||
password = "Hasło"
|
||||
enterBtn = ""
|
||||
encryptyAgain = ""
|
||||
enterBtn = "Wejdź"
|
||||
encryptyAgain = "Zaszyfruj ponownie"
|
||||
relatedContent = "Powiązane treści"
|
||||
|
||||
[single.includedIn]
|
||||
@@ -150,11 +152,11 @@ one = "Jedna minuta"
|
||||
other = "{{ .Count }} minuty"
|
||||
|
||||
[single.reward]
|
||||
donate = ""
|
||||
wechatpay = ""
|
||||
alipay = ""
|
||||
paypal = ""
|
||||
bitcoin = ""
|
||||
donate = "Wesprzyj"
|
||||
wechatpay = "WeChat Pay"
|
||||
alipay = "Alipay"
|
||||
paypal = "PayPal"
|
||||
bitcoin = "Bitcoin"
|
||||
# === posts/single.html ===
|
||||
|
||||
# === 404.html ===
|
||||
@@ -175,18 +177,31 @@ other = "Nie masz połączenia z Internetem, dostępne będą tylko strony z pam
|
||||
|
||||
# === GitHub Alert ===
|
||||
[alert]
|
||||
note = ""
|
||||
tip = ""
|
||||
important = ""
|
||||
warning = ""
|
||||
caution = ""
|
||||
note = "Notatka"
|
||||
tip = "Wskazówka"
|
||||
important = "Ważne"
|
||||
warning = "Ostrzeżenie"
|
||||
caution = "Ostrożność"
|
||||
# === GitHub Alert ===
|
||||
|
||||
# === Task lists ===
|
||||
[taskList]
|
||||
" " = "Niezweryfikowane"
|
||||
"x" = "Zweryfikowane"
|
||||
"/" = "W toku"
|
||||
"-" = "Anulowane"
|
||||
"<" = "Zaplanowane"
|
||||
">" = "Przełożone"
|
||||
"!" = "Ważne"
|
||||
"?" = "Pytanie"
|
||||
# === Task lists ===
|
||||
|
||||
# === shortcodes/admonition.html ===
|
||||
[admonition]
|
||||
note = "Notka"
|
||||
abstract = "Streszczenie"
|
||||
info = "Info"
|
||||
todo = "Do zrobienia"
|
||||
tip = "Wskazówka"
|
||||
success = "Sukces"
|
||||
question = "Pytanie"
|
||||
|
||||
+63
-47
@@ -1,27 +1,26 @@
|
||||
# Translations for Brazilian Portuguese
|
||||
# Tradução para português do Brasil
|
||||
# https://gohugo.io/content-management/multilingual/#translation-of-strings
|
||||
# TODO Some fields are waiting for your translation
|
||||
|
||||
# === init ===
|
||||
[init]
|
||||
configurationError = ""
|
||||
compatibilityError = ""
|
||||
devVersionWarn = ""
|
||||
devEnvWarn = ""
|
||||
quicklyUpgrade = ""
|
||||
configurationError = "Erro de configuração\nVocê ainda não configurou o parâmetro da versão do FixIt corretamente. Consulte https://fixit.lruihao.cn/documentation/basics/#theme-configuration"
|
||||
compatibilityError = "Erro de compatibilidade ({{ .From }} -> {{ .To }}):\nVocê tem uma atualização incompatível. Consulte https://github.com/hugo-fixit/FixIt/releases"
|
||||
devVersionWarn = "Você está usando a versão de desenvolvedor do FixIt. Por favor, use uma versão estável. \nConsulte https://github.com/hugo-fixit/FixIt/releases"
|
||||
devEnvWarn = "O ambiente atual é \"development\". O \"comment system\", \"PWA\", \"CDN\", \"fingerprint\" e \"analytics\" serão desativados."
|
||||
quicklyUpgrade = "Utilize o comando para atualizar rapidamente:"
|
||||
# === init ===
|
||||
|
||||
# === baseof ===
|
||||
[baseof]
|
||||
backToTop = "Voltar ao topo"
|
||||
viewComments = "Ver comentários"
|
||||
noscript = ""
|
||||
noscript = "Este site funciona melhor com o JavaScript ativado."
|
||||
# === baseof ===
|
||||
|
||||
# === Taxonomy ===
|
||||
[archives]
|
||||
other = ""
|
||||
other = "Arquivos"
|
||||
|
||||
[allSome]
|
||||
other = "{{ .Some }}"
|
||||
@@ -33,10 +32,10 @@ other = "Categoria"
|
||||
other = "Categorias"
|
||||
|
||||
[collection]
|
||||
other = ""
|
||||
other = "Coleção"
|
||||
|
||||
[collections]
|
||||
other = ""
|
||||
other = "Coleções"
|
||||
|
||||
[tag]
|
||||
other = "Tag"
|
||||
@@ -46,6 +45,7 @@ other = "Tags"
|
||||
|
||||
[posts]
|
||||
other = "Posts"
|
||||
|
||||
# === Taxonomy ===
|
||||
|
||||
# === Section ===
|
||||
@@ -53,12 +53,12 @@ other = "Posts"
|
||||
recentlyUpdated = "Recentemente atualizado"
|
||||
|
||||
[section.totalWordCount]
|
||||
one = ""
|
||||
other = ""
|
||||
one = "Apenas uma palavra"
|
||||
other = "Total de {{ .Count }} palavras"
|
||||
|
||||
[section.archiveCounter]
|
||||
one = ""
|
||||
other = ""
|
||||
one = "Apenas um artigo"
|
||||
other = "{{ .Count }} artigos no total"
|
||||
# === Section ===
|
||||
|
||||
# === Pagination ===
|
||||
@@ -75,86 +75,89 @@ switchTheme = "Trocar tema"
|
||||
|
||||
# === partials/footer.html ===
|
||||
[footer]
|
||||
poweredBySome = "Possibilitado por {{ .Hugo }} | Tema - {{ .Theme }}"
|
||||
poweredBySome = "Criado com {{ .Hugo }} | Tema - {{ .Theme }}"
|
||||
siteUV = "Total de visitantes"
|
||||
sitePV = "Total de visitas"
|
||||
siteRunning = "Website running ..."
|
||||
siteRunning = "Site no ar..."
|
||||
# === partials/footer.html ===
|
||||
|
||||
# === partials/comment.html ===
|
||||
[comment]
|
||||
valineLang = "en" # Valine não suporta português
|
||||
valinePlaceholder = "O seu comentário ..."
|
||||
valinePlaceholder = "O seu comentário..."
|
||||
facebookLanguageCode = "pt_BR"
|
||||
# === partials/comment.html ===
|
||||
|
||||
# === partials/assets.html ===
|
||||
[assets]
|
||||
search = "Pesquisa"
|
||||
searchPlaceholder = "Pesquisar títulos ou conteúdos ..."
|
||||
searchPlaceholder = "Pesquisar títulos ou conteúdos..."
|
||||
searchIn = "Pesquisar em {{ . }}"
|
||||
gotoResultsPage = "Ir para a página de resultados da pesquisa..."
|
||||
clear = "Limpar"
|
||||
cancel = "Cancelar"
|
||||
noResultsFound = "Nenhum resultado encontrado"
|
||||
copyToClipboard = "Copiar para a área de transferência"
|
||||
editLockTitle = "Bloquear bloco de código editável"
|
||||
editUnLockTitle = "Desbloqueie o bloco de código editável"
|
||||
editUnLockTitle = "Desbloquear o bloco de código editável"
|
||||
cookieconsentMessage = "Este site usa Cookies para melhorar sua experiência."
|
||||
cookieconsentDismiss = "Aceita"
|
||||
cookieconsentDismiss = "Aceitar"
|
||||
cookieconsentLink = "Saber mais"
|
||||
# === partials/assets.html ===
|
||||
|
||||
# === partials/plugin/share.html ===
|
||||
[shareOn]
|
||||
other = "Compartilhe em"
|
||||
other = "Compartilhar em"
|
||||
# === partials/plugin/share.html ===
|
||||
|
||||
# === posts/single.html ===
|
||||
[single]
|
||||
contents = "Conteúdos"
|
||||
pin = ""
|
||||
repost = ""
|
||||
pin = "Fixar no topo"
|
||||
repost = "Repostar"
|
||||
publishedOnDate = "publicado em {{ .Date }}"
|
||||
views = "visualizações"
|
||||
comments = "comentários"
|
||||
author = "Autor"
|
||||
updatedOnDate = "Atualizado em {{ .Date }}"
|
||||
readMarkdown = "Leia em Markdown"
|
||||
viewSource = ""
|
||||
viewSource = "Ver a fonte"
|
||||
editThisPage = "Editar esta página"
|
||||
reportIssue = ""
|
||||
reportIssue = "Reportar problema"
|
||||
openInEditor = "Abrir no editor"
|
||||
back = "Voltar"
|
||||
home = "Home"
|
||||
readMore = "Leia mais"
|
||||
expirationReminder = "Este artigo foi atualizado pela última vez em {{ .Date }}, o conteúdo pode estar desatualizado."
|
||||
encryptedAbstract = ""
|
||||
encryptedMessage = ""
|
||||
password = "Contrasinha"
|
||||
enterBtn = ""
|
||||
encryptyAgain = ""
|
||||
encryptedAbstract = "Este artigo foi encriptado, então seu contéudo bruto é invisível!"
|
||||
encryptedMessage = "Por favor, insira a senha"
|
||||
password = "Senha"
|
||||
enterBtn = "Entrar"
|
||||
encryptyAgain = "Encripte novamente"
|
||||
relatedContent = "Conteúdo relacionado"
|
||||
|
||||
[single.includedIn]
|
||||
categories = "incluido em {{ .Categories }}"
|
||||
collections = "incluido em {{ .Collections }}"
|
||||
both = "incluido em {{ .Categories }} e {{ .Collections }}"
|
||||
categories = "incluído em {{ .Categories }}"
|
||||
collections = "incluído em {{ .Collections }}"
|
||||
both = "incluído em {{ .Categories }} e {{ .Collections }}"
|
||||
|
||||
[single.wordCount]
|
||||
one = "Uma palavra"
|
||||
other = "{{ .Count }} palavras"
|
||||
|
||||
[single.fuzzyWordCount]
|
||||
other = ""
|
||||
other = "Cerca de {{ .Count }} palavras"
|
||||
|
||||
[single.readingTime]
|
||||
one = "Um minuto"
|
||||
other = "{{ .Count }} minutos"
|
||||
|
||||
[single.reward]
|
||||
donate = ""
|
||||
wechatpay = ""
|
||||
alipay = ""
|
||||
paypal = ""
|
||||
bitcoin = ""
|
||||
donate = "Doe"
|
||||
wechatpay = "Pague pelo WeChat"
|
||||
alipay = "Alipay"
|
||||
paypal = "PayPal"
|
||||
bitcoin = "Bitcoin"
|
||||
# === posts/single.html ===
|
||||
|
||||
# === 404.html ===
|
||||
@@ -162,7 +165,7 @@ bitcoin = ""
|
||||
other = "Página não encontrada"
|
||||
|
||||
[pageNotFoundText]
|
||||
other = "A página que você procura não existe. Desculpe"
|
||||
other = "A página que você procura não existe. Desculpe."
|
||||
# === 404.html ===
|
||||
|
||||
# === offline ===
|
||||
@@ -175,21 +178,34 @@ other = "Você não está conectado à Internet, apenas as páginas em cache est
|
||||
|
||||
# === GitHub Alert ===
|
||||
[alert]
|
||||
note = ""
|
||||
tip = ""
|
||||
important = ""
|
||||
warning = ""
|
||||
caution = ""
|
||||
note = "Nota"
|
||||
tip = "Sugestão"
|
||||
important = "Importante"
|
||||
warning = "Aviso"
|
||||
caution = "Cuidado"
|
||||
# === GitHub Alert ===
|
||||
|
||||
# === Task lists ===
|
||||
[taskList]
|
||||
" " = "Não verificado"
|
||||
"x" = "Verificado"
|
||||
"/" = "Em progresso"
|
||||
"-" = "Cancelado"
|
||||
"<" = "Agendado"
|
||||
">" = "Reagendado"
|
||||
"!" = "Importante"
|
||||
"?" = "Dúvida"
|
||||
# === Task lists ===
|
||||
|
||||
# === shortcodes/admonition.html ===
|
||||
[admonition]
|
||||
note = "Nota"
|
||||
abstract = "Abstrato"
|
||||
abstract = "Resumo"
|
||||
info = "Info"
|
||||
todo = "A fazer"
|
||||
tip = "Dica"
|
||||
success = "Sucesso"
|
||||
question = "Pergunta"
|
||||
question = "Dúvida"
|
||||
warning = "Aviso"
|
||||
failure = "Falha"
|
||||
danger = "Perigo"
|
||||
|
||||
+47
-32
@@ -1,27 +1,26 @@
|
||||
# Translations for Romanian
|
||||
# Traduceri pentru limba română
|
||||
# https://gohugo.io/content-management/multilingual/#translation-of-strings
|
||||
# TODO Some fields are waiting for your translation
|
||||
|
||||
# === init ===
|
||||
[init]
|
||||
configurationError = ""
|
||||
compatibilityError = ""
|
||||
devVersionWarn = ""
|
||||
devEnvWarn = ""
|
||||
quicklyUpgrade = ""
|
||||
configurationError = "Eroare de configurare\nNu ați configurat corect parametrul versiunii FixIt. Consultați https://fixit.lruihao.cn/documentation/basics/#theme-configuration"
|
||||
compatibilityError = "Eroare de compatibilitate ({{ .From }} -> {{ .To }}):\nAveți o actualizare incompatibilă. Consultați https://github.com/hugo-fixit/FixIt/releases"
|
||||
devVersionWarn = "Utilizați o versiune de dezvoltare a FixIt. Vă rugăm să luați în considerare utilizarea unei versiuni stabile.\nConsultați https://github.com/hugo-fixit/FixIt/releases"
|
||||
devEnvWarn = "Mediul curent este \"dezvoltare\". \"Sistemul de comentarii\", \"PWA\", \"CDN\", \"amprentă\" și \"analize\" vor fi dezactivate."
|
||||
quicklyUpgrade = "Actualizare rapidă utilizați comanda: "
|
||||
# === init ===
|
||||
|
||||
# === baseof ===
|
||||
[baseof]
|
||||
backToTop = "Înapoi Sus"
|
||||
viewComments = "Vizualizare Comentarii"
|
||||
noscript = ""
|
||||
noscript = "Acest site funcționează cel mai bine cu JavaScript activat."
|
||||
# === baseof ===
|
||||
|
||||
# === Taxonomy ===
|
||||
[archives]
|
||||
other = ""
|
||||
other = "Arhive"
|
||||
|
||||
[allSome]
|
||||
other = "Toate {{ .Some }}"
|
||||
@@ -33,10 +32,10 @@ other = "Categorie"
|
||||
other = "Categorii"
|
||||
|
||||
[collection]
|
||||
other = ""
|
||||
other = "Colecție"
|
||||
|
||||
[collections]
|
||||
other = ""
|
||||
other = "Colecții"
|
||||
|
||||
[tag]
|
||||
other = "Etichetă"
|
||||
@@ -53,12 +52,12 @@ other = "Articole"
|
||||
recentlyUpdated = "Actualizat recent"
|
||||
|
||||
[section.totalWordCount]
|
||||
one = ""
|
||||
other = ""
|
||||
one = "Un cuvânt"
|
||||
other = "Total {{ .Count }} cuvinte"
|
||||
|
||||
[section.archiveCounter]
|
||||
one = ""
|
||||
other = ""
|
||||
one = "Un singur articol"
|
||||
other = "{{ .Count }} articole în total"
|
||||
# === Section ===
|
||||
|
||||
# === Pagination ===
|
||||
@@ -92,6 +91,8 @@ facebookLanguageCode = "ro_RO"
|
||||
[assets]
|
||||
search = "Căutare"
|
||||
searchPlaceholder = "Căutarea titlului sau conținutului articolului ..."
|
||||
searchIn = "Căutare în {{ . }}"
|
||||
gotoResultsPage = "Mergi la pagina de rezultate a căutării ..."
|
||||
clear = "Golire"
|
||||
cancel = "Anulare"
|
||||
noResultsFound = "Nici un rezultat gasit"
|
||||
@@ -111,26 +112,27 @@ other = "Distribuie pe"
|
||||
# === posts/single.html ===
|
||||
[single]
|
||||
contents = "Cuprins"
|
||||
pin = ""
|
||||
repost = ""
|
||||
pin = "Fixează în partea de sus"
|
||||
repost = "Repostează"
|
||||
publishedOnDate = "publicat la {{ .Date }}"
|
||||
views = "vizualizări"
|
||||
comments = "comentarii"
|
||||
author = "Autor"
|
||||
updatedOnDate = "Actualizat la {{ .Date }}"
|
||||
readMarkdown = "Citire Markdown"
|
||||
viewSource = ""
|
||||
viewSource = "Vezi sursa"
|
||||
editThisPage = "Editați această pagină"
|
||||
reportIssue = ""
|
||||
reportIssue = "Raportează o problemă"
|
||||
openInEditor = "Deschide în editor"
|
||||
back = "Înapoi"
|
||||
home = "Acasă"
|
||||
readMore = "Citește mai mult"
|
||||
expirationReminder = "Acest articol a fost actualizat ultima dată pe {{ .Date }}, conținutul poate fi depășit."
|
||||
encryptedAbstract = ""
|
||||
encryptedMessage = ""
|
||||
encryptedAbstract = "Acest articol a fost criptat, astfel încât conținutul său brut este invizibil!"
|
||||
encryptedMessage = "Vă rugăm să introduceți parola"
|
||||
password = "Parolă"
|
||||
enterBtn = ""
|
||||
encryptyAgain = ""
|
||||
enterBtn = "Intră"
|
||||
encryptyAgain = "Criptează din nou"
|
||||
relatedContent = "Conținut înrudit"
|
||||
|
||||
[single.includedIn]
|
||||
@@ -150,11 +152,11 @@ one = "Un minut"
|
||||
other = "{{ .Count }} minute"
|
||||
|
||||
[single.reward]
|
||||
donate = ""
|
||||
wechatpay = ""
|
||||
alipay = ""
|
||||
paypal = ""
|
||||
bitcoin = ""
|
||||
# donate = "Donați"
|
||||
wechatpay = "WeChat Pay"
|
||||
alipay = "Alipay"
|
||||
paypal = "PayPal"
|
||||
bitcoin = "Bitcoin"
|
||||
# === posts/single.html ===
|
||||
|
||||
# === 404.html ===
|
||||
@@ -175,18 +177,31 @@ other = "Nu sunteți conectat la Internet, vor fi disponibile doar paginile stoc
|
||||
|
||||
# === GitHub Alert ===
|
||||
[alert]
|
||||
note = ""
|
||||
tip = ""
|
||||
important = ""
|
||||
warning = ""
|
||||
caution = ""
|
||||
note = "Notă"
|
||||
tip = "Sfat"
|
||||
important = "Important"
|
||||
warning = "Avertisment"
|
||||
caution = "Atenție"
|
||||
# === GitHub Alert ===
|
||||
|
||||
# === Task lists ===
|
||||
[taskList]
|
||||
" " = "Necontrolat"
|
||||
"x" = "Controlat"
|
||||
"/" = "În progres"
|
||||
"-" = "Anulat"
|
||||
"<" = "Programat"
|
||||
">" = "Reprogramat"
|
||||
"!" = "Important"
|
||||
"?" = "Întrebare"
|
||||
# === Task lists ===
|
||||
|
||||
# === shortcodes/admonition.html ===
|
||||
[admonition]
|
||||
note = "Notă"
|
||||
abstract = "Rezumat"
|
||||
info = "Info"
|
||||
todo = "De făcut"
|
||||
tip = "Sfat"
|
||||
success = "Succes"
|
||||
question = "Întrebare"
|
||||
|
||||
+42
-27
@@ -1,27 +1,26 @@
|
||||
# Translations for Russian
|
||||
# Переводы на русский
|
||||
# https://gohugo.io/content-management/multilingual/#translation-of-strings
|
||||
# TODO Some fields are waiting for your translation
|
||||
|
||||
# === init ===
|
||||
[init]
|
||||
configurationError = ""
|
||||
compatibilityError = ""
|
||||
devVersionWarn = ""
|
||||
devEnvWarn = ""
|
||||
quicklyUpgrade = ""
|
||||
configurationError = "Ошибка конфигурации\nВы еще не настроили параметр версии FixIt правильно. См. https://fixit.lruihao.cn/documentation/basics/#theme-configuration"
|
||||
compatibilityError = "Ошибка совместимости ({{ .From }} -> {{ .To }}):\nУ вас есть несовместимое обновление. См. https://github.com/hugo-fixit/FixIt/releases"
|
||||
devVersionWarn = "Вы используете версию разработки FixIt. Пожалуйста, рассмотрите возможность использования стабильной версии.\nСм. https://github.com/hugo-fixit/FixIt/releases"
|
||||
devEnvWarn = "Текущая среда - \"разработка\". \"Система комментариев\", \"PWA\", \"CDN\", \"отпечаток\" и \"аналитика\" будут отключены."
|
||||
quicklyUpgrade = "Быстрое обновление используйте команду: "
|
||||
# === init ===
|
||||
|
||||
# === baseof ===
|
||||
[baseof]
|
||||
backToTop = "Наверх"
|
||||
viewComments = "Посмотреть комментарии"
|
||||
noscript = ""
|
||||
noscript = "Этот сайт работает лучше с включенным JavaScript."
|
||||
# === baseof ===
|
||||
|
||||
# === Taxonomy ===
|
||||
[archives]
|
||||
other = ""
|
||||
other = "Архив"
|
||||
|
||||
[allSome]
|
||||
other = "Все {{ .Some }}"
|
||||
@@ -33,10 +32,10 @@ other = "Категория"
|
||||
other = "Категории"
|
||||
|
||||
[collection]
|
||||
other = ""
|
||||
other = "Collection"
|
||||
|
||||
[collections]
|
||||
other = ""
|
||||
other = "Collections"
|
||||
|
||||
[tag]
|
||||
other = "Тэг"
|
||||
@@ -53,12 +52,12 @@ other = "Статьи"
|
||||
recentlyUpdated = "Недавно обновленные"
|
||||
|
||||
[section.totalWordCount]
|
||||
one = ""
|
||||
other = ""
|
||||
one = "Всего одно слово"
|
||||
other = "Всего {{ .Count }} слов"
|
||||
|
||||
[section.archiveCounter]
|
||||
one = ""
|
||||
other = ""
|
||||
one = "Только одна статья"
|
||||
other = "Всего {{ .Count }} статей"
|
||||
# === Section ===
|
||||
|
||||
# === Pagination ===
|
||||
@@ -92,6 +91,8 @@ facebookLanguageCode = "ru_RU"
|
||||
[assets]
|
||||
search = "Поиск"
|
||||
searchPlaceholder = "Поиск заголовков или содержимого ..."
|
||||
searchIn = "Поиск в {{ . }}"
|
||||
gotoResultsPage = "Перейти на страницу результатов поиска ..."
|
||||
clear = "Очистить"
|
||||
cancel = "Отменить"
|
||||
noResultsFound = "Результатов не найдено"
|
||||
@@ -111,26 +112,27 @@ other = "Поделиться в"
|
||||
# === posts/single.html ===
|
||||
[single]
|
||||
contents = "Содержание"
|
||||
pin = ""
|
||||
repost = ""
|
||||
pin = "Закрепить наверху"
|
||||
repost = "Перепостить"
|
||||
publishedOnDate = "Опубликовано {{ .Date }}"
|
||||
views = "просмотров"
|
||||
comments = "комментариев"
|
||||
author = "Автор"
|
||||
updatedOnDate = "Oбновлена {{ .Date }}"
|
||||
readMarkdown = "Читать Markdown"
|
||||
viewSource = ""
|
||||
viewSource = "Просмотреть источник"
|
||||
editThisPage = "Редактировать эту страницу"
|
||||
reportIssue = ""
|
||||
reportIssue = "Сообщить о проблеме"
|
||||
openInEditor = "Открыть в редакторе"
|
||||
back = "Назад"
|
||||
home = "Домой"
|
||||
readMore = "Читать больше"
|
||||
expirationReminder = "Эта статья последний раз обновлялась {{ .Date }}, содержание может быть устаревшим."
|
||||
encryptedAbstract = ""
|
||||
encryptedMessage = ""
|
||||
encryptedAbstract = "Эта статья была зашифрована, поэтому ее исходное содержание невидимо!"
|
||||
encryptedMessage = "Пожалуйста, введите пароль"
|
||||
password = "арготизм"
|
||||
enterBtn = ""
|
||||
encryptyAgain = ""
|
||||
enterBtn = "Войти"
|
||||
encryptyAgain = "Зашифровать снова"
|
||||
relatedContent = "Связанный контент"
|
||||
|
||||
[single.includedIn]
|
||||
@@ -175,18 +177,31 @@ other = "Вы не подключены к интернету, будут дос
|
||||
|
||||
# === GitHub Alert ===
|
||||
[alert]
|
||||
note = ""
|
||||
tip = ""
|
||||
important = ""
|
||||
warning = ""
|
||||
caution = ""
|
||||
note = "Примечание"
|
||||
tip = "Совет"
|
||||
important = "Важно"
|
||||
warning = "Предупреждение"
|
||||
caution = "Осторожно"
|
||||
# === GitHub Alert ===
|
||||
|
||||
# === Task lists ===
|
||||
[taskList]
|
||||
" " = "Не проверено"
|
||||
"x" = "Проверено"
|
||||
"/" = "В процессе"
|
||||
"-" = "Отменено"
|
||||
"<" = "Запланировано"
|
||||
">" = "Перенесено"
|
||||
"!" = "Важно"
|
||||
"?" = "Вопрос"
|
||||
# === Task lists ===
|
||||
|
||||
# === shortcodes/admonition.html ===
|
||||
[admonition]
|
||||
note = "Замечание"
|
||||
abstract = "Краткое описание"
|
||||
info = "Инфо"
|
||||
todo = "Сделать"
|
||||
tip = "Совет"
|
||||
success = "Удачто"
|
||||
question = "Вопрос"
|
||||
|
||||
+47
-32
@@ -1,27 +1,26 @@
|
||||
# Translations for Serbian
|
||||
# Превод на Српски
|
||||
# https://gohugo.io/content-management/multilingual/#translation-of-strings
|
||||
# TODO Some fields are waiting for your translation
|
||||
|
||||
# === init ===
|
||||
[init]
|
||||
configurationError = ""
|
||||
compatibilityError = ""
|
||||
devVersionWarn = ""
|
||||
devEnvWarn = ""
|
||||
quicklyUpgrade = ""
|
||||
configurationError = "Грешка у конфигурацији\nНисте правилно конфигурисали параметар верзије FixIt. Погледајте https://fixit.lruihao.cn/documentation/basics/#theme-configuration"
|
||||
compatibilityError = "Грешка у компатибилности ({{ .From }} -> {{ .To }}):\nИмате некомпатибилно ажурирање. Погледајте https://github.com/hugo-fixit/FixIt/releases"
|
||||
devVersionWarn = "Користите развојну верзију FixIt. Размотрите коришћење стабилне верзије.\nПогледајте https://github.com/hugo-fixit/FixIt/releases"
|
||||
devEnvWarn = "Тренутно окружење је \"развојно\". \"Систем коментара\", \"PWA\", \"CDN\", \"отисак прста\" и \"аналитика\" ће бити онемогућени."
|
||||
quicklyUpgrade = "Брзо ажурирање користите команду: "
|
||||
# === init ===
|
||||
|
||||
# === baseof ===
|
||||
[baseof]
|
||||
backToTop = "Назад на Врх"
|
||||
viewComments = "Погледај Коментаре"
|
||||
noscript = ""
|
||||
noscript = "Овај сајт најбоље ради са омогућеним JavaScript-ом."
|
||||
# === baseof ===
|
||||
|
||||
# === Taxonomy ===
|
||||
[archives]
|
||||
other = ""
|
||||
other = "Остало"
|
||||
|
||||
[allSome]
|
||||
other = "Све {{ .Some }}"
|
||||
@@ -33,10 +32,10 @@ other = "Категорија"
|
||||
other = "Категорије"
|
||||
|
||||
[collection]
|
||||
other = ""
|
||||
other = "Collection"
|
||||
|
||||
[collections]
|
||||
other = ""
|
||||
other = "Collections"
|
||||
|
||||
[tag]
|
||||
other = "Таг"
|
||||
@@ -53,12 +52,12 @@ other = "Постови"
|
||||
recentlyUpdated = "Недавно Ажурирано"
|
||||
|
||||
[section.totalWordCount]
|
||||
one = ""
|
||||
other = ""
|
||||
one = "Једна реч"
|
||||
other = "Укупно {{ .Count }} речи"
|
||||
|
||||
[section.archiveCounter]
|
||||
one = ""
|
||||
other = ""
|
||||
one = "Само један чланак"
|
||||
other = "{{ .Count }} чланака укупно"
|
||||
# === Section ===
|
||||
|
||||
# === Pagination ===
|
||||
@@ -92,6 +91,8 @@ facebookLanguageCode = "sr_RS"
|
||||
[assets]
|
||||
search = "Претрага"
|
||||
searchPlaceholder = "Претражи наслове или садржај..."
|
||||
searchIn = "Претражи у {{ . }}"
|
||||
gotoResultsPage = "Иди на страницу резултата претраге ..."
|
||||
clear = "Очисти"
|
||||
cancel = "Поништи"
|
||||
noResultsFound = "Без резултата"
|
||||
@@ -111,26 +112,27 @@ other = "Подели на"
|
||||
# === posts/single.html ===
|
||||
[single]
|
||||
contents = "Садржаји"
|
||||
pin = ""
|
||||
repost = ""
|
||||
pin = "Закачи"
|
||||
repost = "Поново објави"
|
||||
publishedOnDate = "објављено {{ .Date }}"
|
||||
views = "прегледа"
|
||||
comments = "коментари"
|
||||
author = "Аутор"
|
||||
updatedOnDate = "Ажурирано {{ .Date }}"
|
||||
readMarkdown = "Читај Markdown"
|
||||
viewSource = ""
|
||||
viewSource = "Погледај извор"
|
||||
editThisPage = "Уреди ову страницу"
|
||||
reportIssue = ""
|
||||
reportIssue = "Пријави проблем"
|
||||
openInEditor = "Отвори у уреднику"
|
||||
back = "Назад"
|
||||
home = "Почетна"
|
||||
readMore = "Прочитај више"
|
||||
expirationReminder = "Овај чланак је последњи пут ажуриран {{ .Date }}, садржај је можда застарео."
|
||||
encryptedAbstract = ""
|
||||
encryptedMessage = ""
|
||||
encryptedAbstract = "Овај чланак је шифрован."
|
||||
encryptedMessage = "Унесите лозинку да бисте видели садржај."
|
||||
password = "Паролица"
|
||||
enterBtn = ""
|
||||
encryptyAgain = ""
|
||||
enterBtn = "Унеси"
|
||||
encryptyAgain = "Поново шифруј"
|
||||
relatedContent = "Повезани садржај"
|
||||
|
||||
[single.includedIn]
|
||||
@@ -150,11 +152,11 @@ one = "Један минут"
|
||||
other = "{{ .Count }} минута"
|
||||
|
||||
[single.reward]
|
||||
donate = ""
|
||||
wechatpay = ""
|
||||
alipay = ""
|
||||
paypal = ""
|
||||
bitcoin = ""
|
||||
donate = "Донирај"
|
||||
wechatpay = "WeChat Pay"
|
||||
alipay = "Alipay"
|
||||
paypal = "PayPal"
|
||||
bitcoin = "Bitcoin"
|
||||
# === posts/single.html ===
|
||||
|
||||
# === 404.html ===
|
||||
@@ -175,18 +177,31 @@ other = "Нисте повезани на Интернет, биће досту
|
||||
|
||||
# === GitHub Alert ===
|
||||
[alert]
|
||||
note = ""
|
||||
tip = ""
|
||||
important = ""
|
||||
warning = ""
|
||||
caution = ""
|
||||
note = "Напомена"
|
||||
tip = "Савет"
|
||||
important = "Важно"
|
||||
warning = "Упозорење"
|
||||
caution = "Опрез"
|
||||
# === GitHub Alert ===
|
||||
|
||||
# === Task lists ===
|
||||
[taskList]
|
||||
" " = "Непроверено"
|
||||
"x" = "Проверено"
|
||||
"/" = "У току"
|
||||
"-" = "Отказано"
|
||||
"<" = "Планирано"
|
||||
">" = "Преустановљено"
|
||||
"!" = "Важно"
|
||||
"?" = "Питање"
|
||||
# === Task lists ===
|
||||
|
||||
# === shortcodes/admonition.html ===
|
||||
[admonition]
|
||||
note = "Напомена"
|
||||
abstract = "Сажетак"
|
||||
info = "Инфо"
|
||||
todo = "То-до"
|
||||
tip = "Савет"
|
||||
success = "Успех"
|
||||
question = "Питање"
|
||||
|
||||
+47
-32
@@ -1,26 +1,25 @@
|
||||
# Translations for Vietnamese
|
||||
# https://gohugo.io/content-management/multilingual/#translation-of-strings
|
||||
# TODO Some fields are waiting for your translation
|
||||
|
||||
# === init ===
|
||||
[init]
|
||||
configurationError = ""
|
||||
compatibilityError = ""
|
||||
devVersionWarn = ""
|
||||
devEnvWarn = ""
|
||||
quicklyUpgrade = ""
|
||||
configurationError = "Lỗi cấu hình\nBạn chưa cấu hình tham số phiên bản FixIt đúng cách. Xem https://fixit.lruihao.cn/documentation/basics/#theme-configuration"
|
||||
compatibilityError = "Lỗi tương thích ({{ .From }} -> {{ .To }}):\nBạn có một bản cập nhật không tương thích. Xem https://github.com/hugo-fixit/FixIt/releases"
|
||||
devVersionWarn = "Bạn đang sử dụng một phiên bản phát triển của FixIt. Vui lòng xem xét sử dụng một phiên bản ổn định.\nXem https://github.com/hugo-fixit/FixIt/releases"
|
||||
devEnvWarn = "Môi trường hiện tại là \"development\". \"Hệ thống bình luận\", \"PWA\", \"CDN\", \"vân tay\" và \"thống kê\" sẽ bị vô hiệu hóa."
|
||||
quicklyUpgrade = "Nâng cấp nhanh bằng lệnh: "
|
||||
# === init ===
|
||||
|
||||
# === baseof ===
|
||||
[baseof]
|
||||
backToTop = "Lên trên"
|
||||
viewComments = "Xem bình luận"
|
||||
noscript = ""
|
||||
noscript = "Trang web này hoạt động tốt nhất khi JavaScript được kích hoạt."
|
||||
# === baseof ===
|
||||
|
||||
# === Taxonomy ===
|
||||
[archives]
|
||||
other = ""
|
||||
other = "Bài viết cũ"
|
||||
|
||||
[allSome]
|
||||
other = "Tất cả {{ .Some }}"
|
||||
@@ -32,10 +31,10 @@ other = "Danh mục"
|
||||
other = "Danh mục"
|
||||
|
||||
[collection]
|
||||
other = ""
|
||||
other = "Collection"
|
||||
|
||||
[collections]
|
||||
other = ""
|
||||
other = "Collections"
|
||||
|
||||
[tag]
|
||||
other = "Nhãn"
|
||||
@@ -52,12 +51,12 @@ other = "Bài viết"
|
||||
recentlyUpdated = "Mới nhất"
|
||||
|
||||
[section.totalWordCount]
|
||||
one = ""
|
||||
other = ""
|
||||
one = "Chỉ một từ"
|
||||
other = "Tổng cộng {{ .Count }} từ"
|
||||
|
||||
[section.archiveCounter]
|
||||
one = ""
|
||||
other = ""
|
||||
one = "Chỉ một bài viết"
|
||||
other = "{{ .Count }} bài viết"
|
||||
# === Section ===
|
||||
|
||||
# === Pagination ===
|
||||
@@ -91,6 +90,8 @@ facebookLanguageCode = "vi"
|
||||
[assets]
|
||||
search = "Tìm kiếm"
|
||||
searchPlaceholder = "Tìm tiêu đề hoặc nội dung..."
|
||||
searchIn = "Tìm kiếm trong {{ . }}"
|
||||
gotoResultsPage = "Đi đến trang kết quả tìm kiếm ..."
|
||||
clear = "Xoá"
|
||||
cancel = "Huỷ"
|
||||
noResultsFound = "Không tìm thấy"
|
||||
@@ -110,26 +111,27 @@ other = "Chia sẻ trên"
|
||||
# === posts/single.html ===
|
||||
[single]
|
||||
contents = "Nội dung"
|
||||
pin = ""
|
||||
repost = ""
|
||||
pin = "Ghim ở đầu trang"
|
||||
repost = "Đăng lại"
|
||||
publishedOnDate = "đăng ngày {{ .Date }}"
|
||||
views = "lượt xem"
|
||||
comments = "bình luận"
|
||||
author = "Tác giả"
|
||||
updatedOnDate = "Cập nhật ngày {{ .Date }}"
|
||||
readMarkdown = "Đọc với định dạng Markdown"
|
||||
viewSource = ""
|
||||
viewSource = "Xem mã nguồn"
|
||||
editThisPage = "Chỉnh sửa trang này"
|
||||
reportIssue = ""
|
||||
reportIssue = "Báo cáo lỗi"
|
||||
openInEditor = "Mở trong trình chỉnh sửa"
|
||||
back = "Quay lại"
|
||||
home = "Trang chủ"
|
||||
readMore = "Đọc thêm"
|
||||
expirationReminder = "Bài viết này được cập nhật lần cuối vào {{ .Date }}, nội dung có thể đã lỗi thời."
|
||||
encryptedAbstract = ""
|
||||
encryptedMessage = ""
|
||||
encryptedAbstract = "Bài viết này đã được mã hóa, nên nội dung gốc không thể nhìn thấy!"
|
||||
encryptedMessage = "Vui lòng nhập mật khẩu"
|
||||
password = "Mật khẩu"
|
||||
enterBtn = ""
|
||||
encryptyAgain = ""
|
||||
enterBtn = "Nhập"
|
||||
encryptyAgain = "Mã hóa lại"
|
||||
relatedContent = "Nội dung liên quan"
|
||||
|
||||
[single.includedIn]
|
||||
@@ -149,11 +151,11 @@ one = "One minute"
|
||||
other = "{{ .Count }} phút"
|
||||
|
||||
[single.reward]
|
||||
donate = ""
|
||||
wechatpay = ""
|
||||
alipay = ""
|
||||
paypal = ""
|
||||
bitcoin = ""
|
||||
donate = "Ủng hộ"
|
||||
wechatpay = "WeChat Pay"
|
||||
alipay = "Alipay"
|
||||
paypal = "PayPal"
|
||||
bitcoin = "Bitcoin"
|
||||
# === posts/single.html ===
|
||||
|
||||
# === 404.html ===
|
||||
@@ -174,18 +176,31 @@ other = "Bạn chưa kết nối với Internet, chỉ các trang được lưu
|
||||
|
||||
# === GitHub Alert ===
|
||||
[alert]
|
||||
note = ""
|
||||
tip = ""
|
||||
important = ""
|
||||
warning = ""
|
||||
caution = ""
|
||||
note = "Ghi chú"
|
||||
tip = "Mẹo"
|
||||
important = "Quan trọng"
|
||||
warning = "Cảnh báo"
|
||||
caution = "Chú ý"
|
||||
# === GitHub Alert ===
|
||||
|
||||
# === Task lists ===
|
||||
[taskList]
|
||||
" " = "Chưa kiểm tra"
|
||||
"x" = "Đã kiểm tra"
|
||||
"/" = "Đang tiến hành"
|
||||
"-" = "Đã hủy"
|
||||
"<" = "Đã lên lịch"
|
||||
">" = "Đã lên lịch lại"
|
||||
"!" = "Quan trọng"
|
||||
"?" = "Câu hỏi"
|
||||
# === Task lists ===
|
||||
|
||||
# === shortcodes/admonition.html ===
|
||||
[admonition]
|
||||
note = "Ghi chú"
|
||||
abstract = "Tóm tắt"
|
||||
info = "Thông tin"
|
||||
todo = "Cần làm"
|
||||
tip = "Mẹo"
|
||||
success = "Thành công"
|
||||
question = "Câu hỏi"
|
||||
|
||||
+17
-1
@@ -7,7 +7,7 @@
|
||||
configurationError = "配置文件错误\n您还没有正确配置 FixIt 的版本参数。参考 https://fixit.lruihao.cn/zh-cn/documentation/basics/#theme-configuration"
|
||||
compatibilityError = "兼容性错误 ({{ .From }} -> {{ .To }}):\n您进行了一次不兼容的更新。参考 https://github.com/hugo-fixit/FixIt/releases"
|
||||
devVersionWarn = "您正在使用开发版的 FixIt,请考虑使用稳定版。\n见 https://github.com/hugo-fixit/FixIt/releases"
|
||||
devEnvWarn = "当前运行环境是“development”。“评论系统”、“PWA”、“CDN”和“fingerprint”不会启用。"
|
||||
devEnvWarn = "当前运行环境是“development”。“评论系统”、“PWA”、“CDN”、“fingerprint”和“统计”不会启用。"
|
||||
quicklyUpgrade = "使用命令快速升级:"
|
||||
# === init ===
|
||||
|
||||
@@ -89,6 +89,8 @@ facebookLanguageCode = "zh_CN"
|
||||
[assets]
|
||||
search = "搜索"
|
||||
searchPlaceholder = "搜索文章标题或内容……"
|
||||
searchIn = "在 {{ . }} 中搜索"
|
||||
gotoResultsPage = "前往搜索结果页面……"
|
||||
clear = "清空"
|
||||
cancel = "取消"
|
||||
noResultsFound = "没有找到结果"
|
||||
@@ -119,6 +121,7 @@ readMarkdown = "阅读原始文档"
|
||||
viewSource = "查看源码"
|
||||
editThisPage = "编辑此页"
|
||||
reportIssue = "报告问题"
|
||||
openInEditor = "在编辑器中打开"
|
||||
back = "返回"
|
||||
home = "主页"
|
||||
readMore = "阅读全文"
|
||||
@@ -177,11 +180,24 @@ warning = "警告"
|
||||
caution = "小心"
|
||||
# === GitHub Alert ===
|
||||
|
||||
# === Task lists ===
|
||||
[taskList]
|
||||
" " = "未完成"
|
||||
"x" = "已完成"
|
||||
"/" = "进行中"
|
||||
"-" = "已取消"
|
||||
"<" = "已计划"
|
||||
">" = "已重新计划"
|
||||
"!" = "重要"
|
||||
"?" = "问题"
|
||||
# === Task lists ===
|
||||
|
||||
# === shortcodes/admonition.html ===
|
||||
[admonition]
|
||||
note = "注意"
|
||||
abstract = "摘要"
|
||||
info = "信息"
|
||||
todo = "待办"
|
||||
tip = "技巧"
|
||||
success = "成功"
|
||||
question = "问题"
|
||||
|
||||
+17
-1
@@ -7,7 +7,7 @@
|
||||
configurationError = "配置文件錯誤\n您還沒有正確配置 FixIt 的版本參數。參考 https://fixit.lruihao.cn/zh-cn/documentation/basics/#theme-configuration"
|
||||
compatibilityError = "兼容性錯誤 ({{ .From }} -> {{ .To }}):\n您進行了一次不兼容的更新。参考 https://github.com/hugo-fixit/FixIt/releases"
|
||||
devVersionWarn = "您正在使用開發版的 FixIt,請考慮使用穩定版。\n見 https://github.com/hugo-fixit/FixIt/releases"
|
||||
devEnvWarn = "當前運行環境是“development”。“評論系統”、“PWA”、“CDN”和“fingerprint”不會啟用。"
|
||||
devEnvWarn = "當前運行環境是“development”。“評論系統”、“PWA”、“CDN”、“fingerprint”和“統計”不會啟用。"
|
||||
quicklyUpgrade = "使用命令快速升級:"
|
||||
# === init ===
|
||||
|
||||
@@ -89,6 +89,8 @@ facebookLanguageCode = "zh-TW"
|
||||
[assets]
|
||||
search = "搜尋"
|
||||
searchPlaceholder = "搜尋文章標題或內容……"
|
||||
searchIn = "在 {{ . }} 中搜尋"
|
||||
gotoResultsPage = "前往搜尋結果頁面……"
|
||||
clear = "清除"
|
||||
cancel = "取消"
|
||||
noResultsFound = "沒有找到結果"
|
||||
@@ -119,6 +121,7 @@ readMarkdown = "閱讀原始文檔"
|
||||
viewSource = "查看原始碼"
|
||||
editThisPage = "編輯此頁"
|
||||
reportIssue = "報告問題"
|
||||
openInEditor = "在編輯器中打開"
|
||||
back = "返回"
|
||||
home = "主頁"
|
||||
readMore = "閱讀全文"
|
||||
@@ -177,11 +180,24 @@ warning = "警告"
|
||||
caution = "小心"
|
||||
# === GitHub Alert ===
|
||||
|
||||
# === Task lists ===
|
||||
[taskList]
|
||||
" " = "未完成"
|
||||
"x" = "已完成"
|
||||
"/" = "進行中"
|
||||
"-" = "已取消"
|
||||
"<" = "已計劃"
|
||||
">" = "已重新計劃"
|
||||
"!" = "重要"
|
||||
"?" = "問題"
|
||||
# === Task lists ===
|
||||
|
||||
# === shortcodes/admonition.html ===
|
||||
[admonition]
|
||||
note = "注意"
|
||||
abstract = "摘要"
|
||||
info = "資訊"
|
||||
todo = "待辦"
|
||||
tip = "提示"
|
||||
success = "成功"
|
||||
question = "問題"
|
||||
|
||||
@@ -1,11 +0,0 @@
|
||||
{{- $attrs := "" }}
|
||||
{{- range $key, $value := .Attributes }}
|
||||
{{- $attrs = printf "%s %s=%q" $attrs $key $value }}
|
||||
{{- end }}
|
||||
{{- $attrs = trim $attrs " " }}
|
||||
|
||||
{{- if eq .Type "alert" -}}
|
||||
{{- dict "Text" .Text "Type" .AlertType "Attributes" .Attributes | partial "plugin/alert.html" -}}
|
||||
{{- else -}}
|
||||
<blockquote {{- with $attrs }} {{ . | safeHTMLAttr }}{{ end }}>{{ .Text | safeHTML }}</blockquote>
|
||||
{{- end -}}
|
||||
@@ -1,2 +0,0 @@
|
||||
{{- dict "Options" .Attributes "Inner" .Inner | partial "plugin/echarts.html" -}}
|
||||
{{- .Page.Store.Set "hasEcharts" true -}}
|
||||
@@ -1 +0,0 @@
|
||||
{{- dict "Options" .Attributes "Inner" .Inner | partial "plugin/timeline.html" -}}
|
||||
@@ -1,66 +0,0 @@
|
||||
{{- /* Read the config and format */ -}}
|
||||
{{- $params := .Page.Params | merge site.Params.page -}}
|
||||
{{- $ordered := $params.toc.ordered | and $params.heading.number.enable -}}
|
||||
{{- $h1Format := $params.heading.number.format.h1 | default "{title}" -}}
|
||||
{{- $h2Format := $params.heading.number.format.h2 | default "{h2} {title}" -}}
|
||||
{{- $h3Format := $params.heading.number.format.h3 | default "{h2}.{h3} {title}" -}}
|
||||
{{- $h4Format := $params.heading.number.format.h4 | default "{h2}.{h3}.{h4} {title}" -}}
|
||||
{{- $h5Format := $params.heading.number.format.h5 | default "{h2}.{h3}.{h4}.{h5} {title}" -}}
|
||||
{{- $h6Format := $params.heading.number.format.h6 | default "{h2}.{h3}.{h4}.{h5}.{h6} {title}" -}}
|
||||
|
||||
{{- if $ordered -}}
|
||||
{{- /* Set the count for child level to 0 */ -}}
|
||||
{{- .Page.Scratch.SetInMap "heading-counter" (string (add .Level 1)) 0 -}}
|
||||
{{- end -}}
|
||||
|
||||
<h{{ .Level }} id="{{ .Anchor | safeURL }}" class="heading-element">
|
||||
{{- $title := .Text -}}
|
||||
{{- /* Only enable in main section pages */ -}}
|
||||
{{- $onlyMainSection := cond $params.heading.number.onlyMainSection (eq .Page.Type "posts") true -}}
|
||||
{{- if $ordered | and $onlyMainSection -}}
|
||||
{{- /* Add 1 to the current level */ -}}
|
||||
{{- $headingMap := .Page.Scratch.Get "heading-counter" -}}
|
||||
{{- $count := (string .Level) | index $headingMap | int | add 1 -}}
|
||||
{{- .Page.Scratch.SetInMap "heading-counter" (string .Level) $count -}}
|
||||
|
||||
{{- /* Get the counters for all levels */ -}}
|
||||
{{- $h1 := "1" | index $headingMap | int | string -}}
|
||||
{{- $h2 := "2" | index $headingMap | int | string -}}
|
||||
{{- $h3 := "3" | index $headingMap | int | string -}}
|
||||
{{- $h4 := "4" | index $headingMap | int | string -}}
|
||||
{{- $h5 := "5" | index $headingMap | int | string -}}
|
||||
{{- $h6 := "6" | index $headingMap | int | string -}}
|
||||
|
||||
{{- /* Apply the level based on the format */ -}}
|
||||
{{- $title = "" -}}
|
||||
{{- if .Level | eq 1 -}}
|
||||
{{- $title = $h1Format -}}
|
||||
{{- else if .Level | eq 2 -}}
|
||||
{{- $title = $h2Format -}}
|
||||
{{- else if .Level | eq 3 -}}
|
||||
{{- $title = $h3Format -}}
|
||||
{{- else if .Level | eq 4 -}}
|
||||
{{- $title = $h4Format -}}
|
||||
{{- else if .Level | eq 5 -}}
|
||||
{{- $title = $h5Format -}}
|
||||
{{- else if .Level | eq 6 -}}
|
||||
{{- $title = $h6Format -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- $title = replace $title "{h1}" $h1 -}}
|
||||
{{- $title = replace $title "{h2}" $h2 -}}
|
||||
{{- $title = replace $title "{h3}" $h3 -}}
|
||||
{{- $title = replace $title "{h4}" $h4 -}}
|
||||
{{- $title = replace $title "{h5}" $h5 -}}
|
||||
{{- $title = replace $title "{h6}" $h6 -}}
|
||||
{{- $title = replace $title "{title}" .Text -}}
|
||||
{{- end -}}
|
||||
{{- if $params.heading.capitalize -}}
|
||||
{{- $title = replace $title .PlainText (title .PlainText) -}}
|
||||
{{- end -}}
|
||||
<span>{{ $title | safeHTML }}</span>
|
||||
<a href="#{{ .Anchor | safeURL }}" class="heading-mark">
|
||||
<svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg>
|
||||
</a>
|
||||
</h{{ .Level }}>
|
||||
{{- /* EOF */ -}}
|
||||
@@ -1,13 +0,0 @@
|
||||
{{- $params := .Page.Params | merge site.Params.page -}}
|
||||
{{- if .Title | and .Text -}}
|
||||
{{- $linked := ne $params.lightgallery false -}}
|
||||
<figure>
|
||||
{{- dict "Src" .Destination "Alt" .Text "Caption" .Text "Title" .Title "Linked" $linked "Responsive" true "Resources" .Page.Resources | partial "plugin/image.html" -}}
|
||||
<figcaption class="image-caption">
|
||||
{{- .Text | safeHTML -}}
|
||||
</figcaption>
|
||||
</figure>
|
||||
{{- else -}}
|
||||
{{- $linked := (eq $params.lightgallery "force") | or ($params.lightgallery | and (ne .Title "")) -}}
|
||||
{{- dict "Src" .Destination "Alt" .Text "Title" .Title "Linked" $linked "Responsive" true "Resources" .Page.Resources | partial "plugin/image.html" -}}
|
||||
{{- end -}}
|
||||
@@ -1,13 +0,0 @@
|
||||
# {{ .Site.Title }}
|
||||
|
||||
{{ $pages := .Scratch.Get "mainSectionPages" -}}
|
||||
{{- $pages = where $pages "Draft" "eq" false -}}
|
||||
{{- T "section.archiveCounter" (len $pages) }}
|
||||
{{ range $pages.GroupByPublishDate "2006" }}
|
||||
{{- if ne .Key "0001" -}}
|
||||
{{- printf "\n## %v\n\n%v\n\n" .Key (T "section.archiveCounter" .Pages.Len) -}}
|
||||
{{- range .Pages -}}
|
||||
{{- printf "- %v [%v](%v \"%v\")\n" (.PublishDate.Format "01-02") .Title .Permalink (.PublishDate.Format "2006-01-02 15:04:05") -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
@@ -0,0 +1,24 @@
|
||||
{{- $basicTypes := slice "note" "tip" "important" "warning" "caution" -}}
|
||||
|
||||
{{- if .AlertTitle | or .AlertSign | or (.AlertType | in $basicTypes | not) -}}
|
||||
{{- /* The extended syntax is compatible with Obsidian and FixIt admonition shortcode. */ -}}
|
||||
{{- $openMap := dict "+" true "-" false -}}
|
||||
{{- $open := index $openMap .AlertSign | default true -}}
|
||||
{{- $foldable := ne .AlertSign "" -}}
|
||||
{{- dict
|
||||
"Type" .AlertType
|
||||
"Title" .AlertTitle
|
||||
"Open" $open
|
||||
"Text" .Text
|
||||
"Foldable" $foldable
|
||||
| partial "plugin/admonition.html"
|
||||
-}}
|
||||
{{- else -}}
|
||||
{{- /* The basic syntax is compatible with GitHub, Obsidian, and Typora. */ -}}
|
||||
{{- dict
|
||||
"Type" .AlertType
|
||||
"Text" .Text
|
||||
"Attributes" .Attributes
|
||||
| partial "plugin/alert.html"
|
||||
-}}
|
||||
{{- end -}}
|
||||
@@ -0,0 +1,8 @@
|
||||
{{- dict
|
||||
"Options" .Attributes
|
||||
"Inner" .Inner
|
||||
"Resources" .Page.Resources
|
||||
"Position" .Position
|
||||
| partial "plugin/echarts.html"
|
||||
-}}
|
||||
{{- .Page.Store.Set "hasEcharts" true -}}
|
||||
@@ -0,0 +1,7 @@
|
||||
{{- dict
|
||||
"Options" .Attributes
|
||||
"Inner" .Inner
|
||||
"Resources" .Page.Resources
|
||||
"Position" .Position
|
||||
| partial "plugin/timeline.html"
|
||||
-}}
|
||||
@@ -0,0 +1,97 @@
|
||||
{{- /* Read the config and format */ -}}
|
||||
{{- $params := .Page.Params | merge site.Params.page -}}
|
||||
{{- /* Toc data patch */ -}}
|
||||
{{- $toc := $params.toc -}}
|
||||
{{- if not (reflect.IsMap $toc) -}}
|
||||
{{- $toc = dict "enable" $toc | merge site.Params.page.toc -}}
|
||||
{{- end -}}
|
||||
{{- $headingConfig := $params.heading -}}
|
||||
{{- /* Only enable in main section pages */ -}}
|
||||
{{- $intersect := (slice .Page.Section .Page.Type) | intersect site.MainSections -}}
|
||||
{{- $onlyMainSection := cond $headingConfig.number.onlyMainSection ((gt (len $intersect) 0) | and (eq .Page.Kind "page")) true -}}
|
||||
{{- $ordered := $toc.ordered | and $headingConfig.number.enable | and $onlyMainSection -}}
|
||||
{{- $h1Format := $headingConfig.number.format.h1 | default "{title}" -}}
|
||||
{{- $h2Format := $headingConfig.number.format.h2 | default "{h2} {title}" -}}
|
||||
{{- $h3Format := $headingConfig.number.format.h3 | default "{h2}.{h3} {title}" -}}
|
||||
{{- $h4Format := $headingConfig.number.format.h4 | default "{h2}.{h3}.{h4} {title}" -}}
|
||||
{{- $h5Format := $headingConfig.number.format.h5 | default "{h2}.{h3}.{h4}.{h5} {title}" -}}
|
||||
{{- $h6Format := $headingConfig.number.format.h6 | default "{h2}.{h3}.{h4}.{h5}.{h6} {title}" -}}
|
||||
{{- $level := .Level -}}
|
||||
{{- $maxMarkupLevel := 2 -}}
|
||||
|
||||
{{- /* Disable ordered headings on home page */ -}}
|
||||
{{- if eq hugo.Context.MarkupScope "home" -}}
|
||||
{{- $ordered = false -}}
|
||||
{{- /* Decrease the level to match the correct HTML level */ -}}
|
||||
{{- $level = add $level 1 -}}
|
||||
{{- $maxMarkupLevel = 3 -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- if $ordered -}}
|
||||
{{- /* Set the count for child level to 0 */ -}}
|
||||
{{- .Page.Store.SetInMap "heading-counter" (string (add $level 1)) 0 -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- $attrs := "" }}
|
||||
{{- range $key, $value := .Attributes }}
|
||||
{{- $attrs = printf "%s %s=%q" $attrs $key $value }}
|
||||
{{- end }}
|
||||
|
||||
{{- with .Attributes.class }}
|
||||
{{- $attrs = replace $attrs . (printf "heading-element %s" .) }}
|
||||
{{- else }}
|
||||
{{- $attrs = printf "class=%q %s" "heading-element" $attrs }}
|
||||
{{- end }}
|
||||
{{- $attrs = partial "function/trim.html" $attrs -}}
|
||||
|
||||
{{- /* Force decrease the markup level to avoid multiple h1 */ -}}
|
||||
{{- $markupLevel := cond (gt $maxMarkupLevel $level) $maxMarkupLevel $level -}}
|
||||
<h{{ $markupLevel }} {{ $attrs | safeHTMLAttr }}>
|
||||
{{- $title := .Text -}}
|
||||
{{- if $ordered -}}
|
||||
{{- /* Add 1 to the current level */ -}}
|
||||
{{- $headingMap := .Page.Store.Get "heading-counter" -}}
|
||||
{{- $count := (string $level) | index $headingMap | int | add 1 -}}
|
||||
{{- .Page.Store.SetInMap "heading-counter" (string $level) $count -}}
|
||||
|
||||
{{- /* Get the counters for all levels */ -}}
|
||||
{{- $h1 := "1" | index $headingMap | int | string -}}
|
||||
{{- $h2 := "2" | index $headingMap | int | string -}}
|
||||
{{- $h3 := "3" | index $headingMap | int | string -}}
|
||||
{{- $h4 := "4" | index $headingMap | int | string -}}
|
||||
{{- $h5 := "5" | index $headingMap | int | string -}}
|
||||
{{- $h6 := "6" | index $headingMap | int | string -}}
|
||||
|
||||
{{- /* Apply the level based on the format */ -}}
|
||||
{{- $title = "" -}}
|
||||
{{- if $level | eq 1 -}}
|
||||
{{- $title = $h1Format -}}
|
||||
{{- else if $level | eq 2 -}}
|
||||
{{- $title = $h2Format -}}
|
||||
{{- else if $level | eq 3 -}}
|
||||
{{- $title = $h3Format -}}
|
||||
{{- else if $level | eq 4 -}}
|
||||
{{- $title = $h4Format -}}
|
||||
{{- else if $level | eq 5 -}}
|
||||
{{- $title = $h5Format -}}
|
||||
{{- else if $level | eq 6 -}}
|
||||
{{- $title = $h6Format -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- $title = replace $title "{h1}" $h1 -}}
|
||||
{{- $title = replace $title "{h2}" $h2 -}}
|
||||
{{- $title = replace $title "{h3}" $h3 -}}
|
||||
{{- $title = replace $title "{h4}" $h4 -}}
|
||||
{{- $title = replace $title "{h5}" $h5 -}}
|
||||
{{- $title = replace $title "{h6}" $h6 -}}
|
||||
{{- $title = replace $title "{title}" .Text -}}
|
||||
{{- end -}}
|
||||
{{- if $headingConfig.capitalize -}}
|
||||
{{- $title = replace $title .PlainText (title .PlainText) -}}
|
||||
{{- end -}}
|
||||
<span>{{ $title | safeHTML }}</span>
|
||||
<a href="#{{ .Anchor | safeURL }}" class="heading-mark">
|
||||
<svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg>
|
||||
</a>
|
||||
</h{{ $markupLevel }}>
|
||||
{{- /* EOF */ -}}
|
||||
@@ -0,0 +1,27 @@
|
||||
{{- /*
|
||||
A Markdown image has three components: the image description, the image destination, and optionally the image title.
|
||||
|
||||

|
||||
------------ ------------------ ---------
|
||||
description destination title
|
||||
------------ ------------------ ---------
|
||||
.Text .Destination .Title
|
||||
*/ -}}
|
||||
{{- $params := .Page.Params | merge site.Params.page -}}
|
||||
{{- $optim := slice
|
||||
(dict "Process" "resize 800x webp q75" "descriptor" "800w")
|
||||
(dict "Process" "resize 1200x webp q75" "descriptor" "1200w")
|
||||
(dict "Process" "resize 1600x webp q75" "descriptor" "1600w")
|
||||
-}}
|
||||
{{- if .Title | and .Text -}}
|
||||
{{- $linked := ne $params.lightgallery false -}}
|
||||
<figure>
|
||||
{{- dict "Src" .Destination "Alt" .PlainText "Title" .Title "Caption" .Text "Linked" $linked "Loading" "lazy" "Resources" .Page.Resources "OptimConfig" $optim | partial "plugin/image.html" -}}
|
||||
<figcaption class="image-caption">
|
||||
{{- .Title | safeHTML -}}
|
||||
</figcaption>
|
||||
</figure>
|
||||
{{- else -}}
|
||||
{{- $linked := (eq $params.lightgallery "force") | or ($params.lightgallery | and (ne .Title "")) -}}
|
||||
{{- dict "Src" .Destination "Alt" .PlainText "Title" .Title "Linked" $linked "Loading" "lazy" "Resources" .Page.Resources "OptimConfig" $optim | partial "plugin/image.html" -}}
|
||||
{{- end -}}
|
||||
@@ -0,0 +1,45 @@
|
||||
{{- $params := .Page.Params | merge site.Params.page -}}
|
||||
{{- $math := $params.math -}}
|
||||
{{- if eq $math true -}}
|
||||
{{- $math = dict "enable" true | merge site.Params.page.math -}}
|
||||
{{- else if eq $math false -}}
|
||||
{{- $math = dict "enable" false -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- /*
|
||||
Mathematical formulas rendering:
|
||||
- KaTeX server-side rendering
|
||||
- MathJax client-side rendering
|
||||
Regular passthrough rendering:
|
||||
- [todo] support more features in future
|
||||
*/ -}}
|
||||
{{- if $math.enable -}}
|
||||
{{- if eq $math.type "katex" -}}
|
||||
{{- $katex := $math.katex -}}
|
||||
{{- $opts := dict "output" "htmlAndMathml" "displayMode" (eq $.Type "block") }}
|
||||
{{- $opts = dict "throwOnError" $katex.throwOnError "errorColor" $katex.errorColor | merge $opts }}
|
||||
{{- $macros := $katex.macros | default dict -}}
|
||||
{{- if $macros -}}
|
||||
{{- $opts = dict "macros" $macros | merge $opts -}}
|
||||
{{- end -}}
|
||||
{{- /* render mathematical markup to HTML */ -}}
|
||||
{{- with try (transform.ToMath .Inner $opts) }}
|
||||
{{- with .Err }}
|
||||
{{- errorf "Unable to render mathematical markup to HTML using the transform.ToMath function. The KaTeX display engine threw the following error: %s: see %s." . $.Position }}
|
||||
{{- else }}
|
||||
{{- .Value }}
|
||||
{{- $.Page.Store.Set "hasKaTeX" true -}}
|
||||
{{- end }}
|
||||
{{- end -}}
|
||||
{{- else if eq $math.type "mathjax" -}}
|
||||
{{- if eq $.Type "block" -}}
|
||||
$${{- .Inner -}}$$
|
||||
{{- else -}}
|
||||
${{ .Inner }}$
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- else -}}
|
||||
{{- /* Regular passthrough rendering */ -}}
|
||||
{{- /* waiting for Hugo interface to get delimiters */ -}}
|
||||
{{- .Inner -}}
|
||||
{{- end -}}
|
||||
@@ -1,53 +1,66 @@
|
||||
{{- $noop := .WordCount -}}
|
||||
{{- $params := partial "function/params.html" -}}
|
||||
{{- $cdn := .Scratch.Get "cdn" | default dict -}}
|
||||
{{- $fingerprint := .Scratch.Get "fingerprint" -}}
|
||||
{{- $config := (.Scratch.Get "this").config -}}
|
||||
{{- $config = dict "version" (.Scratch.Get "version") | merge $config -}}
|
||||
{{- $cdn := .Site.Store.Get "cdn" | default dict -}}
|
||||
{{- $fingerprint := .Site.Store.Get "fingerprint" -}}
|
||||
{{- $config := (.Store.Get "this").config -}}
|
||||
{{- $config = dict "version" (hugo.Store.Get "version") | merge $config -}}
|
||||
|
||||
{{- /* Search */ -}}
|
||||
{{- if .Site.Params.search | and .Site.Params.search.enable -}}
|
||||
{{- $search := .Site.Params.search -}}
|
||||
{{- /* TODO update "lib/autocomplete-js/umd/index.production.js" */ -}}
|
||||
{{- $source := $cdn.autocompleteJS | default "lib/autocomplete/autocomplete.min.js" -}}
|
||||
{{- dict "Source" $source "Fingerprint" $fingerprint "Defer" true | dict "Scratch" .Scratch "Data" | partial "scratch/script.html" -}}
|
||||
{{- dict "Source" $source "Fingerprint" $fingerprint "Defer" true | dict "Page" . "Data" | partial "store/script.html" -}}
|
||||
{{- $config = dict "maxResultLength" $search.maxResultLength "snippetLength" $search.snippetLength "highlightTag" $search.highlightTag "noResultsFound" (T "assets.noResultsFound") | dict "search" | merge $config -}}
|
||||
{{- if eq $search.type "algolia" -}}
|
||||
{{- $source := $cdn.algoliasearchJS | default "lib/algoliasearch/algoliasearch-lite.umd.min.js" -}}
|
||||
{{- dict "Source" $source "Fingerprint" $fingerprint "Defer" true | dict "Scratch" .Scratch "Data" | partial "scratch/script.html" -}}
|
||||
{{- dict "Source" $source "Fingerprint" $fingerprint "Defer" true | dict "Page" . "Data" | partial "store/script.html" -}}
|
||||
{{- $config = dict "type" "algolia" "algoliaIndex" $search.algolia.index "algoliaAppID" $search.algolia.appID "algoliaSearchKey" $search.algolia.searchKey | dict "search" | merge $config -}}
|
||||
{{- else if eq $search.type "fuse" -}}
|
||||
{{- with .Site.Home.OutputFormats.Get "search" -}}
|
||||
{{- $config = dict "type" "fuse" "fuseIndexURL" .RelPermalink | dict "search" | merge $config -}}
|
||||
{{- end -}}
|
||||
{{- $source := $cdn.fuseJS | default "lib/fuse/fuse.min.js" -}}
|
||||
{{- dict "Source" $source "Fingerprint" $fingerprint "Defer" true | dict "Scratch" .Scratch "Data" | partial "scratch/script.html" -}}
|
||||
{{- dict "Source" $source "Fingerprint" $fingerprint "Defer" true | dict "Page" . "Data" | partial "store/script.html" -}}
|
||||
{{- $config = dict "isCaseSensitive" $search.fuse.isCaseSensitive "minMatchCharLength" $search.fuse.minMatchCharLength "findAllMatches" $search.fuse.findAllMatches "location" $search.fuse.location "threshold" $search.fuse.threshold "distance" $search.fuse.distance "ignoreLocation" $search.fuse.ignoreLocation "useExtendedSearch" $search.fuse.useExtendedSearch "ignoreFieldNorm" $search.fuse.ignoreFieldNorm | dict "search" | merge $config -}}
|
||||
{{- else if eq $search.type "cse" -}}
|
||||
{{- $config = dict "type" "cse" | dict "search" | merge $config -}}
|
||||
{{- $cse := .Site.Params.cse -}}
|
||||
{{- $config = dict "resultsPage" $cse.resultsPage "gotoResultsPage" (T "assets.gotoResultsPage") | dict "cse" | merge $config -}}
|
||||
{{- if (eq $cse.engine "google") | and $cse.google.cx -}}
|
||||
{{- $config = dict "engine" "google" "cx" $cse.google.cx "searchIn" (T "assets.searchIn" "Google") | dict "cse" | merge $config -}}
|
||||
{{- end -}}
|
||||
{{- if eq $cse.engine "bing" -}}
|
||||
{{- /* Unsupported */ -}}
|
||||
{{- end -}}
|
||||
{{- else if eq $search.type "post-chat" -}}
|
||||
{{- $config = dict "type" "post-chat" | dict "search" | merge $config -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- /* instant.page */ -}}
|
||||
{{- if $params.instantPage -}}
|
||||
{{- $source := $cdn.instantPage | default "lib/instant-page/instantpage.min.js" -}}
|
||||
{{- dict "Source" $source "Fingerprint" $fingerprint "Attr" `type="module"` "Async" true "Defer" true | dict "Scratch" .Scratch "Data" | partial "scratch/script.html" -}}
|
||||
{{- dict "Source" $source "Fingerprint" $fingerprint "Attr" `type="module"` "Async" true "Defer" true | dict "Page" . "Data" | partial "store/script.html" -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- /* twemoji */ -}}
|
||||
{{- if $params.twemoji -}}
|
||||
{{- $source := $cdn.twemojiJS | default "lib/twemoji/twemoji.min.js" -}}
|
||||
{{- dict "Source" $source "Fingerprint" $fingerprint "Defer" true | dict "Scratch" .Scratch "Data" | partial "scratch/script.html" -}}
|
||||
{{- dict "Source" $source "Fingerprint" $fingerprint "Defer" true | dict "Page" . "Data" | partial "store/script.html" -}}
|
||||
{{- $config = dict "twemoji" true | merge $config -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- /* lightgallery */ -}}
|
||||
{{- if $params.lightgallery | or (eq $params.lightgallery "force") -}}
|
||||
{{- $source := $cdn.lightgalleryCSS | default "lib/lightgallery/css/lightgallery-bundle.min.css" -}}
|
||||
{{- dict "Source" $source "Fingerprint" $fingerprint | dict "Scratch" .Scratch "Data" | partial "scratch/style.html" -}}
|
||||
{{- dict "Source" $source "Fingerprint" $fingerprint | dict "Page" . "Data" | partial "store/style.html" -}}
|
||||
{{- $source := $cdn.lightgalleryJS | default "lib/lightgallery/lightgallery.min.js" -}}
|
||||
{{- dict "Source" $source "Fingerprint" $fingerprint "Defer" true | dict "Scratch" .Scratch "Data" | partial "scratch/script.html" -}}
|
||||
{{- dict "Source" $source "Fingerprint" $fingerprint "Defer" true | dict "Page" . "Data" | partial "store/script.html" -}}
|
||||
{{- $source := $cdn.lightgalleryThumbnailJS | default "lib/lightgallery/plugins/thumbnail/lg-thumbnail.min.js" -}}
|
||||
{{- dict "Source" $source "Fingerprint" $fingerprint "Defer" true | dict "Scratch" .Scratch "Data" | partial "scratch/script.html" -}}
|
||||
{{- dict "Source" $source "Fingerprint" $fingerprint "Defer" true | dict "Page" . "Data" | partial "store/script.html" -}}
|
||||
{{- $source := $cdn.lightgalleryZoomJS | default "lib/lightgallery/plugins/zoom/lg-zoom.min.js" -}}
|
||||
{{- dict "Source" $source "Fingerprint" $fingerprint "Defer" true | dict "Scratch" .Scratch "Data" | partial "scratch/script.html" -}}
|
||||
{{- dict "Source" $source "Fingerprint" $fingerprint "Defer" true | dict "Page" . "Data" | partial "store/script.html" -}}
|
||||
{{- $config = dict "lightgallery" true | merge $config -}}
|
||||
{{- end -}}
|
||||
|
||||
@@ -66,66 +79,71 @@
|
||||
{{- /* Sharer.js */ -}}
|
||||
{{- if $params.share.enable -}}
|
||||
{{- $source := $cdn.sharerJS | default "lib/sharer/sharer.min.js" -}}
|
||||
{{- dict "Source" $source "Fingerprint" $fingerprint "Async" true "Defer" true | dict "Scratch" .Scratch "Data" | partial "scratch/script.html" -}}
|
||||
{{- dict "Source" $source "Fingerprint" $fingerprint "Async" true "Defer" true | dict "Page" . "Data" | partial "store/script.html" -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- /* TypeIt */ -}}
|
||||
{{- if .Store.Get "hasTyped" -}}
|
||||
{{- $typeit := .Site.Params.typeit -}}
|
||||
{{- $source := $cdn.typeitJS | default "lib/typeit/index.umd.js" -}}
|
||||
{{- dict "Source" $source "Fingerprint" $fingerprint "Defer" true | dict "Scratch" $.Scratch "Data" | partial "scratch/script.html" -}}
|
||||
{{- dict "Source" $source "Fingerprint" $fingerprint "Defer" true | dict "Page" . "Data" | partial "store/script.html" -}}
|
||||
{{- $config = dict "speed" $typeit.speed "cursorSpeed" $typeit.cursorSpeed "cursorChar" $typeit.cursorChar "duration" $typeit.duration "loop" $typeit.loop | dict "typeit" | merge $config -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- /* KaTeX */ -}}
|
||||
{{- $math := .Scratch.Get "math" -}}
|
||||
{{- /* Mathematical formulas */ -}}
|
||||
{{- $math := .Store.Get "math" -}}
|
||||
{{- if $math.enable -}}
|
||||
{{- $source := $cdn.katexCSS | default "lib/katex/katex.min.css" -}}
|
||||
{{- dict "Source" $source "Fingerprint" $fingerprint "Preload" true | dict "Scratch" .Scratch "Data" | partial "scratch/style.html" -}}
|
||||
{{- $source := $cdn.katexJS | default "lib/katex/katex.min.js" -}}
|
||||
{{- dict "Source" $source "Fingerprint" $fingerprint "Defer" true | dict "Scratch" .Scratch "Data" | partial "scratch/script.html" -}}
|
||||
{{- $source := $cdn.katexAutoRenderJS | default "lib/katex/auto-render.min.js" -}}
|
||||
{{- dict "Source" $source "Fingerprint" $fingerprint "Defer" true | dict "Scratch" .Scratch "Data" | partial "scratch/script.html" -}}
|
||||
{{- if $math.copyTex -}}
|
||||
{{- $source := $cdn.katexCopyTexJS | default "lib/katex/copy-tex.min.js" -}}
|
||||
{{- dict "Source" $source "Fingerprint" $fingerprint "Defer" true | dict "Scratch" .Scratch "Data" | partial "scratch/script.html" -}}
|
||||
{{- /* KaTeX */ -}}
|
||||
{{- if (eq $math.type "katex") | and (.Store.Get "hasKaTeX") -}}
|
||||
{{- $source := $cdn.katexCSS | default "lib/katex/katex.min.css" -}}
|
||||
{{- dict "Source" $source "Fingerprint" $fingerprint "Preload" true | dict "Page" . "Data" | partial "store/style.html" -}}
|
||||
{{- /* Copy-tex extension */ -}}
|
||||
{{- if $math.katex.copyTex -}}
|
||||
{{- $source := $cdn.katexCopyTexJS | default "lib/katex/copy-tex.min.js" -}}
|
||||
{{- dict "Source" $source "Fingerprint" $fingerprint "Defer" true | dict "Page" . "Data" | partial "store/script.html" -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- if $math.mhchem -}}
|
||||
{{- $source := $cdn.katexMhchemJS | default "lib/katex/mhchem.min.js" -}}
|
||||
{{- dict "Source" $source "Fingerprint" $fingerprint "Defer" true | dict "Scratch" .Scratch "Data" | partial "scratch/script.html" -}}
|
||||
|
||||
{{- /* MathJax */ -}}
|
||||
{{- if eq $math.type "mathjax" -}}
|
||||
{{/* TODO improve MathJax setup. e.g. content encryption, Twikoo math etc. */}}
|
||||
{{- $mathjax := $math.mathjax -}}
|
||||
{{- $source := "js/lib/load-mathjax.js" -}}
|
||||
{{- $options := dict "targetPath" "js/lib/load-mathjax.min.js" "minify" hugo.IsProduction -}}
|
||||
{{- $mathjaxOpts := $mathjax.options | default dict -}}
|
||||
{{- $mathjaxOpts = dict "enableMenu" $mathjaxOpts.enablemenu | merge $mathjaxOpts -}}
|
||||
{{- $params := dict
|
||||
"cdn" $mathjax.cdn
|
||||
"tex" ($mathjax.tex | default dict)
|
||||
"packages" ($mathjax.packages | default dict)
|
||||
"macros" ($mathjax.macros | default dict)
|
||||
"loader" ($mathjax.loader | default dict)
|
||||
"options" $mathjaxOpts
|
||||
-}}
|
||||
{{- $options = dict "params" $params | merge $options -}}
|
||||
{{- if not hugo.IsProduction -}}
|
||||
{{- $options = dict "sourceMap" "external" | merge $options -}}
|
||||
{{- end -}}
|
||||
{{- dict "Source" $source "Build" $options "Fingerprint" $fingerprint "Async" true "Defer" true | dict "Page" . "Data" | partial "store/script.html" -}}
|
||||
{{- end -}}
|
||||
{{- $delimiters := slice (dict "left" "$$" "right" "$$" "display" true) (dict "left" "\\[" "right" "\\]" "display" true) -}}
|
||||
{{- $delimiters = $delimiters | append (dict "left" "\\begin{equation}" "right" "\\end{equation}" "display" true) -}}
|
||||
{{- $delimiters = $delimiters | append (dict "left" "\\begin{equation*}" "right" "\\end{equation*}" "display" true) -}}
|
||||
{{- $delimiters = $delimiters | append (dict "left" "\\begin{align}" "right" "\\end{align}" "display" true) -}}
|
||||
{{- $delimiters = $delimiters | append (dict "left" "\\begin{align*}" "right" "\\end{align*}" "display" true) -}}
|
||||
{{- $delimiters = $delimiters | append (dict "left" "\\begin{alignat}" "right" "\\end{alignat}" "display" true) -}}
|
||||
{{- $delimiters = $delimiters | append (dict "left" "\\begin{alignat*}" "right" "\\end{alignat*}" "display" true) -}}
|
||||
{{- $delimiters = $delimiters | append (dict "left" "\\begin{gather}" "right" "\\end{gather}" "display" true) -}}
|
||||
{{- $delimiters = $delimiters | append (dict "left" "\\begin{CD}" "right" "\\end{CD}" "display" true) -}}
|
||||
{{- if and $math.blockLeftDelimiter $math.blockRightDelimiter -}}
|
||||
{{- $delimiters = $delimiters | append (dict "left" $math.blockLeftDelimiter "right" $math.blockRightDelimiter "display" true) -}}
|
||||
{{- end -}}
|
||||
{{- $delimiters = $delimiters | append (dict "left" "$" "right" "$" "display" false) (dict "left" "\\(" "right" "\\)" "display" false) -}}
|
||||
{{- if and $math.inlineLeftDelimiter $math.inlineRightDelimiter -}}
|
||||
{{- $delimiters = $delimiters | append (dict "left" $math.inlineRightDelimiter "right" $math.inlineRightDelimiter "display" false) -}}
|
||||
{{- end -}}
|
||||
{{- $config = dict "strict" false "delimiters" $delimiters | dict "math" | merge $config -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- /* mermaid */ -}}
|
||||
{{- if .Store.Get "hasMermaid" -}}
|
||||
{{- $config = dict "themes" .Site.Params.mermaid.themes | dict "mermaid" | merge $config -}}
|
||||
<script type="module">
|
||||
import mermaid from 'https://cdn.jsdelivr.net/npm/mermaid@10/dist/mermaid.esm.min.mjs';
|
||||
import mermaid from 'https://cdn.jsdelivr.net/npm/mermaid@11.3.0/dist/mermaid.esm.min.mjs';
|
||||
// Style conflict with ZenUML
|
||||
// import zenuml from 'https://cdn.jsdelivr.net/npm/@mermaid-js/mermaid-zenuml@0.2.0/dist/mermaid-zenuml.esm.min.mjs'
|
||||
// await mermaid.registerExternalDiagrams([zenuml]);
|
||||
window.mermaid = mermaid;
|
||||
window.mermaid.themes = {{ .Site.Params.mermaid.themes }};
|
||||
</script>
|
||||
{{- end -}}
|
||||
|
||||
{{- /* ECharts */ -}}
|
||||
{{- if .Store.Get "hasEcharts" -}}
|
||||
{{- $source := $cdn.echartsJS | default "lib/echarts/echarts.min.js" -}}
|
||||
{{- dict "Source" $source "Fingerprint" $fingerprint "Defer" true | dict "Scratch" .Scratch "Data" | partial "scratch/script.html" -}}
|
||||
{{- dict "Source" $source "Fingerprint" $fingerprint "Defer" true | dict "Page" . "Data" | partial "store/script.html" -}}
|
||||
{{- $lightTheme := resources.Get "lib/echarts/theme/light.yml" | transform.Unmarshal -}}
|
||||
{{- $darkTheme := resources.Get "lib/echarts/theme/dark.yml" | transform.Unmarshal -}}
|
||||
{{- $config = dict "lightTheme" $lightTheme "darkTheme" $darkTheme | dict "echarts" | merge $config -}}
|
||||
@@ -134,10 +152,10 @@
|
||||
{{- /* Mapbox GL */ -}}
|
||||
{{- if .HasShortcode "mapbox" -}}
|
||||
{{- $source := $cdn.mapboxGLCSS | default "lib/mapbox-gl/mapbox-gl.css" -}}
|
||||
{{- dict "Source" $source "Minify" true "Fingerprint" $fingerprint "Preload" true | dict "Scratch" .Scratch "Data" | partial "scratch/style.html" -}}
|
||||
{{- dict "Source" $source "Minify" true "Fingerprint" $fingerprint "Preload" true | dict "Page" . "Data" | partial "store/style.html" -}}
|
||||
{{- $source = $cdn.mapboxGLJS | default "lib/mapbox-gl/mapbox-gl.js" -}}
|
||||
{{- dict "Source" $source "Fingerprint" $fingerprint "Defer" true | dict "Scratch" .Scratch "Data" | partial "scratch/script.html" -}}
|
||||
{{- dict "Source" "lib/mapbox-gl/mapbox-gl-language.js" "Minify" true "Fingerprint" $fingerprint "Defer" true | dict "Scratch" .Scratch "Data" | partial "scratch/script.html" -}}
|
||||
{{- dict "Source" $source "Fingerprint" $fingerprint "Defer" true | dict "Page" . "Data" | partial "store/script.html" -}}
|
||||
{{- dict "Source" "lib/mapbox-gl/mapbox-gl-language.js" "Minify" true "Fingerprint" $fingerprint "Defer" true | dict "Page" . "Data" | partial "store/script.html" -}}
|
||||
{{- $config = dict "accessToken" $params.mapbox.accessToken "RTLTextPlugin" "https://api.mapbox.com/mapbox-gl-js/plugins/mapbox-gl-rtl-text/v0.2.0/mapbox-gl-rtl-text.js" | dict "mapbox" | merge $config -}}
|
||||
{{- end -}}
|
||||
|
||||
@@ -145,23 +163,23 @@
|
||||
{{- if .HasShortcode "music" -}}
|
||||
{{- /* APlayer */ -}}
|
||||
{{- $source := $cdn.aplayerCSS | default "lib/aplayer/APlayer.min.css" -}}
|
||||
{{- dict "Source" $source "Fingerprint" $fingerprint "Preload" true | dict "Scratch" .Scratch "Data" | partial "scratch/style.html" -}}
|
||||
{{- dict "Source" $source "Fingerprint" $fingerprint "Preload" true | dict "Page" . "Data" | partial "store/style.html" -}}
|
||||
{{- $options := dict "targetPath" "lib/aplayer/dark.min.css" "enableSourceMap" true -}}
|
||||
{{- dict "Source" "lib/aplayer/dark.scss" "ToCSS" $options "Fingerprint" $fingerprint | dict "Scratch" .Scratch "Data" | partial "scratch/style.html" -}}
|
||||
{{- dict "Source" "lib/aplayer/dark.scss" "ToCSS" $options "Fingerprint" $fingerprint | dict "Page" . "Data" | partial "store/style.html" -}}
|
||||
{{- $source := $cdn.aplayerJS | default "lib/aplayer/APlayer.min.js" -}}
|
||||
{{- dict "Source" $source "Fingerprint" $fingerprint "Defer" true | dict "Scratch" .Scratch "Data" | partial "scratch/script.html" -}}
|
||||
{{- dict "Source" $source "Fingerprint" $fingerprint "Defer" true | dict "Page" . "Data" | partial "store/script.html" -}}
|
||||
|
||||
{{- /* MetingJS */ -}}
|
||||
{{- $source := $cdn.metingJS | default "lib/meting/Meting.min.js" -}}
|
||||
{{- dict "Source" $source "Fingerprint" $fingerprint "Defer" true | dict "Scratch" .Scratch "Data" | partial "scratch/script.html" -}}
|
||||
{{- dict "Source" $source "Fingerprint" $fingerprint "Defer" true | dict "Page" . "Data" | partial "store/script.html" -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- /* Cookie Consent */ -}}
|
||||
{{- if .Site.Params.cookieconsent | and .Site.Params.cookieconsent.enable -}}
|
||||
{{- $source := $cdn.cookieconsentCSS | default "lib/cookieconsent/cookieconsent.min.css" -}}
|
||||
{{- dict "Source" $source "Fingerprint" $fingerprint | dict "Scratch" .Scratch "Data" | partial "scratch/style.html" -}}
|
||||
{{- dict "Source" $source "Fingerprint" $fingerprint | dict "Page" . "Data" | partial "store/style.html" -}}
|
||||
{{- $source := $cdn.cookieconsentJS | default "lib/cookieconsent/cookieconsent.min.js" -}}
|
||||
{{- dict "Source" $source "Fingerprint" $fingerprint "Defer" true | dict "Scratch" .Scratch "Data" | partial "scratch/script.html" -}}
|
||||
{{- dict "Source" $source "Fingerprint" $fingerprint "Defer" true | dict "Page" . "Data" | partial "store/script.html" -}}
|
||||
{{- $cookieconsentConfig := dict "popup" (dict "background" "#1aa3ff") "button" (dict "background" "#f0f0f0") | dict "theme" "edgeless" "palette" -}}
|
||||
{{- $cookieconsentConfig = .Site.Params.cookieconsent | merge $cookieconsentConfig -}}
|
||||
{{- $cookieconsentConfig = dict "message" ($cookieconsentConfig.content.message | default (T "assets.cookieconsentMessage")) "dismiss" ($cookieconsentConfig.content.dismiss | default (T "assets.cookieconsentDismiss")) "link" ($cookieconsentConfig.content.link | default (T "assets.cookieconsentLink")) | dict "content" | merge $cookieconsentConfig -}}
|
||||
@@ -171,14 +189,14 @@
|
||||
{{- /* PanguJS */ -}}
|
||||
{{- if eq .Site.Params.pangu.enable true -}}
|
||||
{{- $source := $cdn.panguJS | default "lib/pangu/pangu.min.js" -}}
|
||||
{{- dict "Source" $source "Fingerprint" $fingerprint "Defer" true | dict "Scratch" .Scratch "Data" | partial "scratch/script.html" -}}
|
||||
{{- dict "Source" $source "Fingerprint" $fingerprint "Defer" true | dict "Page" . "Data" | partial "store/script.html" -}}
|
||||
{{- $config = dict "pangu" .Site.Params.pangu | merge $config -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- /* Watermark */ -}}
|
||||
{{- if eq .Site.Params.watermark.enable true -}}
|
||||
{{- $source := $cdn.cellWatermarkJS | default "lib/cell-watermark/watermark.min.js" -}}
|
||||
{{- dict "Source" $source "Fingerprint" $fingerprint "Defer" true | dict "Scratch" .Scratch "Data" | partial "scratch/script.html" -}}
|
||||
{{- dict "Source" $source "Fingerprint" $fingerprint "Defer" true | dict "Page" . "Data" | partial "store/script.html" -}}
|
||||
{{- /* Hugo bug: case insensitive for `.Site.Params` */ -}}
|
||||
{{- $config = dict "watermark" .Site.Params.watermark | merge $config -}}
|
||||
{{- end -}}
|
||||
@@ -190,27 +208,27 @@
|
||||
{{- $cryptoEncBase64JS := $cdn.cryptoEncBase64JS | default "lib/crypto-js/enc-base64.js" -}}
|
||||
{{- $cryptoSha256JS := $cdn.cryptoSha256JS | default "lib/crypto-js/sha256.js" -}}
|
||||
{{- $xxhashWasmJS := $cdn.xxhashWasmJS | default "lib/xxhash-wasm/xxhash-wasm.js" -}}
|
||||
{{- dict "Source" $cryptoCoreJS "Minify" true "Fingerprint" $fingerprint "Defer" true | dict "Scratch" .Scratch "Data" | partial "scratch/script.html" -}}
|
||||
{{- dict "Source" $cryptoEncBase64JS "Minify" true "Fingerprint" $fingerprint "Defer" true | dict "Scratch" .Scratch "Data" | partial "scratch/script.html" -}}
|
||||
{{- dict "Source" $cryptoSha256JS "Minify" true "Fingerprint" $fingerprint "Defer" true | dict "Scratch" .Scratch "Data" | partial "scratch/script.html" -}}
|
||||
{{- dict "Source" $xxhashWasmJS "Fingerprint" $fingerprint "Defer" true | dict "Scratch" .Scratch "Data" | partial "scratch/script.html" -}}
|
||||
{{- dict "Source" $cryptoCoreJS "Minify" true "Fingerprint" $fingerprint "Defer" true | dict "Page" . "Data" | partial "store/script.html" -}}
|
||||
{{- dict "Source" $cryptoEncBase64JS "Minify" true "Fingerprint" $fingerprint "Defer" true | dict "Page" . "Data" | partial "store/script.html" -}}
|
||||
{{- dict "Source" $cryptoSha256JS "Minify" true "Fingerprint" $fingerprint "Defer" true | dict "Page" . "Data" | partial "store/script.html" -}}
|
||||
{{- dict "Source" $xxhashWasmJS "Fingerprint" $fingerprint "Defer" true | dict "Page" . "Data" | partial "store/script.html" -}}
|
||||
{{- /* Decryption script */ -}}
|
||||
{{- $options := dict "targetPath" "js/fixit-decryptor.min.js" "minify" hugo.IsProduction -}}
|
||||
{{- if not hugo.IsProduction -}}
|
||||
{{- $options = dict "sourceMap" "external" | merge $options -}}
|
||||
{{- end -}}
|
||||
{{- dict "Source" (resources.Get "js/fixit-decryptor.js") "Build" $options "Fingerprint" $fingerprint "Defer" true | dict "Scratch" .Scratch "Data" | partial "scratch/script.html" -}}
|
||||
{{- dict "Source" (resources.Get "js/fixit-decryptor.js") "Build" $options "Fingerprint" $fingerprint "Defer" true | dict "Page" . "Data" | partial "store/script.html" -}}
|
||||
{{- $config = dict "all" (isset $params "password") "shortcode" ($encryptPartial | default false) | dict "encryption" | merge $config -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- /* 不蒜子 */ -}}
|
||||
{{- if .Site.Params.busuanzi.enable | and hugo.IsProduction -}}
|
||||
{{- $source := .Site.Params.busuanzi.source | default "https://vercount.one/js" -}}
|
||||
{{- dict "Source" $source "Fingerprint" $fingerprint "Async" true "Defer" true | dict "Scratch" .Scratch "Data" | partial "scratch/script.html" -}}
|
||||
{{- dict "Source" $source "Fingerprint" $fingerprint "Async" true "Defer" true | dict "Page" . "Data" | partial "store/script.html" -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- /* Site creation time */ -}}
|
||||
{{- $siteTime := .Scratch.Get "siteTime" -}}
|
||||
{{- $siteTime := .Site.Store.Get "siteTime" -}}
|
||||
{{- if $siteTime.enable -}}
|
||||
{{- with $siteTime.value -}}
|
||||
{{- $config = dict "siteTime" . | merge $config -}}
|
||||
@@ -244,27 +262,30 @@
|
||||
{{- $paceCSS = printf "%v/pace-theme-default.min.css" . -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- dict "Source" $paceJS "Fingerprint" $fingerprint "Async" true "Defer" true | dict "Scratch" .Scratch "Data" | partial "scratch/script.html" -}}
|
||||
{{- dict "Source" $paceCSS "Fingerprint" $fingerprint | dict "Scratch" .Scratch "Data" | partial "scratch/style.html" -}}
|
||||
{{- dict "Source" $paceJS "Fingerprint" $fingerprint "Async" true "Defer" true | dict "Page" . "Data" | partial "store/script.html" -}}
|
||||
{{- dict "Source" $paceCSS "Fingerprint" $fingerprint | dict "Page" . "Data" | partial "store/style.html" -}}
|
||||
{{- /* To patch pace theme flat-top z-index error */ -}}
|
||||
{{- if eq $.Site.Params.pace.theme "flat-top" -}}
|
||||
{{- dict "Source" "lib/pace/pace-patch-flat-top.css" "Fingerprint" $fingerprint | dict "Scratch" .Scratch "Data" | partial "scratch/style.html" -}}
|
||||
{{- dict "Source" "lib/pace/pace-patch-flat-top.css" "Fingerprint" $fingerprint | dict "Page" . "Data" | partial "store/style.html" -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- /* PostChat */ -}}
|
||||
{{- partial "plugin/post-chat-ai.html" . -}}
|
||||
|
||||
{{- range $params.library.css -}}
|
||||
{{- dict "Source" . "Fingerprint" $fingerprint | dict "Scratch" $.Scratch "Data" | partial "scratch/style.html" -}}
|
||||
{{- dict "Source" . "Fingerprint" $fingerprint | dict "Page" $ "Data" | partial "store/style.html" -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- range $params.library.js -}}
|
||||
{{- dict "Source" . "Fingerprint" $fingerprint "Defer" true | dict "Scratch" $.Scratch "Data" | partial "scratch/script.html" -}}
|
||||
{{- dict "Source" . "Fingerprint" $fingerprint "Defer" true | dict "Page" $ "Data" | partial "store/script.html" -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- with .Store.Get "styleArr" -}}
|
||||
{{- $content := delimit . " " -}}
|
||||
{{- $path := substr (md5 $.RelPermalink) 0 8 | printf "css/%v" -}}
|
||||
{{- $options := printf "%v.min.css" $path | dict "targetPath" -}}
|
||||
{{- dict "Content" $content "Path" (printf "%v.scss" $path) "ToCSS" $options | dict "Scratch" $.Scratch "Data" | partial "scratch/style.html" -}}
|
||||
{{- dict "Content" $content "Path" (printf "%v.scss" $path) "ToCSS" $options | dict "Page" $ "Data" | partial "store/style.html" -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- /* Config script */ -}}
|
||||
@@ -272,14 +293,14 @@
|
||||
{{- if hugo.IsServer -}}
|
||||
{{- $configJS = add $configJS "console.log('Page config:', window.config);" -}}
|
||||
{{- end -}}
|
||||
{{- $configJS | dict "Content" | dict "Scratch" .Scratch "Data" | partial "scratch/script.html" -}}
|
||||
{{- $configJS | dict "Content" | dict "Page" . "Data" | partial "store/script.html" -}}
|
||||
|
||||
{{- /* Theme script */ -}}
|
||||
{{- $options := dict "targetPath" "js/theme.min.js" "minify" hugo.IsProduction -}}
|
||||
{{- if not hugo.IsProduction -}}
|
||||
{{- $options = dict "sourceMap" "external" | merge $options -}}
|
||||
{{- end -}}
|
||||
{{- dict "Source" (resources.Get "js/theme.js") "Build" $options "Fingerprint" $fingerprint "Defer" true | dict "Scratch" .Scratch "Data" | partial "scratch/script.html" -}}
|
||||
{{- dict "Source" (resources.Get "js/theme.js") "Build" $options "Fingerprint" $fingerprint "Defer" true | dict "Page" . "Data" | partial "store/script.html" -}}
|
||||
|
||||
{{- /* Custom Assets */ -}}
|
||||
{{- block "custom-assets" . }}{{ end -}}
|
||||
@@ -290,20 +311,20 @@
|
||||
{{- if not hugo.IsProduction -}}
|
||||
{{- $options = dict "sourceMap" "inline" | merge $options -}}
|
||||
{{- end -}}
|
||||
{{- dict "Source" . "Build" $options "Fingerprint" $fingerprint "Defer" true | dict "Scratch" $.Scratch "Data" | partial "scratch/script.html" -}}
|
||||
{{- dict "Source" . "Build" $options "Fingerprint" $fingerprint "Defer" true | dict "Page" $ "Data" | partial "store/script.html" -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- with .Store.Get "scriptArr" -}}
|
||||
{{- $content := delimit . "\n" -}}
|
||||
{{- $targetPath := substr (md5 $.RelPermalink) 0 8 | printf "js/%v.js" -}}
|
||||
{{- dict "Content" $content "Path" $targetPath "Defer" true | dict "Scratch" $.Scratch "Data" | partial "scratch/script.html" -}}
|
||||
{{- dict "Content" $content "Path" $targetPath "Defer" true | dict "Page" $ "Data" | partial "store/script.html" -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- range (.Scratch.Get "this").style -}}
|
||||
{{- range (.Store.Get "this").style -}}
|
||||
{{- partial "plugin/style.html" . -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- range (.Scratch.Get "this").script -}}
|
||||
{{- range (.Store.Get "this").script -}}
|
||||
{{- partial "plugin/script.html" . -}}
|
||||
{{- end -}}
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
{{- if (gt (len .Ancestors.Reverse) 1) | and (eq .Site.Params.breadcrumb.enable true) -}}
|
||||
{{- $separator := .Site.Params.breadcrumb.separator | default "/" -}}
|
||||
<nav aria-label="breadcrumb" class="breadcrumb-container{{ if .Site.Params.breadcrumb.sticky }} sticky{{ end }}">
|
||||
<ol class="breadcrumb">
|
||||
{{- range .Ancestors.Reverse -}}
|
||||
{{- if .IsHome | and (not .Site.Params.breadcrumb.showHome) -}}
|
||||
{{- continue -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- $title := "" -}}
|
||||
{{- $capitalizeTitles := .Param "capitalizeTitles" -}}
|
||||
{{- with .Description -}}
|
||||
{{- $title = . -}}
|
||||
{{- else -}}
|
||||
{{- $title = cond $capitalizeTitles (title .LinkTitle) .LinkTitle -}}
|
||||
{{- if .IsPage | and .Summary -}}
|
||||
{{- $title = .Summary | plainify -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- $innerText := "" -}}
|
||||
{{- if .IsHome -}}
|
||||
{{- $innerText = T "single.home" -}}
|
||||
{{- else -}}
|
||||
{{- $innerText = (T (add .TranslationKey ".breadcrumbTitle")) | default (lower .LinkTitle | T) | default .LinkTitle -}}
|
||||
{{- $innerText = cond ((.Param "breadcrumb.capitalize") | and $capitalizeTitles) (title $innerText) $innerText -}}
|
||||
{{- end -}}
|
||||
|
||||
<li class="breadcrumb-item" data-separator="{{ $separator }}"><a href="{{ .RelPermalink }}" title="{{ $title }}">{{ $innerText }}</a></li>
|
||||
{{- end -}}
|
||||
|
||||
{{- $currentText := (T (add .TranslationKey ".breadcrumbTitle")) | default (lower .LinkTitle | T) | default .LinkTitle -}}
|
||||
{{- $currentText = cond ((.Param "breadcrumb.capitalize") | and (.Param "capitalizeTitles")) (title $currentText) $currentText -}}
|
||||
<li class="breadcrumb-item active" data-separator="{{ $separator }}" aria-current="page">{{ $currentText }}</li>
|
||||
</ol>
|
||||
</nav>
|
||||
{{- end -}}
|
||||
@@ -5,6 +5,20 @@
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "custom-menu:desktop" -}}
|
||||
{{- $ctx := . -}}
|
||||
{{- range .Site.Params.customPartials.menuDesktop -}}
|
||||
{{- partial . $ctx -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "custom-menu:mobile" -}}
|
||||
{{- $ctx := . -}}
|
||||
{{- range .Site.Params.customPartials.menuMobile -}}
|
||||
{{- partial . $ctx -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "custom-profile" -}}
|
||||
{{- $ctx := . -}}
|
||||
{{- range .Site.Params.customPartials.profile -}}
|
||||
@@ -47,6 +61,34 @@
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "custom-post__toc:before" -}}
|
||||
{{- $ctx := . -}}
|
||||
{{- range .Site.Params.customPartials.postTocBefore -}}
|
||||
{{- partial . $ctx -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "custom-post__toc:after" -}}
|
||||
{{- $ctx := . -}}
|
||||
{{- range .Site.Params.customPartials.postTocAfter -}}
|
||||
{{- partial . $ctx -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "custom-post__content:before" -}}
|
||||
{{- $ctx := . -}}
|
||||
{{- range .Site.Params.customPartials.postContentBefore -}}
|
||||
{{- partial . $ctx -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "custom-post__content:after" -}}
|
||||
{{- $ctx := . -}}
|
||||
{{- range .Site.Params.customPartials.postContentAfter -}}
|
||||
{{- partial . $ctx -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "custom-post__footer:before" -}}
|
||||
{{- $ctx := . -}}
|
||||
{{- range .Site.Params.customPartials.postFooterBefore -}}
|
||||
@@ -6,7 +6,6 @@
|
||||
{{- if ge .Config.limit 1 -}}
|
||||
{{- $pages = $pages | first .Config.limit -}}
|
||||
{{- end -}}
|
||||
{{- $length := $pages.Len -}}
|
||||
|
||||
{{- printf "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\"?>" | safeHTML }}
|
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
||||
@@ -14,7 +13,13 @@
|
||||
<title>{{ .Title }}</title>
|
||||
<link>{{ .Permalink }}</link>
|
||||
<description>{{ .Site.Params.description | default .Site.Title }}</description>
|
||||
<generator>Hugo {{ hugo.Version }} & FixIt {{ .Version }}</generator>
|
||||
{{- if and (.Site.Params.feed.follow.feedId) (.Site.Params.feed.follow.userId) }}
|
||||
<follow_challenge>
|
||||
<feedId>{{ .Site.Params.feed.follow.feedId }}</feedId>
|
||||
<userId>{{ .Site.Params.feed.follow.userId }}</userId>
|
||||
</follow_challenge>
|
||||
{{- end }}
|
||||
<generator>Hugo {{ hugo.Version }} & FixIt {{ hugo.Store.Get "version" }}</generator>
|
||||
<language>{{ .Site.Language.LanguageCode }}</language>{{ with .Site.Params.author.email }}
|
||||
<managingEditor>{{.}}{{ with $.Site.Params.author.name }} ({{ . }}){{ end }}</managingEditor>{{ end }}{{ with .Site.Params.author.email }}
|
||||
<webMaster>{{ . }}{{ with $.Site.Params.author.name }} ({{ . }}){{ end }}</webMaster>{{ end }}{{ with .Site.Copyright }}
|
||||
@@ -27,13 +32,9 @@
|
||||
{{- $params := .Params | merge .Site.Params.Page }}
|
||||
{{- $fullText := ((.Params.feed | default dict) | merge $.Config ).fulltext }}
|
||||
{{- $author := partial "function/get-author-map.html" .Params.author }}
|
||||
{{- $cacheRemoteImages := $params.cacheRemoteImages }}
|
||||
{{- $image := $params.featuredimagepreview | default $params.featuredimage }}
|
||||
{{- with dict "Path" $image "Resources" .Resources "CacheRemoteImages" $cacheRemoteImages.enable | partial "function/resource.html" }}
|
||||
{{- $url := urls.Parse $image }}
|
||||
{{- if not $url.Host | or $cacheRemoteImages.replace }}
|
||||
{{- $image = .Permalink }}
|
||||
{{- end }}
|
||||
{{- with dict "Path" $image "Resources" .Resources | partial "function/resource.html" }}
|
||||
{{- $image = .Permalink }}
|
||||
{{- end }}
|
||||
{{- with .Resources.GetMatch "featured-image" }}
|
||||
{{- $image = .Permalink }}
|
||||
@@ -54,14 +55,12 @@
|
||||
{{- end }}
|
||||
{{- if $fullText }}
|
||||
<description>
|
||||
{{- "<![CDATA[" | safeHTML }}
|
||||
{{- $content := dict "Content" .Content "Ruby" $params.ruby "Fraction" $params.fraction "Fontawesome" $params.fontawesome | partial "function/content.html" }}
|
||||
{{- /* {{- $content | replaceRE `<figure[^>]*>.*</figure>` "" | replaceRE `<img[^>]*( /)?>` "" | safeHTML -}} */ -}}
|
||||
{{- with $image }}
|
||||
{{- $content = add (printf "<img src=%q alt=%q referrerpolicy=%q>" . "featured image" "no-referrer") $content | safeHTML }}
|
||||
{{- end }}
|
||||
{{- $content | transform.XMLEscape | safeHTML }}
|
||||
{{- "]]>" | safeHTML -}}
|
||||
{{- $content | transform.XMLEscape | safeHTML -}}
|
||||
</description>
|
||||
{{- else }}
|
||||
<description>{{ (.Summary | default .Description | default .Title) | transform.XMLEscape | safeHTML }}</description>
|
||||
@@ -10,7 +10,7 @@
|
||||
{{- if ne $footerConfig.powered.enable false -}}
|
||||
<div class="footer-line powered{{ with $footerConfig.order.powered }} order-{{ . }}{{ end }}">
|
||||
{{- $hugo := printf `<a href="https://gohugo.io/" target="_blank" rel="external nofollow noopener noreferrer" title="Hugo %v">{hugoLogo}Hugo</a>` hugo.Version -}}
|
||||
{{- $theme := printf `<a href="https://github.com/hugo-fixit/FixIt" target="_blank" rel="external" title="FixIt %v">{themeLogo}FixIt</a>` (.Scratch.Get "version") -}}
|
||||
{{- $theme := printf `<a href="https://github.com/hugo-fixit/FixIt" target="_blank" rel="external" title="FixIt %v">{themeLogo}FixIt</a>` (hugo.Store.Get "version") -}}
|
||||
{{- if $footerConfig.powered.hugoLogo -}}
|
||||
{{- $hugoLogo := printf `<img class="hugo-icon" src="%v" alt="Hugo logo" /> ` (resources.Get "images/hugo.svg" | minify).RelPermalink -}}
|
||||
{{- $hugo = replace $hugo "{hugoLogo}" $hugoLogo -}}
|
||||
@@ -42,7 +42,7 @@
|
||||
{{- /* Author */ -}}
|
||||
{{- if ne $footerConfig.author false -}}
|
||||
<span class="author" itemprop="copyrightHolder">
|
||||
{{ partial "plugin/link.html" (dict "Destination" ($.Site.Params.author.link | default (.Scratch.Get "homeRelPermalink")) "Content" .Site.Params.author.name) -}}
|
||||
{{ partial "plugin/link.html" (dict "Destination" ($.Site.Params.author.link | default (.Site.Store.Get "homeRelPermalink")) "Content" .Site.Params.author.name) -}}
|
||||
</span>
|
||||
{{- end -}}
|
||||
|
||||
@@ -53,7 +53,7 @@
|
||||
</div>
|
||||
{{- end -}}
|
||||
|
||||
{{- $siteTime := .Scratch.Get "siteTime" -}}
|
||||
{{- $siteTime := .Site.Store.Get "siteTime" -}}
|
||||
{{- if $siteTime.enable -}}
|
||||
<div class="footer-line statistics{{ with $footerConfig.order.statistics }} order-{{ . }}{{ end }}">
|
||||
{{- if $siteTime.enable | and $siteTime.value -}}
|
||||
@@ -14,8 +14,8 @@
|
||||
{{- $content = partial "function/fontawesome.html" $content -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- $content = partial "function/checkbox.html" $content -}}
|
||||
|
||||
{{- $content = partial "function/task-lists.html" $content -}}
|
||||
{{- $content = partial "function/marked-text.html" $content -}}
|
||||
{{- $content = partial "function/escape.html" $content -}}
|
||||
|
||||
{{- end -}}
|
||||
@@ -0,0 +1,17 @@
|
||||
{{- /*
|
||||
Format a number with a specific precision and add 'k' if it's greater than 1000
|
||||
Usage: {{ partial "function/format-number" (dict "PRECISION" 2 "NUMBER" 5201314) }}
|
||||
Example Output: 19980.52k
|
||||
*/ -}}
|
||||
|
||||
{{- $number := .NUMBER -}}
|
||||
{{- $precision := .PRECISION | default 1 -}}
|
||||
{{- with $number -}}
|
||||
{{- if ge . 1000 -}}
|
||||
{{- $fmtNum := lang.FormatNumberCustom $precision (div . 1000.0) "- ." -}}
|
||||
{{- $fmtNum = $fmtNum | strings.TrimSuffix "0" | strings.TrimSuffix "." -}}
|
||||
{{- $number = printf "%vk" $fmtNum -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- return $number -}}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user