Compare commits

..

20 Commits

Author SHA1 Message Date
Cell 95c8113d62 🔖 Chore(release): 0.2.18-lts.4 2023-11-06 17:58:41 +08:00
Cell 6fe37cef59 📝 Docs: update change log for v0 2023-11-06 17:58:19 +08:00
Cell 4e29d5e5ca Feat: add more options support for bilibili shortcode, e.g. autoplay, muted etc. (resolve #375) 2023-11-06 17:56:44 +08:00
Cell 02dda642ea 🐛 Fix: disable encrypted articles from rendering to rss (fixed #374) 2023-11-06 15:42:35 +08:00
Cell c2bb7e0f80 🐛 Fix: fix featured image path error in rss and show img tags in rss
Some RSS parsers may incorrectly parse relative image addresses

Close #373
2023-11-06 12:34:21 +08:00
Cell 4fb9711fa6 🐛 Fix: add a option "Responsive" for plugin image fixed #369 2023-11-04 23:59:00 +08:00
Cell 6682d38af2 Perf: optimize lightgallery images rendering 2023-11-03 21:29:59 +08:00
Cell 81f6d68f0a 🔖 Chore(release): 0.2.18-lts.3 2023-11-03 15:39:55 +08:00
Cell a9678bf73c 🐛 Fix: small and large src errors of images 2023-11-03 15:39:43 +08:00
Cell c4a1b10e6a 📝 Docs: update change log 2023-11-03 15:05:39 +08:00
dependabot[bot] fa952dfac7 chore(deps): bump actions/checkout from 3 to 4
Bumps [actions/checkout](https://github.com/actions/checkout) from 3 to 4.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v3...v4)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-03 14:57:43 +08:00
Cell 089fce6a1c ⬆️ Chore(deps-dev): bump core-js from 3.33.1 to 3.33.2
Closes #367
2023-11-03 14:55:16 +08:00
Cell bdad5f7758 📝 Docs: update README and docs 2023-11-03 14:47:05 +08:00
Cell d484414e20 🐛 Fix: fix toc active error when breadcrumb is enabled and set sticky to true (Fixed #368) 2023-11-03 12:36:56 +08:00
Cell d22d261e69 Perf: optimize plugin image 2023-11-02 18:15:14 +08:00
Cell 0de8e5053f Perf: optimize function get-remote-image 2023-11-02 17:37:24 +08:00
Cell ecb0d964ad Perf: optimize function suffix-validation 2023-11-02 17:35:59 +08:00
Cell c4606930ff 🐛 Fix: anchor jump exception caused by lazy loading of responsive images (#348) 2023-11-01 17:48:48 +08:00
Cell a631096b29 Feat: add options to cache remote image locally (#362 Fixes #348) 2023-10-26 16:51:40 +08:00
Cell b9fe4cc207 🐛 Fix: fix path errors in image src and 1.5x srcset (#346) 2023-10-24 17:14:07 +08:00
27 changed files with 479 additions and 322 deletions
+1 -1
View File
@@ -13,7 +13,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Check out repository code
uses: actions/checkout@v3
uses: actions/checkout@v4
with:
submodules: recursive # Fetch Hugo themes (true OR recursive)
fetch-depth: 0 # Fetch all history for .GitInfo and .Lastmod
+1 -1
View File
@@ -8,7 +8,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Check out repository code
uses: actions/checkout@v3
uses: actions/checkout@v4
with:
submodules: recursive # Fetch Hugo themes (true OR recursive)
fetch-depth: 0 # Fetch all history for .GitInfo and .Lastmod
+1 -1
View File
@@ -36,7 +36,7 @@ jobs:
steps:
- name: Check out repository code
uses: actions/checkout@v3
uses: actions/checkout@v4
with:
submodules: true # Fetch Hugo themes (true OR recursive)
fetch-depth: 0 # Fetch all history for .GitInfo and .Lastmod
+34 -6
View File
@@ -3,10 +3,36 @@
All notable changes to this project will be documented in this file.
<!-- Releases see https://github.com/hugo-fixit/FixIt/releases -->
## v0.2.18-lts
## v0.2.18-lts.4 [2023.11.6]
> Snapshot: <https://fixit-git-v0218-lts-cell-x.vercel.app>
- :sparkles: Perf: optimize lightgallery images rendering
- :bug: Fix: add a option "Responsive" for plugin image fixed [#369](https://github.com/hugo-fixit/FixIt/issues/369)
- :bug: Fix: fix featured image path error and show img tags in rss ([#373](https://github.com/hugo-fixit/FixIt/issues/373))
- :bug: Fix: disable encrypted articles from rendering to rss ([#374](https://github.com/hugo-fixit/FixIt/issues/374))
- :sparkles: Feat: add more options support for bilibili shortcode, e.g. `autoplay`, `muted` etc. ([#375](https://github.com/hugo-fixit/FixIt/issues/375))
- **Full Changelog:** @Lruihao [`v0.2.18-lts.3...v0.2.18-lts.4`](https://github.com/hugo-fixit/FixIt/compare/v0.2.18-lts.3...v0.2.18-lts.4)
## v0.2.18-lts.3 [2023.11.3]
> Snapshot: <https://fixit-git-v0218-lts-cell-x.vercel.app>
- :bug: Fix: fix path errors in image src and 1.5x srcset ([#346](https://github.com/hugo-fixit/FixIt/issues/346))
- :sparkles: Feat: add options to cache remote image locally ([#362](https://github.com/hugo-fixit/FixIt/pull/362) Fixes [#348](https://github.com/hugo-fixit/FixIt/issues/348))
- :bug: Fix: fix toc active error when breadcrumb is enabled and set `sticky` to `true` ([#368](https://github.com/hugo-fixit/FixIt/issues/368))
- :arrow_up: Chore(deps-dev):
- Bump core-js from 3.33.1 to 3.33.2
- Bump browserify-sign from 4.2.1 to 4.2.2
- **Full Changelog:** @Lruihao [`v0.2.18-lts.2...v0.2.18-lts.3`](https://github.com/hugo-fixit/FixIt/compare/v0.2.18-lts.2...v0.2.18-lts.3)
## v0.2.18-lts.2 [2023.10.24]
This release is mainly for upgrading third-party libraries and development dependencies.
Snapshot: <https://fixit-iyi1zrhg9-cell-x.vercel.app/>
> **Note**
> FixIt 0.2.18 will reach End of Life (EOL) on December 31st, 2024. After that date, FixIt 0.2.18 will no longer receive updates, including security and browser compatibility fixes.
> **FixIt 0.2.18 will reach End of Life (EOL) on December 31st, 2024.** After that date, FixIt 0.2.18 will no longer receive updates, including security and browser compatibility fixes.
> Please stay tuned for the next version of FixIt under development!
- :sparkles: Feat: add code block attributes support ([#330](https://github.com/hugo-fixit/FixIt/issues/330))
@@ -30,17 +56,19 @@ All notable changes to this project will be documented in this file.
- :arrow_up: Chore(deps-dev): update and pin all development dependency versions
- **Full Changelog:** @Lruihao [`v0.2.18...v0.2.18-lts.2`](https://github.com/hugo-fixit/FixIt/compare/v0.2.18...v0.2.18-lts.2)
_BTW, Happy Programmer's Day (1024)! :)_
## v0.2.18 [2023.3.31]
> **Note**
> This will be the last relatively stable 0.x release, after which the first major release will be incompatible with all previous 0.x releases
> Snapshot: <https://fixit-bpkhreqhl-x-cell.vercel.app>
## :boom: Breaking Updates
### :boom: Breaking Updates
- Refactor author data config [#288](https://github.com/hugo-fixit/FixIt/pull/288)
## :new: What's New
### :new: What's New
- :tada: Feat: add natively support mermaid with code fences ([#230](https://github.com/hugo-fixit/FixIt/issues/230))
- :tada: Feat: add breadcrumb navigation ([#309](https://github.com/hugo-fixit/FixIt/pull/309))
@@ -57,7 +85,7 @@ All notable changes to this project will be documented in this file.
- :bug: Fix: resolve style conflicts between valine and animate.css ([#304](https://github.com/hugo-fixit/FixIt/issues/304))
- :bug: Fix: version `v0.2.17` is not compatible with previous versions
- :bug: Fix: `crypto-js/md5.js` and `crypto-js/sha256.js` cdn path error
- :bug: Fix: HackTheBox social link not in the right format ([#308](https://github.com/hugo-fixit/FixIt/issues/308))
- :bug: Fix: HackTheBox social link not in the right format ([#308](https://github.com/hugo-fixit/FixIt/issues/308))
- :recycle: Refactor: image lazy loading ([#283](https://github.com/hugo-fixit/FixIt/pull/283))
- :recycle: Refactor: author's avatar of post or profile ([#288](https://github.com/hugo-fixit/FixIt/pull/288))
- :recycle: Refactor: language switch in desktop header ([#306](https://github.com/hugo-fixit/FixIt/pull/306))
@@ -301,7 +329,7 @@ All notable changes to this project will be documented in this file.
- :bug: Fix: remove source map of local libraries to avoid 404 error ([#67](https://github.com/hugo-fixit/FixIt/issues/67))
- :fire: Feat: remove shortcode cardlink ([#42](https://github.com/hugo-fixit/FixIt/issues/42))
- :lipstick: Style: more refined theme style ([#40](https://github.com/hugo-fixit/FixIt/issues/40))
- :pencil2: Style: fix typo *discription* should be **description** ([#60](https://github.com/hugo-fixit/FixIt/issues/60))
- :pencil2: Style: fix typo _discription_ should be **description** ([#60](https://github.com/hugo-fixit/FixIt/issues/60))
- :wrench: Chore(update-libs):
- Update cell-watermark 1.0.3 and CDN support (fontFamily supported)
- Update animate.css 3.7.2 -> 4.1.1 ([#74](https://github.com/hugo-fixit/FixIt/issues/74))
+116 -115
View File
@@ -18,8 +18,8 @@ The FixIt theme inherits the excellent features of these themes, and adds new fe
Head to the [getting started page](http://fixit.lruihao.cn/documentation/getting-started/) or start with a template:
* [hugo-fixit/hugo-fixit-blog-git](https://github.com/hugo-fixit/hugo-fixit-blog-git)
* [hugo-fixit/hugo-fixit-blog-go](https://github.com/hugo-fixit/hugo-fixit-blog-go)
- [hugo-fixit/hugo-fixit-blog-git](https://github.com/hugo-fixit/hugo-fixit-blog-git)
- [hugo-fixit/hugo-fixit-blog-go](https://github.com/hugo-fixit/hugo-fixit-blog-go)
## [Documentation](https://fixit.lruihao.cn/categories/documentation/)
@@ -58,11 +58,11 @@ Now the migration is finished and everything is ready 🎉
The FixIt theme inherits the excellent features of themes such as LoveIt, and adds new features and optimizations on those basis, as detailed in [Features](#features). In addition, the FixIt theme has the following advantages:
* Complete Chinese and English official documentations
* Community support: Theme official website, Discussions and official QQ group
* Continuously and actively update
* Constantly incorporate suggestions and ideas from all sides
* Highly open theme customizable section
- Complete Chinese and English official documentations
- Community support: Theme official website, Discussions and official QQ group
- Continuously and actively update
- Constantly incorporate suggestions and ideas from all sides
- Highly open theme customizable section
In short, if you prefer the design language and freedom of the FixIt theme, and if you like to personalize your own themes as I do, the FixIt theme may be more suitable for you.
@@ -74,88 +74,89 @@ To see this theme in action, here are some [live demo sites](https://fixit.lruih
### 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
* Search engine **verification** supported (Google, Bing, Yandex, Pinterest, Baidu, 360 and Sogou)
* **CDN** for third-party libraries supported
- 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
- Search engine **verification** supported (Google, Bing, Yandex, Pinterest, Baidu, 360 and Sogou)
- **CDN** for third-party libraries supported
### Appearance and Layout
* **Responsive** layout
* **Light/Dark** mode
* Globally consistent **design language**
* **Pagination** supported
* Easy-to-use and self-expanding **table of contents**
* **Multilanguage** supported and i18n ready
* Beautiful **CSS animation**
- **Responsive** layout
- **Light/Dark** mode
- Globally consistent **design language**
- **Pagination** supported
- Easy-to-use and self-expanding **table of contents**
- **Multilanguage** supported and i18n ready
- Beautiful **CSS animation**
### Social and Comment Systems
* **Gravatar** supported by [Gravatar](https://gravatar.com)
* Local **Avatar** supported
* Up to **87** social links supported
* Up to **28** share sites supported
* **Disqus** comment system supported by [Disqus](https://disqus.com)
* **Gitalk** comment system supported by [Gitalk](https://github.com/gitalk/gitalk)
* **Valine** comment system supported by [Valine](https://valine.js.org/)
* **Waline** comment system supported by [Waline](https://waline.js.org/)
* **Facebook comments** system supported by [Facebook](https://developers.facebook.com/docs/plugins/comments/)
* **Telegram comments** system supported by [Telegram Comments](https://comments.app/)
* **Commento** comment system supported by [Commento](https://commento.io/)
* **Utterances** comment system supported by [Utterances](https://utteranc.es/)
* **Artalk** comment system supported by [Artalk](https://artalk.js.org/)
* **Twikoo** comment system supported by [Twikoo](https://twikoo.js.org/)
* **giscus** comment system supported by [giscus](https://giscus.app/)
- **Gravatar** supported by [Gravatar](https://gravatar.com)
- Local **Avatar** supported
- Up to **87** social links supported
- Up to **28** share sites supported
- **Disqus** comment system supported by [Disqus](https://disqus.com)
- **Gitalk** comment system supported by [Gitalk](https://github.com/gitalk/gitalk)
- **Valine** comment system supported by [Valine](https://valine.js.org/)
- **Waline** comment system supported by [Waline](https://waline.js.org/)
- **Facebook comments** system supported by [Facebook](https://developers.facebook.com/docs/plugins/comments/)
- **Telegram comments** system supported by [Telegram Comments](https://comments.app/)
- **Commento** comment system supported by [Commento](https://commento.io/)
- **Utterances** comment system supported by [Utterances](https://utteranc.es/)
- **Artalk** comment system supported by [Artalk](https://artalk.js.org/)
- **Twikoo** comment system supported by [Twikoo](https://twikoo.js.org/)
- **giscus** comment system supported by [giscus](https://giscus.app/)
### Extended Features
* **PWA (Progressive Web App)** supported
* **Sub Menu** supported
* **Content Encryption** supported (Pages, Partial)
* **Friends** page embedded template
* **Search** supported by [Lunr.js](https://lunrjs.com/) or [algolia](https://www.algolia.com/) or [Fuse.js](https://fusejs.io/)
* **Twemoji** supported
* Automatically **highlighting** code
* **Copy code** to clipboard with one click
* **Images gallery** supported by [lightgallery](https://github.com/sachinchoolur/lightgallery)
* 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/)
* **Diagrams** shortcode supported by [mermaid](https://github.com/knsv/mermaid)
* **Interactive data visualization** shortcode supported by [ECharts](https://echarts.apache.org/)
* **Mapbox** shortcode supported by [Mapbox GL JS](https://docs.mapbox.com/mapbox-gl-js)
* **Music player** shortcode supported by [APlayer](https://github.com/MoePlayer/APlayer) and [MetingJS](https://github.com/metowolf/MetingJS)
* **Bilibili player** shortcode
* Kinds of **admonitions** shortcode
* **Custom style** shortcode
* **Custom script** shortcode
* **Animated typing** supported by [TypeIt](https://typeitjs.com/)
* **Cookie consent banner** supported by [cookieconsent](https://github.com/osano/cookieconsent)
* **Web Watermark** supported by [cell-watermark](https://github.com/Lruihao/watermark)
* **Chinese typesetting** supported by [pangu.js](https://github.com/vinta/pangu.js)
* ...
- **PWA (Progressive Web App)** supported
- **Sub Menu** supported
- **Content Encryption** supported (Pages, Partial)
- **Friends** page embedded template
- **Search** supported by [Lunr.js](https://lunrjs.com/) or [algolia](https://www.algolia.com/) or [Fuse.js](https://fusejs.io/)
- **Twemoji** supported
- Automatically **highlighting** code
- **Copy code** to clipboard with one click
- **Images gallery** supported by [lightgallery](https://github.com/sachinchoolur/lightgallery)
- 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/)
- **Diagrams** shortcode supported by [mermaid](https://github.com/knsv/mermaid)
- **Interactive data visualization** shortcode supported by [ECharts](https://echarts.apache.org/)
- **Mapbox** shortcode supported by [Mapbox GL JS](https://docs.mapbox.com/mapbox-gl-js)
- **Music player** shortcode supported by [APlayer](https://github.com/MoePlayer/APlayer) and [MetingJS](https://github.com/metowolf/MetingJS)
- **Bilibili player** shortcode
- Kinds of **admonitions** shortcode
- **Custom style** shortcode
- **Custom script** shortcode
- **Animated typing** supported by [TypeIt](https://typeitjs.com/)
- **Cookie consent banner** supported by [cookieconsent](https://github.com/osano/cookieconsent)
- **Web Watermark** supported by [cell-watermark](https://github.com/Lruihao/watermark)
- **Chinese typesetting** supported by [pangu.js](https://github.com/vinta/pangu.js)
- Options to **cache remote image** locally
- ...
## Multilingual and i18n
FixIt supports the following languages:
* English
* Simplified Chinese
* Traditional Chinese
* French
* Polish
* Brazilian Portuguese
* Italian
* Spanish
* German
* Serbian
* Russian
* Romanian
* Vietnamese
* [Contribute with a new language](https://github.com/hugo-fixit/FixIt/pulls)
- English
- Simplified Chinese
- Traditional Chinese
- French
- Polish
- Brazilian Portuguese
- Italian
- Spanish
- German
- Serbian
- Russian
- Romanian
- Vietnamese
- [Contribute with a new language](https://github.com/hugo-fixit/FixIt/pulls)
[Languages Compatibility](https://fixit.lruihao.cn/documentation/basics/#language-compatibility)
@@ -182,49 +183,49 @@ Make sure that you follow [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md) while contrib
<details open>
<summary>Thanks to the authors of following resources included in the theme:</summary>
* [normalize.css](https://github.com/necolas/normalize.css)
* [Font Awesome](https://fontawesome.com/)
* [Simple Icons](https://github.com/simple-icons/simple-icons)
* [Animate.css](https://daneden.github.io/animate.css/)
* [autocomplete-js](https://github.com/algolia/autocomplete)
* [Lunr.js](https://lunrjs.com/)
* [algoliasearch](https://github.com/algolia/algoliasearch-client-javascript)
* [Fuse.js](https://fusejs.io/)
* [object-fit-images](https://github.com/fregante/object-fit-images)
* [Twemoji](https://github.com/twitter/twemoji)
* [emoji-data](https://github.com/iamcal/emoji-data)
* [lightgallery](https://github.com/sachinchoolur/lightgallery)
* [Sharer.js](https://github.com/ellisonleao/sharer.js)
* [TypeIt](https://typeitjs.com/)
* [KaTeX](https://katex.org/)
* [mermaid](https://github.com/mermaid-js/mermaid)
* [ECharts](https://echarts.apache.org/)
* [Mapbox GL JS](https://docs.mapbox.com/mapbox-gl-js)
* [APlayer](https://github.com/MoePlayer/APlayer)
* [MetingJS](https://github.com/metowolf/MetingJS)
* [Gitalk](https://github.com/gitalk/gitalk)
* [Valine](https://valine.js.org/)
* [cookieconsent](https://github.com/osano/cookieconsent)
* [cell-watermark](https://github.com/Lruihao/watermark)
* [不蒜子](http://busuanzi.ibruce.info/)
* [pangu.js](https://github.com/vinta/pangu.js)
* [Artalk](https://artalk.js.org/)
* [Waline](https://waline.js.org/)
* [Twikoo](https://twikoo.js.org/)
* [github-corners](https://github.com/tholman/github-corners)
* [giscus](https://giscus.app/)
* [crypto-js](https://github.com/brix/crypto-js)
* [vConsole](https://github.com/Tencent/vConsole)
* [eruda](https://github.com/liriliri/eruda)
* [pace](https://github.com/CodeByZach/pace)
- [normalize.css](https://github.com/necolas/normalize.css)
- [Font Awesome](https://fontawesome.com/)
- [Simple Icons](https://github.com/simple-icons/simple-icons)
- [Animate.css](https://daneden.github.io/animate.css/)
- [autocomplete-js](https://github.com/algolia/autocomplete)
- [Lunr.js](https://lunrjs.com/)
- [algoliasearch](https://github.com/algolia/algoliasearch-client-javascript)
- [Fuse.js](https://fusejs.io/)
- [object-fit-images](https://github.com/fregante/object-fit-images)
- [Twemoji](https://github.com/twitter/twemoji)
- [emoji-data](https://github.com/iamcal/emoji-data)
- [lightgallery](https://github.com/sachinchoolur/lightgallery)
- [Sharer.js](https://github.com/ellisonleao/sharer.js)
- [TypeIt](https://typeitjs.com/)
- [KaTeX](https://katex.org/)
- [mermaid](https://github.com/mermaid-js/mermaid)
- [ECharts](https://echarts.apache.org/)
- [Mapbox GL JS](https://docs.mapbox.com/mapbox-gl-js)
- [APlayer](https://github.com/MoePlayer/APlayer)
- [MetingJS](https://github.com/metowolf/MetingJS)
- [Gitalk](https://github.com/gitalk/gitalk)
- [Valine](https://valine.js.org/)
- [cookieconsent](https://github.com/osano/cookieconsent)
- [cell-watermark](https://github.com/Lruihao/watermark)
- [不蒜子](http://busuanzi.ibruce.info/)
- [pangu.js](https://github.com/vinta/pangu.js)
- [Artalk](https://artalk.js.org/)
- [Waline](https://waline.js.org/)
- [Twikoo](https://twikoo.js.org/)
- [github-corners](https://github.com/tholman/github-corners)
- [giscus](https://giscus.app/)
- [crypto-js](https://github.com/brix/crypto-js)
- [vConsole](https://github.com/Tencent/vConsole)
- [eruda](https://github.com/liriliri/eruda)
- [pace](https://github.com/CodeByZach/pace)
</details>
<details open>
<summary>The FixIt also draws on some features of the following projects, and thanks to their authors as well:</summary>
* [DoIt](https://github.com/HEIGE-PCloud/DoIt)
* [NexT](https://github.com/next-theme/hexo-theme-next)
- [DoIt](https://github.com/HEIGE-PCloud/DoIt)
- [NexT](https://github.com/next-theme/hexo-theme-next)
</details>
@@ -241,8 +242,8 @@ FixIt is licensed under the **MIT** license. Check the [LICENSE file](LICENSE) f
Giving me a Star 🌟 is already the greatest encouragement and support for me.\
If you enjoy the theme, please consider buying me a coffee ☕️.
* [PayPal](https://paypal.me/Lruihao)
* [Alipay](images/alipay.jpg)
* [Wechat](images/wechatpay.jpg)
- [PayPal](https://paypal.me/Lruihao)
- [Alipay](images/alipay.jpg)
- [Wechat](images/wechatpay.jpg)
Thanks! ❤️
+117 -116
View File
@@ -18,8 +18,8 @@ FixIt 主题继承了这些主题的优秀功能,并在此基础上添加了
前往 [快速上手页面](https://fixit.lruihao.cn/zh-cn/documentation/getting-started/) 或从一个模板直接开始:
* [hugo-fixit/hugo-fixit-blog-git](https://github.com/hugo-fixit/hugo-fixit-blog-git)
* [hugo-fixit/hugo-fixit-blog-go](https://github.com/hugo-fixit/hugo-fixit-blog-go)
- [hugo-fixit/hugo-fixit-blog-git](https://github.com/hugo-fixit/hugo-fixit-blog-git)
- [hugo-fixit/hugo-fixit-blog-go](https://github.com/hugo-fixit/hugo-fixit-blog-go)
## [完整文档](https://fixit.lruihao.cn/zh-cn/categories/documentation/)
@@ -58,11 +58,11 @@ git submodule update --remote --merge
FixIt 主题继承了 LoveIt 等主题的优秀功能,并在它们的基础上添加了新的功能与优化,详见 [特性](#特性)。除此之外,FixIt 主题还有以下优点:
* 完善的中英文官方文档
* 社区支持:主题官网、Discussions 和官方 QQ 群
* 持续积极地更新
* 不断收纳各方的建议和想法
* 高度开放主题可自定义部分
- 完善的中英文官方文档
- 社区支持:主题官网、Discussions 和官方 QQ 群
- 持续积极地更新
- 不断收纳各方的建议和想法
- 高度开放主题可自定义部分
总之,如果你更偏好 FixIt 主题的设计语言和自由度,如果你和我一样喜欢个性化自定义主题,那么,FixIt 主题可能是更适合你。
@@ -74,88 +74,89 @@ FixIt 主题继承了 LoveIt 等主题的优秀功能,并在它们的基础上
### 性能和 SEO
* **性能**优化:在 [Google PageSpeed Insights](https://developers.google.com/speed/pagespeed/insights) 中, 99/100 的移动设备得分和 100/100 的桌面设备得分
* 使用基于 JSON-LD 格式 的 **SEO SCHEMA** 文件进行 SEO 优化
* 支持 **[Google Analytics](https://analytics.google.com/analytics)**
* 支持 **[Fathom Analytics](https://usefathom.com/)**
* 支持搜索引擎的**网站验证** (Google, Bing, Yandex, Pinterest, Baidu, 360 and Sogou)
* 支持所有第三方库的 **CDN**
- **性能**优化:在 [Google PageSpeed Insights](https://developers.google.com/speed/pagespeed/insights) 中,99/100 的移动设备得分和 100/100 的桌面设备得分
- 使用基于 JSON-LD 格式 的 **SEO SCHEMA** 文件进行 SEO 优化
- 支持 **[Google Analytics](https://analytics.google.com/analytics)**
- 支持 **[Fathom Analytics](https://usefathom.com/)**
- 支持搜索引擎的**网站验证** (Google, Bing, Yandex, Pinterest, Baidu, 360 and Sogou)
- 支持所有第三方库的 **CDN**
### 外观和布局
* **响应式**布局
* **浅色/深色** 主题模式
* 全局一致的**设计语言**
* 支持**分页**
* 易用和自动展开的**文章目录**
* 支持**多语言**和国际化
* 美观的 **CSS 动画**
- **响应式**布局
- **浅色/深色** 主题模式
- 全局一致的**设计语言**
- 支持**分页**
- 易用和自动展开的**文章目录**
- 支持**多语言**和国际化
- 美观的 **CSS 动画**
### 社交和评论系统
* 支持 **[Gravatar](https://gravatar.com)** 头像
* 支持本地**头像**
* 支持多达 **87** 种社交链接
* 支持多达 **28** 种网站分享
* 支持 **[Disqus](https://disqus.com)** 评论系统
* 支持 **[Gitalk](https://github.com/gitalk/gitalk)** 评论系统
* 支持 **[Valine](https://valine.js.org/)** 评论系统
* 支持 **[Waline](https://waline.js.org/)** 评论系统
* 支持 **[Facebook](https://developers.facebook.com/docs/plugins/comments/) 评论**系统
* 支持 **[Telegram comments](https://comments.app/) 评论**系统
* 支持 **[Commento](https://commento.io/)** 评论系统
* 支持 **[Utterances](https://utteranc.es/)** 评论系统
* 支持 **[Artalk](https://artalk.js.org/)** 评论系统
* 支持 **[Twikoo](https://twikoo.js.org/)** 评论系统
* 支持 **[giscus](https://giscus.app/zh-CN/)** 评论系统
- 支持 **[Gravatar](https://gravatar.com)** 头像
- 支持本地**头像**
- 支持多达 **87** 种社交链接
- 支持多达 **28** 种网站分享
- 支持 **[Disqus](https://disqus.com)** 评论系统
- 支持 **[Gitalk](https://github.com/gitalk/gitalk)** 评论系统
- 支持 **[Valine](https://valine.js.org/)** 评论系统
- 支持 **[Waline](https://waline.js.org/)** 评论系统
- 支持 **[Facebook](https://developers.facebook.com/docs/plugins/comments/) 评论**系统
- 支持 **[Telegram comments](https://comments.app/) 评论**系统
- 支持 **[Commento](https://commento.io/)** 评论系统
- 支持 **[Utterances](https://utteranc.es/)** 评论系统
- 支持 **[Artalk](https://artalk.js.org/)** 评论系统
- 支持 **[Twikoo](https://twikoo.js.org/)** 评论系统
- 支持 **[giscus](https://giscus.app/zh-CN/)** 评论系统
### 扩展功能
* 支持**渐进式网页应用**
* 支持**二级菜单**
* 支持**内容加密**(页面、局部)
* 支持**友情链接**的页面模板
* 支持基于 [Lunr.js](https://lunrjs.com/) 或 [algolia](https://www.algolia.com/) 或 [Fuse.js](https://fusejs.io/) 的**搜索**
* 支持 **Twemoji**
* 支持**代码高亮**
* 一键**复制代码**到剪贴板
* 支持基于 [lightgallery](https://github.com/sachinchoolur/lightgallery) 的**图片画廊**
* 支持 **[Font Awesome](https://fontawesome.com/) 图标**的扩展 Markdown 语法
* 支持**上标注释**的扩展 Markdown 语法
* 支持**分数**的扩展 Markdown 语法
* 支持基于 [KaTeX](https://katex.org/) 的**数学公式**
* 支持基于 [mermaid](https://github.com/knsv/mermaid) 的**图表** shortcode
* 支持基于 [ECharts](https://echarts.apache.org/) 的**交互式数据可视化** shortcode
* 支持基于 [Mapbox GL JS](https://docs.mapbox.com/mapbox-gl-js) 的 **Mapbox** shortcode
* 支持基于 [APlayer](https://github.com/MoePlayer/APlayer) 和 [MetingJS](https://github.com/metowolf/MetingJS) 的**音乐播放器** shortcode
* 支持 **Bilibili 视频** shortcode
* 支持多种**注释**的 shortcode
* 支持**自定义样式**的 shortcode
* 支持**自定义脚本**的 shortcode
* 支持基于 [TypeIt](https://typeitjs.com/) 的**打字动画** shortcode
* 支持基于 [cookieconsent](https://github.com/osano/cookieconsent) 的 **Cookie 许可横幅**
* 支持基于 [cell-watermark](https://github.com/Lruihao/watermark) 的**网页水印**
* 支持基于 [pangu.js](https://github.com/vinta/pangu.js) 的**中文排版**
* ……
- 支持**渐进式网页应用**
- 支持**二级菜单**
- 支持**内容加密**(页面、局部)
- 支持**友情链接**的页面模板
- 支持基于 [Lunr.js](https://lunrjs.com/) 或 [algolia](https://www.algolia.com/) 或 [Fuse.js](https://fusejs.io/) 的**搜索**
- 支持 **Twemoji**
- 支持**代码高亮**
- 一键**复制代码**到剪贴板
- 支持基于 [lightgallery](https://github.com/sachinchoolur/lightgallery) 的**图片画廊**
- 支持 **[Font Awesome](https://fontawesome.com/) 图标**的扩展 Markdown 语法
- 支持**上标注释**的扩展 Markdown 语法
- 支持**分数**的扩展 Markdown 语法
- 支持基于 [KaTeX](https://katex.org/) 的**数学公式**
- 支持基于 [mermaid](https://github.com/knsv/mermaid) 的**图表** shortcode
- 支持基于 [ECharts](https://echarts.apache.org/) 的**交互式数据可视化** shortcode
- 支持基于 [Mapbox GL JS](https://docs.mapbox.com/mapbox-gl-js) 的 **Mapbox** shortcode
- 支持基于 [APlayer](https://github.com/MoePlayer/APlayer) 和 [MetingJS](https://github.com/metowolf/MetingJS) 的**音乐播放器** shortcode
- 支持 **Bilibili 视频** shortcode
- 支持多种**注释**的 shortcode
- 支持**自定义样式**的 shortcode
- 支持**自定义脚本**的 shortcode
- 支持基于 [TypeIt](https://typeitjs.com/) 的**打字动画** shortcode
- 支持基于 [cookieconsent](https://github.com/osano/cookieconsent) 的 **Cookie 许可横幅**
- 支持基于 [cell-watermark](https://github.com/Lruihao/watermark) 的**网页水印**
- 支持基于 [pangu.js](https://github.com/vinta/pangu.js) 的**中文排版**
- 支持本地**缓存远程图床图片**
- ……
## 多语言和国际化
FixIt 支持下列语言:
* 英语
* 简体中文
* 繁体中文
* 法语
* 波兰语
* 巴西葡萄牙语
* 意大利语
* 西班牙语
* 德语
* 塞尔维亚语
* 俄语
* 罗马尼亚语
* 越南语
* [贡献一种新的语言](https://github.com/hugo-fixit/FixIt/pulls)
- 英语
- 简体中文
- 繁体中文
- 法语
- 波兰语
- 巴西葡萄牙语
- 意大利语
- 西班牙语
- 德语
- 塞尔维亚语
- 俄语
- 罗马尼亚语
- 越南语
- [贡献一种新的语言](https://github.com/hugo-fixit/FixIt/pulls)
[语言兼容性](https://fixit.lruihao.cn/zh-cn/theme-documentation-basics/#language-compatibility)
@@ -179,56 +180,56 @@ FixIt 支持下列语言:
## 镜像
* Gitee 镜像仓库:<https://gitee.com/lruihao/FixIt>
- Gitee 镜像仓库:<https://gitee.com/lruihao/FixIt>
## 致谢
<details open>
<summary>FixIt 主题中用到了以下项目,感谢它们的作者:</summary>
* [normalize.css](https://github.com/necolas/normalize.css)
* [Font Awesome](https://fontawesome.com/)
* [Simple Icons](https://github.com/simple-icons/simple-icons)
* [Animate.css](https://daneden.github.io/animate.css/)
* [autocomplete-js](https://github.com/algolia/autocomplete)
* [Lunr.js](https://lunrjs.com/)
* [algoliasearch](https://github.com/algolia/algoliasearch-client-javascript)
* [Fuse.js](https://fusejs.io/)
* [object-fit-images](https://github.com/fregante/object-fit-images)
* [Twemoji](https://github.com/twitter/twemoji)
* [emoji-data](https://github.com/iamcal/emoji-data)
* [lightgallery](https://github.com/sachinchoolur/lightgallery)
* [Sharer.js](https://github.com/ellisonleao/sharer.js)
* [TypeIt](https://typeitjs.com/)
* [KaTeX](https://katex.org/)
* [mermaid](https://github.com/mermaid-js/mermaid)
* [ECharts](https://echarts.apache.org/)
* [Mapbox GL JS](https://docs.mapbox.com/mapbox-gl-js)
* [APlayer](https://github.com/MoePlayer/APlayer)
* [MetingJS](https://github.com/metowolf/MetingJS)
* [Gitalk](https://github.com/gitalk/gitalk)
* [Valine](https://valine.js.org/)
* [cookieconsent](https://github.com/osano/cookieconsent)
* [cell-watermark](https://github.com/Lruihao/watermark)
* [不蒜子](http://busuanzi.ibruce.info/)
* [pangu.js](https://github.com/vinta/pangu.js)
* [Artalk](https://artalk.js.org/)
* [Waline](https://waline.js.org/)
* [Twikoo](https://twikoo.js.org/)
* [github-corners](https://github.com/tholman/github-corners)
* [giscus](https://giscus.app/zh-CN)
* [crypto-js](https://github.com/brix/crypto-js)
* [vConsole](https://github.com/Tencent/vConsole)
* [eruda](https://github.com/liriliri/eruda)
* [pace](https://github.com/CodeByZach/pace)
- [normalize.css](https://github.com/necolas/normalize.css)
- [Font Awesome](https://fontawesome.com/)
- [Simple Icons](https://github.com/simple-icons/simple-icons)
- [Animate.css](https://daneden.github.io/animate.css/)
- [autocomplete-js](https://github.com/algolia/autocomplete)
- [Lunr.js](https://lunrjs.com/)
- [algoliasearch](https://github.com/algolia/algoliasearch-client-javascript)
- [Fuse.js](https://fusejs.io/)
- [object-fit-images](https://github.com/fregante/object-fit-images)
- [Twemoji](https://github.com/twitter/twemoji)
- [emoji-data](https://github.com/iamcal/emoji-data)
- [lightgallery](https://github.com/sachinchoolur/lightgallery)
- [Sharer.js](https://github.com/ellisonleao/sharer.js)
- [TypeIt](https://typeitjs.com/)
- [KaTeX](https://katex.org/)
- [mermaid](https://github.com/mermaid-js/mermaid)
- [ECharts](https://echarts.apache.org/)
- [Mapbox GL JS](https://docs.mapbox.com/mapbox-gl-js)
- [APlayer](https://github.com/MoePlayer/APlayer)
- [MetingJS](https://github.com/metowolf/MetingJS)
- [Gitalk](https://github.com/gitalk/gitalk)
- [Valine](https://valine.js.org/)
- [cookieconsent](https://github.com/osano/cookieconsent)
- [cell-watermark](https://github.com/Lruihao/watermark)
- [不蒜子](http://busuanzi.ibruce.info/)
- [pangu.js](https://github.com/vinta/pangu.js)
- [Artalk](https://artalk.js.org/)
- [Waline](https://waline.js.org/)
- [Twikoo](https://twikoo.js.org/)
- [github-corners](https://github.com/tholman/github-corners)
- [giscus](https://giscus.app/zh-CN)
- [crypto-js](https://github.com/brix/crypto-js)
- [vConsole](https://github.com/Tencent/vConsole)
- [eruda](https://github.com/liriliri/eruda)
- [pace](https://github.com/CodeByZach/pace)
</details>
<details open>
<summary>FixIt 主题还借鉴了以下项目的部分功能,同样感谢它们的作者:</summary>
* [DoIt](https://github.com/HEIGE-PCloud/DoIt)
* [NexT](https://github.com/next-theme/hexo-theme-next)
- [DoIt](https://github.com/HEIGE-PCloud/DoIt)
- [NexT](https://github.com/next-theme/hexo-theme-next)
</details>
@@ -245,8 +246,8 @@ FixIt 根据 **MIT** 许可协议授权。 更多信息请查看 [LICENSE 文件
给我一个 Star 🌟 已经是对我最大的鼓励和支持了。\
如果你喜爱这个主题,请考虑给我买杯咖啡 ☕️。
* [PayPal](https://paypal.me/Lruihao)
* [支付宝](images/alipay.jpg)
* [微信支付](images/wechatpay.jpg)
- [PayPal](https://paypal.me/Lruihao)
- [支付宝](images/alipay.jpg)
- [微信支付](images/wechatpay.jpg)
谢谢!❤️
+2 -2
View File
@@ -66,7 +66,7 @@
}
// adjust the scroll margin top of the content anchors on the page
body:not([data-header-desktop='auto']) &+.container .content [id] {
scroll-margin-top: calc(var(--#{$prefix}scroll-mt) + var(--#{$prefix}breadcrumb-offset));
scroll-margin-top: calc(var(--#{$prefix}scroll-mt) + var(--#{$prefix}breadcrumb-height));
}
}
@@ -95,7 +95,7 @@
}
// adjust the scroll margin top of the content anchors on the page
body:not([data-header-mobile='auto']) &+.container .content [id] {
scroll-margin-top: calc(var(--#{$prefix}scroll-mt) + var(--#{$prefix}breadcrumb-offset));
scroll-margin-top: calc(var(--#{$prefix}scroll-mt) + var(--#{$prefix}breadcrumb-height));
}
}
-1
View File
@@ -11,5 +11,4 @@
// Scroll margin top and Stack sticky top related
--#{$prefix}scroll-mt: calc(#{$header-height} + #{$global-scroll-margin-top});
--#{$prefix}breadcrumb-offset: 2.5rem;
}
+25 -8
View File
@@ -8,7 +8,7 @@
font-size: 1.6rem;
font-weight: bold;
line-height: 140%;
.icon-repost {
color: var(--#{$prefix}success);
display: inline-block;
@@ -49,7 +49,7 @@
.author {
font-size: 1.05rem;
img.avatar {
width: 1.3rem;
height: 1.3rem;
@@ -260,7 +260,7 @@
background-color: lighten($table-background-color-dark, 2.75%);
}
}
& tr:hover {
background: darken($table-background-color, 4.5%);
@@ -286,10 +286,31 @@
max-width: 100%;
min-height: 1em;
&:not([data-h]) {
&: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));
}
}
}
&.version {
height: 1.25em;
vertical-align: text-bottom;
@@ -317,10 +338,6 @@
display: block;
margin: 0 auto;
overflow: hidden;
&:not([width]) {
width: 100%;
}
}
}
+1 -1
View File
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+6
View File
@@ -810,6 +810,12 @@
# "corner-indicator", "fill-left", "flash", "flat-top", "loading-bar", "mac-osx", "material", "minimal"]
theme = "minimal"
# FixIt 0.2.18-lts.3 | NEW [Experimental] cache remote images locally, see: https://github.com/hugo-fixit/FixIt/pull/362
[params.cacheRemoteImages]
enable = false
# replace remote image url with local image url
replace = false
# FixIt 0.2.17 | NEW Define custom file paths
# Create your custom files in site directory `layouts/partials/custom` and uncomment needed files below
[params.customFilePath]
+1 -1
Submodule docs updated: f7fd3298ed...0f108cd090
+4 -4
View File
@@ -1,11 +1,11 @@
{{- if .Title -}}
{{- if .Title | and .Text -}}
<figure>
{{- dict "Src" .Destination "Alt" .Text "Caption" .Text "Title" .Title "Linked" true "Resources" .Page.Resources | partial "plugin/image.html" -}}
{{- dict "Src" .Destination "Alt" .Text "Caption" .Text "Title" .Title "Linked" true "Resources" .Page.Resources "Params" .Page.Params "Responsive" true | partial "plugin/image.html" -}}
<figcaption class="image-caption">
{{- .Text | safeHTML -}}
</figcaption>
</figure>
{{- else -}}
{{- $linked := (eq .Page.Site.Params.page.lightgallery "force") | or (eq .Page.Params.lightgallery "force") -}}
{{- dict "Src" .Destination "Alt" .Text "Linked" $linked "Resources" .Page.Resources | partial "plugin/image.html" -}}
{{- $linked := (eq .Page.Site.Params.page.lightgallery "force") | or (eq .Page.Params.lightgallery "force") | or (ne .Title "") -}}
{{- dict "Src" .Destination "Alt" .Text "Title" .Title "Linked" $linked "Resources" .Page.Resources "Params" .Page.Params "Responsive" true | partial "plugin/image.html" -}}
{{- end -}}
+1 -1
View File
@@ -16,7 +16,7 @@
{{ range $index, $friend := .Site.Data.friends }}
<a class="friend-link" title="{{ $friend.description }}" href="{{ $friend.url | safeURL }}" rel="external noopener noreferrer" target="_blank">
{{ if $friend.avatar }}
{{- dict "Src" $friend.avatar "Alt" $friend.nickname "Class" "friend-avatar" "Resources" $.Resources | partial "plugin/image.html" -}}
{{- dict "Src" $friend.avatar "Alt" $friend.nickname "Class" "friend-avatar" "Resources" $.Resources "Params" $.Params | partial "plugin/image.html" -}}
{{ else }}
<svg class="friend-avatar" aria-hidden="true">
<use xlink:href="#icon-{{ add 1 $index }}"></use>
+1
View File
@@ -37,6 +37,7 @@
{{ printf "<atom:link href=%q rel=\"self\" type=%q />" .Permalink .MediaType | safeHTML }}
{{ end }}
{{- range where .Site.RegularPages "Type" "posts" | first (.Site.Params.home.rss | default 10) -}}
{{- if .Params.password }}{{ continue }}{{ end -}}
{{- dict "Page" . "Site" .Site | partial "rss/item.html" -}}
{{- end -}}
</channel>
@@ -0,0 +1,17 @@
{{- /* cache remote image locally */ -}}
{{- $resource := 0 -}}
{{- $suffixList := slice ".jpeg" ".jpg" ".png" ".gif" ".bmp" ".tif" ".tiff" ".webp" ".avif" ".svg" -}}
{{- $suffixValid := (dict "Path" . "Suffixes" $suffixList | partial "function/suffix-validation.html") -}}
{{- if $suffixValid -}}
{{- with $remoteResource := resources.GetRemote . -}}
{{- with .Err -}}
{{- warnf "%s" . -}}
{{ else }}
{{- if eq $remoteResource.ResourceType "image" -}}
{{- $resource = $remoteResource -}}
{{- end -}}
{{- end -}}
{{- end -}}
{{- end -}}
{{- return $resource -}}
+5
View File
@@ -11,6 +11,11 @@
{{- $resource = . -}}
{{- end -}}
{{- end -}}
{{- else -}}
{{- $cacheRemoteImages := .CacheRemoteImages | default false -}}
{{- if $cacheRemoteImages -}}
{{- $resource = partial "function/get-remote-image.html" .Path -}}
{{- end -}}
{{- end -}}
{{- return $resource -}}
@@ -0,0 +1,9 @@
{{- $url := urls.Parse .Path -}}
{{- $path := path.Clean ((printf "%v%v" $url.Host $url.Path) | lower) -}}
{{- with $url.Scheme -}}
{{- $path = printf "%v://%v" . $path -}}
{{- end -}}
{{- $suffix := path.Ext $path -}}
{{- $suffixes := .Suffixes | default slice -}}
{{- $suffixValid := in $suffixes $suffix -}}
{{- return $suffixValid -}}
+1 -1
View File
@@ -1,4 +1,4 @@
{{- .Scratch.Set "version" "v0.2.18-lts.2" -}}
{{- .Scratch.Set "version" "v0.2.18-lts.4" -}}
{{- .Scratch.Set "params" (.Params | merge .Site.Params.page) -}}
{{- .Scratch.Set "this" dict -}}
+83 -34
View File
@@ -1,52 +1,101 @@
{{- /* lightgallery */ -}}
{{- $class := .Class | default "" -}}
{{- $style := "" -}}
{{- $loading := .Loading | default "lazy" -}}
{{- $onload := "" -}}
{{- $onerror := "" -}}
{{- $cacheRemoteImages := (.Params.cacheRemoteImages | default dict) | merge site.Params.cacheRemoteImages -}}
{{- $suffixList := slice ".jpeg" ".jpg" ".png" ".gif" ".bmp" ".tif" ".tiff" ".webp" -}}
{{- /* handle for default size image */ -}}
{{- $src := .Src -}}
{{- $width := .Width -}}
{{- $height := .Height -}}
{{- with dict "Path" $src "Resources" .Resources | partial "function/resource.html" -}}
{{- $src = .RelPermalink -}}
{{- /* Resources can not get width and height of image for svg type */ -}}
{{- if (not $.Width) | and (not $.Height) | and (ne .MediaType.SubType "svg") -}}
{{- $width = .Width -}}
{{- $height = .Height -}}
{{- $suffixValid := dict "Path" $src "Suffixes" $suffixList | partial "function/suffix-validation.html" -}}
{{- with dict "Path" $src "Resources" .Resources "CacheRemoteImages" $cacheRemoteImages.enable | partial "function/resource.html" -}}
{{- $url := urls.Parse $src -}}
{{- if not $url.Host | or $cacheRemoteImages.replace -}}
{{- $src = .RelPermalink -}}
{{- end -}}
{{- /* only available for image resources that are raster images */ -}}
{{- if (eq .ResourceType "image") | and $suffixValid | and $.Responsive -}}
{{- $style = printf "--width: %vpx;--aspect-ratio: %v / %v;" .Width .Width .Height | safeHTMLAttr -}}
{{- end -}}
{{- end -}}
{{- $small := .SrcSmall | default $src -}}
{{- with dict "Path" .SrcSmall "Resources" .Resources | partial "function/resource.html" -}}
{{- $small = .RelPermalink -}}
{{- end -}}
{{- $large := .SrcLarge | default $src -}}
{{- with dict "Path" .SrcLarge "Resources" .Resources | partial "function/resource.html" -}}
{{- $large = .RelPermalink -}}
{{- $srcSmall := .SrcSmall | default $src -}}
{{- $srcMedium := $src -}}
{{- $srcLarge := .SrcLarge | default $src -}}
{{- if .Responsive }}
{{- /* handle for small size image */ -}}
{{- $suffixValidSmall := dict "Path" $srcSmall "Suffixes" $suffixList | partial "function/suffix-validation.html" -}}
{{- with dict "Path" .SrcSmall "Resources" .Resources "CacheRemoteImages" $cacheRemoteImages.enable | partial "function/resource.html" -}}
{{- $url := urls.Parse $.SrcSmall -}}
{{- if not $url.Host | or $cacheRemoteImages.replace -}}
{{- $srcSmall = .RelPermalink -}}
{{- end -}}
{{- if (eq .ResourceType "image") | and $suffixValidSmall -}}
{{- $style = printf "%v--width-small: %vpx;--aspect-ratio-small: %v / %v;" $style .Width .Width .Height | safeHTMLAttr -}}
{{- end -}}
{{- end -}}
{{- /* handle for large size image */ -}}
{{- $suffixValidLarge := dict "Path" $srcLarge "Suffixes" $suffixList | partial "function/suffix-validation.html" -}}
{{- with dict "Path" .SrcLarge "Resources" .Resources "CacheRemoteImages" $cacheRemoteImages.enable | partial "function/resource.html" -}}
{{- $url := urls.Parse $.SrcLarge -}}
{{- if not $url.Host | or $cacheRemoteImages.replace -}}
{{- $srcLarge = .RelPermalink -}}
{{- end -}}
{{- if (eq .ResourceType "image") | and $suffixValidLarge -}}
{{- $style = printf "%v--width-large: %vpx;--aspect-ratio-large: %v / %v;" $style .Width .Width .Height | safeHTMLAttr -}}
{{- end -}}
{{- end -}}
{{- /* handle for invalid suffix */ -}}
{{- if not $suffixValid | and $src -}}
{{- $class = printf "%v suffix-invalid" $class -}}
{{- end -}}
{{- if not $suffixValidSmall | and $srcSmall -}}
{{- $class = printf "%v suffix-invalid__small" $class -}}
{{- end -}}
{{- if not $suffixValidLarge | and $srcLarge -}}
{{- $class = printf "%v suffix-invalid__large" $class -}}
{{- end -}}
{{- /* set image srcset */ -}}
{{- if (eq $src $srcSmall) | and (eq $src $srcLarge) -}}
{{- $srcSmall = printf (cond (strings.Contains $srcSmall "?") "%v&size=small" "%v?size=small") $srcSmall -}}
{{- $srcMedium = printf (cond (strings.Contains $srcMedium "?") "%v&size=medium" "%v?size=medium") $srcMedium -}}
{{- $srcLarge = printf (cond (strings.Contains $srcLarge "?") "%v&size=large" "%v?size=large") $srcLarge -}}
{{- end -}}
{{- end -}}
{{- /* set image alt and caption */ -}}
{{- $alt := .Alt | default $src -}}
{{- $caption := .Caption | default $alt -}}
{{- $loading := .Loading | default "lazy" -}}
{{- $commonScript := "this.title=this.dataset.title;this.alt=this.dataset.alt;for(const a of ['style','data-title','data-alt','onerror','onload']){this.removeAttribute(a);}" -}}
{{- $onload := printf " onload=\"%vthis.dataset.lazyloaded='';\"" $commonScript | safeHTMLAttr -}}
{{- $onerror := printf " onerror=\"%v\"" $commonScript | safeHTMLAttr -}}
{{- $style := printf " style=\"background: url(%v) no-repeat center;\"" (resources.Get "svg/loading.svg" | minify).RelPermalink | safeHTMLAttr -}}
{{- if eq $loading "eager" -}}
{{- $onload = "" -}}
{{- $onerror = "" -}}
{{- $style = "" -}}
{{- /* set image lazy loading */ -}}
{{- /* for details, see https://lruihao.cn/posts/native-img-loading-lazy/ */ -}}
{{- if eq $loading "lazy" -}}
{{- /* TODO move to theme.js */ -}}
{{- $commonScript := "this.title=this.dataset.title;this.alt=this.dataset.alt;for(const i of ['style', 'data-title','data-alt','onerror','onload']){this.removeAttribute(i);}" -}}
{{- $onload = printf " onload=\"%vthis.dataset.lazyloaded='';\"" $commonScript | safeHTMLAttr -}}
{{- $onerror = printf " onerror=\"%v\"" $commonScript | safeHTMLAttr -}}
{{- $style = printf " style=\"%vbackground: url(%v) no-repeat center;\"" $style (resources.Get "svg/loading.svg" | minify).RelPermalink | safeHTMLAttr -}}
{{- end -}}
{{- /* structure of lightgallery or img */ -}}
{{- if .Linked -}}
<a class="lightgallery" href="{{ $large | safeURL }}" data-thumbnail="{{ $small | safeURL }}"{{ with $caption }} data-sub-html="<h2>{{ . }}</h2>{{ with $.Title }}<p>{{ . }}</p>{{ end }}"{{ end }}{{ with .Rel }} rel="{{ . }}"{{ end }}>
<a class="lightgallery" href="{{ $srcLarge | safeURL }}" data-thumbnail="{{ $srcSmall | safeURL }}"{{ with $caption }} data-sub-html="<h2>{{ . }}</h2>{{ with $.Title }}<p>{{ . }}</p>{{ end }}"{{ end }}{{ with .Rel }} rel="{{ . }}"{{ end }}>
{{- end -}}
<img loading="{{ $loading }}" src="{{ .Src | safeURL }}" srcset="{{ $small | safeURL }}, {{ .Src | safeURL }} 1.5x, {{ $large | safeURL }} 2x" sizes="auto"
{{- if eq $loading "eager" }} title="{{ .Title | default $alt }}" alt="{{ $alt }}"
{{- else }} data-title="{{ .Title | default $alt }}" data-alt="{{ $alt }}"{{- end -}}
{{- with $width }} width="{{ . }}"{{- end -}}
{{- with $height }} height="{{ . }}"{{- end -}}
{{- with .Class }} class="{{ . }}"{{- end -}}
<img loading="{{ $loading }}" src="{{ $src | safeURL }}"
{{- if .Responsive }} srcset="{{ $srcSmall | safeURL }}, {{ $srcMedium | safeURL }} 1.5x, {{ $srcLarge | safeURL }} 2x" sizes="auto"{{- end -}}
{{- if eq $loading "lazy" }} data-title="{{ .Title | default $alt }}" data-alt="{{ $alt }}"
{{- else }} title="{{ .Title | default $alt }}" alt="{{ $alt }}"{{- end -}}
{{- with .Width }} width="{{ . }}"{{- end -}}
{{- with .Height }} height="{{ . }}"{{- end -}}
{{- with $class }} class="{{ trim . " " }}"{{- end -}}
{{- with $style -}}{{ . }}{{- end -}}
{{- with $onload -}}{{ . }}{{- end -}}
{{- with $onerror -}}{{ . }}{{- end -}}
{{- with .Height }} data-h{{- end -}}
/>
{{- if .Linked -}}
</a>
+11 -3
View File
@@ -7,6 +7,13 @@
{{- $authorName = . -}}
{{- end -}}
{{- end -}}
{{- $image := $params.featuredimagepreview | default $params.featuredimage -}}
{{- with .Page.Resources.GetMatch "featured-image" -}}
{{- $image = .Permalink -}}
{{- end -}}
{{- with .Page.Resources.GetMatch "featured-image-preview" -}}
{{- $image = .Permalink -}}
{{- end -}}
<item>
<title>
@@ -24,9 +31,9 @@
</guid>
<description>
{{- "<![CDATA[" | safeHTML -}}
{{- with $params.featuredimage -}}
{{- with $image -}}
<div class="featured-image">
<img src="{{ . | relURL }}" referrerpolicy="no-referrer">
<img src="{{ . }}" referrerpolicy="no-referrer">
</div>
{{- end -}}
{{- $content := .Page.Description -}}
@@ -37,7 +44,8 @@
{{- $content = dict "Content" . "Ruby" $params.ruby "Fraction" $params.fraction "Fontawesome" $params.fontawesome | partial "function/content.html" -}}
{{- end -}}
{{- end -}}
{{- $content | replaceRE `<figure[^>]*>.*</figure>` "" | replaceRE `<img[^>]*( /)?>` "" | safeHTML -}}
{{/* {{- $content | replaceRE `<figure[^>]*>.*</figure>` "" | replaceRE `<img[^>]*( /)?>` "" | safeHTML -}} */}}
{{- $content | safeHTML -}}
{{- "]]>" | safeHTML -}}
</description>
</item>
+10 -5
View File
@@ -1,8 +1,13 @@
{{- /* reference https://player.bilibili.com/ */ -}}
{{- $bvid := cond .IsNamedParams (.Get "id") (.Get 0) -}}
{{- $p := cond .IsNamedParams (.Get "p") (.Get 1) | default 1 -}}
{{- $autoplay := .Get "autoplay" | default false -}}
{{- $poster := .Get "poster" | default true -}}
{{- $muted := .Get "muted" | default true -}}
{{- $danmaku := .Get "danmaku" | default true -}}
{{- $t := .Get "t" | default 0 -}}
<div class="bilibili">
{{- if .IsNamedParams -}}
<iframe src="//player.bilibili.com/player.html?bvid={{ .Get `id` }}&page={{ .Get `p` | default 1 }}" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"></iframe>
{{- else -}}
<iframe src="//player.bilibili.com/player.html?bvid={{ .Get 0 }}&page={{ .Get 1 | default 1 }}" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"></iframe>
{{- end -}}
<iframe src="//player.bilibili.com/player.html?bvid={{ $bvid }}&page={{ $p }}&autoplay={{ $autoplay }}&poster={{ $poster }}&muted={{ $muted }}&danmaku={{ $danmaku }}&t={{ $t }}" border="0" framespacing="0" allowfullscreen="true"></iframe>
</div>
{{- /* EOF */ -}}
+1 -1
View File
@@ -16,7 +16,7 @@
{{- $options = cond $caption true false | dict "Linked" | merge $options -}}
{{- end -}}
{{- $options = dict "Resources" .Page.Resources | merge $options -}}
{{- $options = dict "Resources" .Page.Resources "Params" .Page.Params "Responsive" true | merge $options -}}
{{- with $caption -}}
<figure{{ with cond $.IsNamedParams ($.Get "class") "" }} class="{{ . }}"{{ end }}>
+18 -15
View File
@@ -1,12 +1,12 @@
{
"name": "fixit-src",
"version": "0.2.18-lts.2",
"version": "0.2.18-lts.4",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "fixit-src",
"version": "0.2.18-lts.2",
"version": "0.2.18-lts.4",
"license": "MIT",
"devDependencies": {
"@babel/cli": "7.23.0",
@@ -15,7 +15,7 @@
"atomic-algolia": "0.3.19",
"babelify": "10.0.0",
"browserify": "17.0.0",
"core-js": "3.33.1",
"core-js": "3.33.2",
"segmentit": "2.0.3"
}
},
@@ -2286,20 +2286,23 @@
}
},
"node_modules/browserify-sign": {
"version": "4.2.1",
"resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz",
"integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==",
"version": "4.2.2",
"resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.2.tgz",
"integrity": "sha512-1rudGyeYY42Dk6texmv7c4VcQ0EsvVbLwZkA+AQB7SxvXxmcD93jcHie8bzecJ+ChDlmAm2Qyu0+Ccg5uhZXCg==",
"dev": true,
"dependencies": {
"bn.js": "^5.1.1",
"browserify-rsa": "^4.0.1",
"bn.js": "^5.2.1",
"browserify-rsa": "^4.1.0",
"create-hash": "^1.2.0",
"create-hmac": "^1.1.7",
"elliptic": "^6.5.3",
"elliptic": "^6.5.4",
"inherits": "^2.0.4",
"parse-asn1": "^5.1.5",
"readable-stream": "^3.6.0",
"safe-buffer": "^5.2.0"
"parse-asn1": "^5.1.6",
"readable-stream": "^3.6.2",
"safe-buffer": "^5.2.1"
},
"engines": {
"node": ">= 4"
}
},
"node_modules/browserify-sign/node_modules/readable-stream": {
@@ -2586,9 +2589,9 @@
"dev": true
},
"node_modules/core-js": {
"version": "3.33.1",
"resolved": "https://registry.npmjs.org/core-js/-/core-js-3.33.1.tgz",
"integrity": "sha512-qVSq3s+d4+GsqN0teRCJtM6tdEEXyWxjzbhVrCHmBS5ZTM0FS2MOS0D13dUXAWDUN6a+lHI/N1hF9Ytz6iLl9Q==",
"version": "3.33.2",
"resolved": "https://registry.npmjs.org/core-js/-/core-js-3.33.2.tgz",
"integrity": "sha512-XeBzWI6QL3nJQiHmdzbAOiMYqjrb7hwU7A39Qhvd/POSa/t9E1AeZyEZx3fNvp/vtM8zXwhoL0FsiS0hD0pruQ==",
"dev": true,
"hasInstallScript": true,
"funding": {
+2 -2
View File
@@ -1,6 +1,6 @@
{
"name": "fixit-src",
"version": "0.2.18-lts.2",
"version": "0.2.18-lts.4",
"description": "FixIt theme source files",
"private": true,
"devDependencies": {
@@ -10,7 +10,7 @@
"atomic-algolia": "0.3.19",
"babelify": "10.0.0",
"browserify": "17.0.0",
"core-js": "3.33.1",
"core-js": "3.33.2",
"segmentit": "2.0.3"
},
"scripts": {
+10 -2
View File
@@ -476,6 +476,14 @@ class FixIt {
}
}
initBreadcrumb() {
const $breadcrumbContainer = document.querySelector('.breadcrumb-container.sticky')
this.breadcrumbHeight = $breadcrumbContainer?.clientHeight ?? 0;
if (this.breadcrumbHeight) {
document.querySelector('#content')?.style.setProperty('--fi-breadcrumb-height', `${this.breadcrumbHeight}px`);
}
}
initDetails() {
this.util.forEach(document.getElementsByClassName('details'), ($details) => {
const $summary = $details.querySelector('.details-summary');
@@ -645,7 +653,6 @@ class FixIt {
const $tocLinkElements = $tocCore.querySelectorAll('a:first-child');
const $tocLiElements = $tocCore.getElementsByTagName('li');
const $headerLinkElements = document.getElementsByClassName('header-link');
const headerIsFixed = document.body.dataset.headerDesktop !== 'normal';
const headerHeight = document.getElementById('header-desktop').offsetHeight;
document.querySelector('.container').addEventListener('resize', () => {
$toc.style.marginBottom = `${document.querySelector('.container').clientHeight - document.querySelector('.post-footer').offsetTop}px`;
@@ -658,7 +665,7 @@ class FixIt {
this.util.forEach($tocLiElements, ($tocLi) => {
$tocLi.classList.remove('has-active');
});
const INDEX_SPACING = 20 + (headerIsFixed ? headerHeight : 0);
const INDEX_SPACING = 20 + (document.body.dataset.headerDesktop !== 'normal' ? headerHeight : 0) + this.breadcrumbHeight;
let activeTocIndex = $headerLinkElements.length - 1;
for (let i = 0; i < $headerLinkElements.length - 1; i++) {
const thisTop = $headerLinkElements[i].getBoundingClientRect().top;
@@ -1314,6 +1321,7 @@ class FixIt {
this.initMenu();
this.initSwitchTheme();
this.initSearch();
this.initBreadcrumb();
this.initCookieconsent();
this.initSiteTime();
this.initServiceWorker();