[opt] head & inject

This commit is contained in:
xaoxuu 2024-01-04 13:39:50 +08:00
parent 29d031f95b
commit 5d7f131c0e
9 changed files with 71 additions and 28 deletions

View File

@ -8,6 +8,10 @@ stellar:
######## head tags ######## ######## head tags ########
preconnect:
# - https://gcore.jsdelivr.net
# - https://unpkg.com
open_graph: open_graph:
enable: true enable: true
twitter_id: # for open_graph meta twitter_id: # for open_graph meta
@ -353,7 +357,7 @@ plugins:
# 需在Markdown文件开头加入mathjax: true # 需在Markdown文件开头加入mathjax: true
# 推荐使用Pandoc: npm uninstall hexo-renderer-marked --save & npm install hexo-renderer-pandoc --save # 推荐使用Pandoc: npm uninstall hexo-renderer-marked --save & npm install hexo-renderer-pandoc --save
mathjax: mathjax:
enable: true # set <mathjax: true> to enable in page's front-matter
js: https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.6/MathJax.js?config=TeX-AMS-MML_HTMLorMML js: https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.6/MathJax.js?config=TeX-AMS-MML_HTMLorMML
# Katex - The fastest math typesetting library for the web # Katex - The fastest math typesetting library for the web
@ -361,7 +365,7 @@ plugins:
# https://github.com/KaTeX/KaTeX # https://github.com/KaTeX/KaTeX
# 使用 hexo-renderer-markdown-it-plus 作为公式渲染器npm uninstall hexo-renderer-marked --save npm install hexo-renderer-markdown-it-plus --save # 使用 hexo-renderer-markdown-it-plus 作为公式渲染器npm uninstall hexo-renderer-marked --save npm install hexo-renderer-markdown-it-plus --save
katex: katex:
enable: false # set <katex: true> to enable in page's front-matter
min_css: <link rel="stylesheet" href="https://gcore.jsdelivr.net/npm/katex@0.16.4/dist/katex.min.css" integrity="sha384-vKruj+a13U8yHIkAyGgK1J3ArTLzrFGBbBc0tDp4ad/EyewESeXE/Iv67Aj8gKZ0" crossorigin="anonymous"> min_css: <link rel="stylesheet" href="https://gcore.jsdelivr.net/npm/katex@0.16.4/dist/katex.min.css" integrity="sha384-vKruj+a13U8yHIkAyGgK1J3ArTLzrFGBbBc0tDp4ad/EyewESeXE/Iv67Aj8gKZ0" crossorigin="anonymous">
min_js: <script defer src="https://gcore.jsdelivr.net/npm/katex@0.16.4/dist/katex.min.js" integrity="sha384-PwRUT/YqbnEjkZO0zZxNqcxACrXe+j766U2amXcgMg5457rve2Y7I6ZJSm2A0mS4" crossorigin="anonymous"></script> min_js: <script defer src="https://gcore.jsdelivr.net/npm/katex@0.16.4/dist/katex.min.js" integrity="sha384-PwRUT/YqbnEjkZO0zZxNqcxACrXe+j766U2amXcgMg5457rve2Y7I6ZJSm2A0mS4" crossorigin="anonymous"></script>
auto_render_min_js: <script defer src="https://gcore.jsdelivr.net/npm/katex@0.16.4/dist/contrib/auto-render.min.js" integrity="sha384-+VBxd3r6XgURycqtZ117nYw44OOcIax56Z4dCRWbxyPt0Koah1uHoK0o4+/RRE05" crossorigin="anonymous"onload="renderMathInElement(document.body);"></script> auto_render_min_js: <script defer src="https://gcore.jsdelivr.net/npm/katex@0.16.4/dist/contrib/auto-render.min.js" integrity="sha384-+VBxd3r6XgURycqtZ117nYw44OOcIax56Z4dCRWbxyPt0Koah1uHoK0o4+/RRE05" crossorigin="anonymous"onload="renderMathInElement(document.body);"></script>
@ -376,7 +380,8 @@ plugins:
# B -->|option 2| C(Section C) # B -->|option 2| C(Section C)
# ``` # ```
mermaid: mermaid:
enable: true # set <mermaid: true> to enable in page's front-matter
style_optimization: false # use custom style in stellar
# js: https://unpkg.com/mermaid@9.0.0/dist/mermaid.min.js # js: https://unpkg.com/mermaid@9.0.0/dist/mermaid.min.js
js: https://cdn.jsdelivr.net/npm/mermaid@v9/dist/mermaid.min.js js: https://cdn.jsdelivr.net/npm/mermaid@v9/dist/mermaid.min.js
# Available themes: default | dark | forest | neutral # Available themes: default | dark | forest | neutral

View File

@ -67,18 +67,38 @@ function og_args() {
} }
return Object.assign(args, page.open_graph); return Object.assign(args, page.open_graph);
} }
function preconnect() {
var el = '';
for (let href of (theme.preconnect || [])) {
el += `<link rel="preconnect" href="${href}" crossorigin>`;
}
return el;
}
function custom_inject() {
var el = '';
for (let item of (config.inject?.head || [])) {
el += item;
}
for (let item of (theme.inject?.head || [])) {
el += item;
}
for (let item of (page.inject?.head || [])) {
el += item;
}
return el;
}
%> %>
<head> <head>
<%- meta_generator() %>
<meta name="hexo-theme" content="<%- stellar_info('tree') %>" version="<%- stellar_info('version') %>">
<meta charset="utf-8"> <meta charset="utf-8">
<meta name="hexo-theme" content="<%- stellar_info('tree') %>" version="<%- stellar_info('version') %>">
<%- generate_robots() %> <%- generate_robots() %>
<%- meta_generator() %>
<meta http-equiv='x-dns-prefetch-control' content='on' /> <meta http-equiv='x-dns-prefetch-control' content='on' />
<link rel='dns-prefetch' href='https://gcore.jsdelivr.net'> <%- preconnect() %>
<link rel="preconnect" href="https://gcore.jsdelivr.net" crossorigin>
<link rel='dns-prefetch' href='//unpkg.com'>
<meta name="renderer" content="webkit"> <meta name="renderer" content="webkit">
<meta name="force-rendering" content="webkit"> <meta name="force-rendering" content="webkit">
<meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1"> <meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1">
@ -115,16 +135,6 @@ function og_args() {
<%- css(theme.style.codeblock.highlightjs_theme) %> <%- css(theme.style.codeblock.highlightjs_theme) %>
<% } %> <% } %>
<% if (theme.plugins.katex && theme.plugins.katex.enable) { %> <%- partial('plugins/parser/head') %>
<%- theme.plugins.katex.min_css %> <%- custom_inject() %>
<%- theme.plugins.katex.min_js %>
<%- theme.plugins.katex.auto_render_min_js %>
<% } %>
<% if (config.inject && config.inject.head){ %>
<% (config.inject.head||[]).forEach(function(item){ %>
<%- item %>
<% }) %>
<% } %>
</head> </head>

View File

@ -0,0 +1,3 @@
<% if (page.katex == true) { %>
<%- partial('katex/head') %>
<% } %>

View File

@ -0,0 +1,3 @@
<% if (theme.plugins.katex) { %>
<%- theme.plugins.katex.min_css %>
<% } %>

View File

@ -0,0 +1,4 @@
<% if (theme.plugins.katex) { %>
<%- theme.plugins.katex.min_js %>
<%- theme.plugins.katex.auto_render_min_js %>
<% } %>

View File

@ -1,3 +1,6 @@
<% if (page.katex == true) { %>
<%- partial('katex/script') %>
<% } %>
<% if (page.mathjax == true) { %> <% if (page.mathjax == true) { %>
<%- partial('mathjax/script') %> <%- partial('mathjax/script') %>
<% } %> <% } %>

View File

@ -1,3 +1,20 @@
<%
function custom_inject() {
var el = '';
for (let item of (config.inject?.script || [])) {
el += item;
}
for (let item of (theme.inject?.script || [])) {
el += item;
}
for (let item of (page.inject?.script || [])) {
el += item;
}
return el;
}
%>
<script type="text/javascript"> <script type="text/javascript">
const stellar = { const stellar = {
// 懒加载 css https://github.com/filamentgroup/loadCSS // 懒加载 css https://github.com/filamentgroup/loadCSS
@ -160,8 +177,4 @@
<%- partial('../plugins/parser/script') %> <%- partial('../plugins/parser/script') %>
<!-- inject --> <!-- inject -->
<% if (config.inject && config.inject.script && config.inject.script.length > 0) { %> <%- custom_inject() %>
<% config.inject.script.forEach(function(js) { %>
<%- js %>
<% }) %>
<% } %>

View File

@ -79,6 +79,8 @@
display: none display: none
&.active &.active
display: block display: block
.tab-content:has(.grid-box)
width: 100%
.md-text.indent .tag-plugin.tabs .tab-content p:not([class]) .md-text.indent .tag-plugin.tabs .tab-content p:not([class])
text-indent: 'calc(%s * 2)' % $fs-p text-indent: 'calc(%s * 2)' % $fs-p

View File

@ -9,7 +9,7 @@ if hexo-config('plugins.scrollreveal.enable')
@import 'scrollreveal' @import 'scrollreveal'
if hexo-config('plugins.fancybox.enable') if hexo-config('plugins.fancybox.enable')
@import 'fancybox' @import 'fancybox'
if hexo-config('plugins.mermaid.enable') if hexo-config('plugins.mermaid.style_optimization')
@import 'mermaid' @import 'mermaid'
if hexo-config('plugins.copycode.enable') if hexo-config('plugins.copycode.enable')
@import 'copycode' @import 'copycode'