Merge pull request #450 from chengzhongxue/main

内置主题标签,友联添加底部显示内容
This commit is contained in:
困困鱼 2023-08-27 23:50:10 +08:00 committed by GitHub
commit 83a15094a4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
13 changed files with 2338 additions and 451 deletions

View File

@ -1451,6 +1451,12 @@ spec:
value: true
- label: 关闭
value: false
- $formkit: code
name: linksArticle
height: 200
label: 底部显示内容
value: ""
language: html
- group: fcircle
label: 友链鱼塘

View File

@ -0,0 +1,506 @@
/* 获取直属子元素 */
function getChildren(el, className) {
for (let item of el.children) if (item.className === className) return item;
return null;
}
// 跳转链接的卡片
document.addEventListener("DOMContentLoaded", () => {
customElements.define(
"hao-introduction-card",
class HaoIntroductionCard extends HTMLElement {
constructor() {
super();
this.options = {
link: this.getAttribute("link") || 'https://0206.ink/',
img: this.getAttribute("img"),
tip: this.getAttribute("tip") || '小标题',
cardTitle: this.getAttribute("cardTitle") || '标题',
logo: this.getAttribute("logo"),
title: this.getAttribute("title"),
subTitle: this.getAttribute("subTitle"),
};
let style1 = ''
let style2 = ''
if(this.options.logo==null && this.options.title==null && this.options.subTitle==null){
style1 = 'height:416px'
style2 = 'height:100%;border-radius:15px'
}
let innerHTMLs = `
<div class="introduction-card" style="${style1}">
<div class="introduction-card-top" style="${style2}">
<div class="int-card-info">
<div class="int-tip">${this.options.tip}</div>
<div class="int-cardTitle">${this.options.cardTitle}</div>
</div>
<img src="${this.options.img}"
class="no-lightbox" alt="introduction">
</div>
`;
if(this.options.logo!=null && this.options.title!=null && this.options.subTitle!=null){
innerHTMLs += `
<div class="introduction-card-bottom">
<div class="left">
<img src="${this.options.logo}"
class="no-lightbox" alt="introduction">
<div class="info">
<div class="title">${this.options.title}</div>
<div class="subTitle">${this.options.subTitle}</div>
</div>
</div>
<div class="right">
<a href="${this.options.link}" tableindex="-1" class="no-text-decoration"
data-pjax-state="">前往
</a>
</div>
</div>
`;
}
innerHTMLs += `
</div>
`;
this.innerHTML = innerHTMLs;
}
}
);
// 折叠框 folding
customElements.define(
"hao-folding",
class HaoFolding extends HTMLElement {
constructor() {
super();
this.options = {
title: this.getAttribute("title"),
color: this.getAttribute("color") || '',
type: this.getAttribute("type") || ''
};
const _temp = getChildren(this, "_tpl");
let contents = _temp.innerHTML.trim().replace(/^(<br>)|(<br>)$/g, "");
let htmlStr = `
<details class="folding-tag" ${this.options.color} ${this.options.type}>
<summary>${this.options.title}</summary>
<div class="content">
${contents}
</div>
</details>
`;
this.innerHTML = htmlStr;
}
}
);
// 链接卡片 link
customElements.define(
"hao-tag-link",
class HaoTagLink extends HTMLElement {
constructor() {
super();
this.options = {
link: this.getAttribute("link"),
logo: this.getAttribute("logo"),
title: this.getAttribute("title") || '',
described: this.getAttribute("described") || '',
};
let htmlStr = `
<div calss="hao-tag-link">
<a class="tag-Link" target="_blank"
href="${this.options.link}" rel="external nofollow noreferrer"
draggable="false">
<div class="tag-link-tips">引用站外地址</div>
<div class="tag-link-bottom">
<div class="tag-link-left"
style="background-image:url(${this.options.logo})">
</div>
<div class="tag-link-right">
<div class="tag-link-title">${this.options.title}</div>
<div class="tag-link-sitename">${this.options.described}</div>
</div><i class="haofont hao-icon-angle-right"></i>
</div>
</a>
</div>
`;
this.innerHTML = htmlStr;
}
}
);
// Note (Bootstrap Callout)
customElements.define(
"hao-note",
class HaoNote extends HTMLElement {
constructor() {
super();
this.options = {
class: this.getAttribute("class") || '',
noIcon: this.getAttribute("noIcon") || '',
style: this.getAttribute("style") || '',
content: this.getAttribute("content") || '',
};
let htmlStr = `
<div class="note ${this.options.class} ${this.options.noIcon} ${this.options.style}"><p>${this.options.content}</p></div>
`;
this.innerHTML = htmlStr;
}
}
);
// 上标标签 tip
customElements.define(
"hao-tip",
class HaoTip extends HTMLElement {
constructor() {
super();
this.options = {
class: this.getAttribute("class") || '',
noIcon: this.getAttribute("noIcon") || '',
content: this.getAttribute("content") || '',
};
let htmlStr = `
<div class="tip ${this.options.class} ${this.options.noIcon}"><p>${this.options.content}</p></div>
`;
this.innerHTML = htmlStr;
}
}
);
// timeline
customElements.define(
"hao-timeline",
class HaoTimeline extends HTMLElement {
constructor() {
super();
this.options = {
title: this.getAttribute("title") || '',
color: this.getAttribute("color") || ''
};
const _temp = getChildren(this, "_tpl");
let _innerHTML = _temp.innerHTML.trim().replace(/^(<br>)|(<br>)$/g, "");
let content = "";
_innerHTML.replace(
/{timeline-item([^}]*)}([\s\S]*?){\/timeline-item}/g,
function ($0, $1, $2) {
content += `
<div class="timeline-item">
<div class="timeline-item-title">
<div class="item-circle">
<p>${$1}</p>
</div>
</div>
<div class="timeline-item-content">
<p>${$2
.trim()
.replace(/^(<br>)|(<br>)$/g, "")}</p>
</div>
</div>
`;
}
);
let htmlStr = `
<div class="timeline ${this.options.color}">
<div class="timeline-item headline">
<div class="timeline-item-title">
<div class="item-circle">
<p>${this.options.title}</p>
</div>
</div>
</div>
${content}
</div>
`;
this.innerHTML = htmlStr;
}
}
);
// 按钮 btns
customElements.define(
"hao-btns",
class HaoBtns extends HTMLElement {
constructor() {
super();
this.options = {
class: this.getAttribute("class") || '',
style: this.getAttribute("style") || '',
grid: this.getAttribute("grid") || '',
};
const _temp = getChildren(this, "_tpl");
let _innerHTML = _temp.innerHTML.trim().replace(/^(<br>)|(<br>)$/g, "");
let content = "";
if(this.options.class == 'rounded'){
_innerHTML.replace(
/{btns-item([^}]*)}/g,
function ($0, $1) {
var str = $1.split(",", 5);
if(str.length==5){
content += `
<a target="_blank" rel="noopener external nofollow noreferrer"
href="${str[2]}"
class="no-text-decoration"><i class="${str[4]}"></i> <b>${str[0]}</b>
<p class="p red">${str[1]}</p><img
src="${str[3]}">
</a>
`;
}else{
content += `
<a class="button no-text-decoration" href="${str[1]}" title="${str[0]}">
<i class="${str[2]}"></i> ${str[0]}
</a>
`;
}
}
);
}
if(this.options.class == 'circle'){
_innerHTML.replace(
/{btns-item([^}]*)}/g,
function ($0, $1) {
var str = $1.split(",", 5);
if(str.length==5){
content += `
<a target="_blank" rel="noopener external nofollow noreferrer"
href="${str[2]}"
class="no-text-decoration"><i class="${str[4]}"></i> <b>${str[0]}</b>
<p class="p red">${str[1]}</p><img
src="${str[3]}">
</a>
`;
}else{
content += `
<a class="button no-text-decoration" target="_blank" rel="noopener external nofollow noreferrer"
href="${str[1]}" title="${str[0]}">
<img
src="${str[2]}"/>${str[0]}
</a>
`;
}
}
);
}
let htmlStr = `
<div class="btns ${this.options.class} ${this.options.style} ${this.options.grid}">
${content}
</div>
`;
this.innerHTML = htmlStr;
}
}
);
// 分栏 tab
customElements.define(
"hao-tabs",
class HaoTabs extends HTMLElement {
constructor() {
super();
this.options = {
id: this.getAttribute("id") || '',
index: this.getAttribute("index") || ''
};
const id = this.options.id
const index = this.options.index
const _temp = getChildren(this, "_tpl");
let _innerHTML = _temp.innerHTML.trim().replace(/^(<br>)|(<br>)$/g, "");
let navs = "";
let contents = "";
let newIndex = 0;
_innerHTML.replace(
/{tabs-item([^}]*)}([\s\S]*?){\/tabs-item}/g,
function ($0, $1, $2) {
newIndex +=1;
let active =''
if(index!='' && index!=null){
if(newIndex == index){
active = 'active';
}
}else{
if(newIndex==1){
active = 'active'
}
}
navs += `
<li class="tab ${active}"><button type="button" data-href="#${id}-${newIndex}">${$1}</button></li>
`;
contents += `
<div class="tab-item-content ${active}" id="${id}-${newIndex}">
${$2.trim().replace(/^(<br>)|(<br>)$/g, "")}
<button type="button" class="tab-to-top" aria-label="scroll to top"><i class="haofont hao-icon-arrow-up"></i></button>
</div>
`;
}
);
let htmlStr = `
<div class="tabs" id="${this.options.id}">
<ul class="nav-tabs">${navs}</ul>
<div class="tab-contents">${contents}</div>
</div>
`;
this.innerHTML = htmlStr;
}
}
);
// gallerygroup 相册图库
customElements.define(
"hao-gallery-group",
class HaoGalleryGroup extends HTMLElement {
constructor() {
super();
const _temp = getChildren(this, "_tpl");
let _innerHTML = _temp.innerHTML.trim().replace(/^(<br>)|(<br>)$/g, "");
let contents = "";
_innerHTML.replace(
/{gallery-group-item([^}]*)}/g,
function ($0, $1) {
var str = $1.split(",",4);
contents += `
<figure class="gallery-group group-two"">
<img class="gallery-group-img no-lightbox"
src="${str[3]}"
alt="Group Image Gallery" >
<figcaption>
<div class="gallery-group-name">${str[0]}</div>
<p>${str[1]}</p><a target="_blank" rel="noopener" href="${str[2]}"></a>
</figcaption>
</figure>
`;
}
);
let htmlStr = `
<div class="gallery-group-main">
${contents}
</div>
`;
this.innerHTML = htmlStr;
}
}
);
// gallery 相册
customElements.define(
"hao-gallery",
class HaoGallery extends HTMLElement {
constructor() {
super();
const _temp = getChildren(this, "_tpl");
let _innerHTML = _temp.innerHTML.trim().replace(/^(<br>)|(<br>)$/g, "");
let contents = "";
_innerHTML.replace(
/{([^}]*)}/g,
function ($0, $1) {
var str = $1.split(",");
str.forEach((item) => {
contents += `
<div class="fj-gallery-item">
<img src="${item}">
</div>
`;
});
}
);
let htmlStr = `
<section class="page-1 loadings">
<div class="type-gallery ">
<div class="gallery">
${contents}
</div>
</div>
</section>
`;
this.innerHTML = htmlStr;
}
}
);
customElements.define(
"hao-dplayer",
class HaoDplayer extends HTMLElement {
constructor() {
super();
this.options = {
src: this.getAttribute("src") || "",
player:
this.getAttribute("player") ||
`/themes/theme-hao/assets/libs/dplayer/dplayer.html?url=`,
width: this.getAttribute("width") || "100%",
height: this.getAttribute("height") || "500px",
};
this.render();
}
render() {
if (this.options.src)
this.innerHTML = `<iframe allowfullscreen="true" class="hao_vplayer" src="${
this.options.player + this.options.src
}" style="width:${this.options.width};height:${
this.options.height
}"></iframe>`;
else this.innerHTML = "视频地址未填写!";
}
}
);
customElements.define(
"hao-bilibili",
class HaoBilibili extends HTMLElement {
constructor() {
super();
this.options = {
bvid: this.getAttribute("bvid"),
page: +(this.getAttribute("page") || "1"),
width: this.getAttribute("width") || "100%",
height: this.getAttribute("height") || "500px",
};
this.render();
}
render() {
if (this.options.bvid)
this.innerHTML = `<iframe allowfullscreen="true" class="hao_vplayer" src="//player.bilibili.com/player.html?bvid=${this.options.bvid}&page=${this.options.page}" style="width:${this.options.width};height:${this.options.height}"></iframe>`;
else this.innerHTML = "bvid未填写";
}
}
);
// customElements.define(
// "hao-pdf",
// class HaoPdf extends HTMLElement {
// constructor() {
// super();
// this.options = {
// src: this.getAttribute("src") || "",
// width: this.getAttribute("width") || "100%",
// height: this.getAttribute("height") || "500px",
// };
// this.render();
// }
// render() {
// if (!this.options.src) return (this.innerHTML = "pdf地址未填写");
// this.innerHTML = `
// <div >
// <iframe src="/themes/theme-hao/assets/libs/pdfjs/web/viewer.html?file=${this.options.src}" style="width:${this.options.width};height:${this.options.height}"></iframe>
// </div>`;
// }
// }
// );
});

View File

@ -163,7 +163,7 @@ document.addEventListener('DOMContentLoaded', function () {
const jqLoadAndRun = () => {
const $fancyboxEle = GLOBAL_CONFIG.lightbox === 'fancybox'
? document.querySelectorAll('#article-container :not(a):not(.gallery-group):not(.site-card-avatar):not(.flink-item-info):not(.rss-plan-info-group):not(.bangumi-picture) > img, #article-container > img,.bber-container-img > img')
? document.querySelectorAll('#article-container :not(a):not(.gallery-group):not(.site-card-avatar):not(.flink-item-info):not(.rss-plan-info-group):not(.bangumi-picture):not(.introduction-card) > img, #article-container > img,.bber-container-img > img')
: []
const fbLengthNoZero = $fancyboxEle.length > 0
const $jgEle = document.querySelectorAll('#article-container .gallery')

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,80 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8" />
<meta name="renderer" content="webkit" />
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, shrink-to-fit=no, viewport-fit=cover" />
<title>DPlayer</title>
<style>
* {
margin: 0;
padding: 0;
-webkit-tap-highlight-color: transparent;
outline: none;
text-decoration: none;
}
html,
body,
#dplayer {
width: 100%;
height: 100%;
}
</style>
</head>
<body>
<div id="dplayer"></div>
<script src="/themes/theme-hao/assets/libs/hls/hls.min.js"></script>
<script src="/themes/theme-hao/assets/libs/dplayer/DPlayer.min.js"></script>
<script>
var getUrlParams = function (key) {
var search = location.search;
// 判断是否为字符串类型
if (typeof search !== "string") {
search = search.toString();
}
var paramsSplit = search.replace(/^[^\?]*\?/i, "").split(/&/);
var params = {};
// 数据为空
if (paramsSplit.length < 1) {
return params;
}
if (Array.isArray(paramsSplit)) {
paramsSplit.forEach(function (item) {
// 数据为空, 退出方法
if (!item) {
return false;
}
var itemSplit = item.split(/=/);
// 判断字符串中是否有多个=
if (itemSplit.length >= 2) {
// 是
var key = itemSplit.splice(0, 1);
params[key] = itemSplit.join("=");
}
});
}
return key ? params[key] : params;
}
new DPlayer({
container: document.getElementById('dplayer'), // 播放器容器元素
autoplay: false, // 视频自动播放
theme: '#409eff', // 主题色
loop: false, // 视频循环播放
screenshot: false, // 开启截图,如果开启,视频和视频封面需要允许跨域
airplay: true, // 在 Safari 中开启 AirPlay
volume: 0.5, // 默认音量,请注意播放器会记忆用户设置,用户手动设置音量后默认音量即失效
playbackSpeed: [2, 1.5, 1.25, 1], // 可选的播放速率,可以设置成自定义的数组
video: {
url: getUrlParams('url')
}
})
</script>
</body>
</html>

View File

@ -358,4 +358,6 @@ function initFriendCircle(sortNow, changeUrl) {
}
// 执行初始化
initFriendCircle(sortNow);
if(document.getElementById('cf-container')){
initFriendCircle(sortNow);
}

1
templates/assets/libs/hls/hls.min.js vendored Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

View File

@ -146,6 +146,10 @@ i.haofont {
line-height: 1;
}
.todolist-item i.haofont {
display: var(--fa-display,inline-block);
}
/* 旧版css */
html {
line-height: 1.15;
@ -327,8 +331,7 @@ template {
#article-container h6::before,
#post .post-copyright::before,
#post .post-outdate-notice::before,
.fontawesomeIcon,
.note:not(.no-icon)::before {
.fontawesomeIcon {
display: inline-block;
font-weight: 600;
font-style: normal;
@ -4523,422 +4526,6 @@ blockquote.pullquote.right {
background-color: rgb(92, 184, 92);
}
.note {
position: relative;
margin: 0px 0px 1rem;
padding: 15px;
border-radius: 3px;
}
.note.icon {
padding-left: 2.25rem;
}
.note > .note-icon {
position: absolute;
/*top: calc(50% - 0.4rem);*/
left: 0.7rem;
font-size: larger;
}
.note.blue:not(.disabled) {
border-left-color: rgb(66, 139, 202) !important;
}
.note.blue:not(.disabled).modern {
color: rgb(66, 139, 202);
border-left-color: transparent !important;
}
.note.blue:not(.disabled):not(.simple) {
background: rgb(227, 238, 247) !important;
}
.note.blue > .note-icon {
color: rgb(66, 139, 202);
}
.note.pink:not(.disabled) {
border-left-color: rgb(255, 105, 180) !important;
}
.note.pink:not(.disabled).modern {
color: rgb(255, 105, 180);
border-left-color: transparent !important;
}
.note.pink:not(.disabled):not(.simple) {
background: rgb(255, 233, 244) !important;
}
.note.pink > .note-icon {
color: rgb(255, 105, 180);
}
.note.red:not(.disabled) {
border-left-color: red !important;
}
.note.red:not(.disabled).modern {
color: red;
border-left-color: transparent !important;
}
.note.red:not(.disabled):not(.simple) {
background: rgb(255, 217, 217) !important;
}
.note.red > .note-icon {
color: red;
}
.note.purple:not(.disabled) {
border-left-color: rgb(111, 66, 193) !important;
}
.note.purple:not(.disabled).modern {
color: rgb(111, 66, 193);
border-left-color: transparent !important;
}
.note.purple:not(.disabled):not(.simple) {
background: rgb(233, 227, 246) !important;
}
.note.purple > .note-icon {
color: rgb(111, 66, 193);
}
.note.orange:not(.disabled) {
border-left-color: rgb(255, 140, 0) !important;
}
.note.orange:not(.disabled).modern {
color: rgb(255, 140, 0);
border-left-color: transparent !important;
}
.note.orange:not(.disabled):not(.simple) {
background: rgb(255, 238, 217) !important;
}
.note.orange > .note-icon {
color: rgb(255, 140, 0);
}
.note.green:not(.disabled) {
border-left-color: rgb(92, 184, 92) !important;
}
.note.green:not(.disabled).modern {
color: rgb(92, 184, 92);
border-left-color: transparent !important;
}
.note.green:not(.disabled):not(.simple) {
background: rgb(231, 244, 231) !important;
}
.note.green > .note-icon {
color: rgb(92, 184, 92);
}
.note.simple {
border-width: 1px 1px 1px 5px;
border-style: solid;
border-color: rgb(238, 238, 238);
border-image: initial;
}
.note.modern {
background-color: rgb(245, 245, 245);
color: rgb(76, 73, 72);
border: 1px solid transparent !important;
}
.note.flat {
border-top: initial;
border-right: initial;
border-bottom: initial;
border-image: initial;
border-left: 5px solid rgb(238, 238, 238);
background-color: rgb(249, 249, 249);
color: rgb(76, 73, 72);
}
.note h2,
.note h3,
.note h4,
.note h5,
.note h6 {
margin-top: 3px;
margin-bottom: 0px;
border-bottom: initial;
padding-top: 0px !important;
}
.note blockquote:first-child,
.note img:first-child,
.note ol:first-child,
.note p:first-child,
.note pre:first-child,
.note table:first-child,
.note ul:first-child {
margin-top: 0px !important;
}
.note blockquote:last-child,
.note img:last-child,
.note ol:last-child,
.note p:last-child,
.note pre:last-child,
.note table:last-child,
.note ul:last-child {
margin-bottom: 0px !important;
font-size: 14px !important;
}
.note:not(.no-icon) {
padding-left: 2.25rem;
}
.note:not(.no-icon)::before {
position: absolute;
top: calc(50% - 15px);
left: 0.7rem;
font-size: larger;
}
.note.default.flat {
background: rgb(247, 247, 247);
}
.note.default.modern {
border-color: rgb(225, 225, 225);
background: rgb(243, 243, 243);
color: rgb(102, 102, 102);
}
.note.default.modern a:not(.btn) {
color: rgb(102, 102, 102);
}
.note.default.modern a:not(.btn):hover {
color: rgb(69, 69, 69);
}
.note.default:not(.modern) {
border-left-color: rgb(119, 119, 119);
}
.note.default:not(.modern) h2,
.note.default:not(.modern) h3,
.note.default:not(.modern) h4,
.note.default:not(.modern) h5,
.note.default:not(.modern) h6 {
color: rgb(119, 119, 119);
}
.note.default:not(.no-icon)::before {
content: "";
}
.note.default:not(.no-icon):not(.modern)::before {
color: rgb(119, 119, 119);
}
.note.primary.flat {
background: rgb(245, 240, 250);
}
.note.primary.modern {
border-color: rgb(225, 194, 255);
background: rgb(243, 218, 255);
color: rgb(111, 66, 193);
}
.note.primary.modern a:not(.btn) {
color: rgb(111, 66, 193);
}
.note.primary.modern a:not(.btn):hover {
color: rgb(69, 50, 152);
}
.note.primary:not(.modern) {
border-left-color: rgb(111, 66, 193);
}
.note.primary:not(.modern) h2,
.note.primary:not(.modern) h3,
.note.primary:not(.modern) h4,
.note.primary:not(.modern) h5,
.note.primary:not(.modern) h6 {
color: rgb(111, 66, 193);
}
.note.primary:not(.no-icon)::before {
content: "";
}
.note.primary:not(.no-icon):not(.modern)::before {
color: rgb(111, 66, 193);
}
.note.info.flat {
background: rgb(238, 247, 250);
}
.note.info.modern {
border-color: rgb(179, 229, 239);
background: rgb(217, 237, 247);
color: rgb(49, 112, 143);
}
.note.info.modern a:not(.btn) {
color: rgb(49, 112, 143);
}
.note.info.modern a:not(.btn):hover {
color: rgb(33, 87, 97);
}
.note.info:not(.modern) {
border-left-color: rgb(66, 139, 202);
}
.note.info:not(.modern) h2,
.note.info:not(.modern) h3,
.note.info:not(.modern) h4,
.note.info:not(.modern) h5,
.note.info:not(.modern) h6 {
color: rgb(66, 139, 202);
}
.note.info:not(.no-icon)::before {
content: "";
}
.note.info:not(.no-icon):not(.modern)::before {
color: rgb(66, 139, 202);
}
.note.success.flat {
background: rgb(239, 248, 240);
}
.note.success.modern {
border-color: rgb(208, 230, 190);
background: rgb(223, 240, 216);
color: rgb(60, 118, 61);
}
.note.success.modern a:not(.btn) {
color: rgb(60, 118, 61);
}
.note.success.modern a:not(.btn):hover {
color: rgb(50, 86, 44);
}
.note.success:not(.modern) {
border-left-color: rgb(92, 184, 92);
}
.note.success:not(.modern) h2,
.note.success:not(.modern) h3,
.note.success:not(.modern) h4,
.note.success:not(.modern) h5,
.note.success:not(.modern) h6 {
color: rgb(92, 184, 92);
}
.note.success:not(.no-icon)::before {
content: "\e66c";
font-family: haofont!important;
}
.note.success:not(.no-icon):not(.modern)::before {
color: rgb(92, 184, 92);
}
.note.warning.flat {
background: rgb(253, 248, 234);
}
.note.warning.modern {
border-color: rgb(250, 228, 205);
background: rgb(252, 244, 227);
color: rgb(138, 109, 59);
}
.note.warning.modern a:not(.btn) {
color: rgb(138, 109, 59);
}
.note.warning.modern a:not(.btn):hover {
color: rgb(113, 79, 48);
}
.note.warning:not(.modern) {
border-left-color: rgb(240, 173, 78);
}
.note.warning:not(.modern) h2,
.note.warning:not(.modern) h3,
.note.warning:not(.modern) h4,
.note.warning:not(.modern) h5,
.note.warning:not(.modern) h6 {
color: rgb(240, 173, 78);
}
.note.warning:not(.no-icon)::before {
content: "\e61a";
font-family: haofont!important;
}
.note.warning:not(.no-icon):not(.modern)::before {
color: rgb(240, 173, 78);
}
.note.danger.flat {
background: rgb(252, 241, 242);
}
.note.danger.modern {
border-color: rgb(235, 205, 210);
background: rgb(242, 223, 223);
color: rgb(169, 68, 66);
}
.note.danger.modern a:not(.btn) {
color: rgb(169, 68, 66);
}
.note.danger.modern a:not(.btn):hover {
color: rgb(132, 51, 63);
}
.note.danger:not(.modern) {
border-left-color: rgb(217, 83, 79);
}
.note.danger:not(.modern) h2,
.note.danger:not(.modern) h3,
.note.danger:not(.modern) h4,
.note.danger:not(.modern) h5,
.note.danger:not(.modern) h6 {
color: rgb(217, 83, 79);
}
.note.danger:not(.no-icon)::before {
content: "";
}
.note.danger:not(.no-icon):not(.modern)::before {
color: rgb(217, 83, 79);
}
#article-container .tabs {
position: relative;
margin: 0px 0px 1rem;
@ -11670,23 +11257,6 @@ strong {
}
}
/* 外挂标签 */
.note.warning:not(.no-icon):not(.modern)::before {
display: flex;
align-items: center;
height: 30px;
color: var(--heo-yellow);
}
.note.warning:not(.modern) {
border-radius: 8px;
border-width: 1px;
border-color: var(--heo-yellow);
box-shadow: var(--heo-shadow-border);
background: var(--card-bg);
}
/* 链接外挂标签 */
#article-container .tag-Link {
background: var(--heo-secondbg);
@ -11740,7 +11310,7 @@ strong {
}
#article-container .tag-Link .tag-link-bottom .tag-link-right .tag-link-title {
font-size: 1rem;
font-size: 0.94rem;
line-height: 1.2;
pointer-events: none;
}

View File

@ -164,6 +164,22 @@
</th:block>
<th:block th:if="${not #strings.isEmpty(theme.config.link.linksArticle)}"
th:utext="${theme.config.link.linksArticle}"> </th:block>
<script>
var fdataUser = {
jsonurl: '',
apiurl: "[(${theme.config.fcircle.apiurl})]",
apipublicurl: '', //默认公共库
initnumber: 20, //首次加载文章数
stepnumber: 20, //更多加载文章数
article_sort: 'created', //文章排序 updated or created
error_img: 'https://sdn.geekzu.org/avatar/57d8260dfb55501c37dde588e7c3852c'
}
</script>
<script th:src="@{/assets/libs/fcircle/heo-fcircle3mini.js}"></script>
<th:block th:if="${htmlType == 'page'}" th:utext="${singlePage.content.content}">
</th:block>

View File

@ -55,6 +55,7 @@
<div th:replace="~{modules/right-menu :: right-menu}"></div>
<div>
<script th:src="${assets_link + '/js/custom.js'}"></script>
<script th:src="${assets_link + '/js/utils.js' + theme_version}"></script>
<script th:src="${assets_link + '/js/main.js' + theme_version}"></script>
<script charset="utf-8" data-pjax th:src="${assets_link + '/zhheo/blogex.js' + theme_version}"></script>
@ -122,6 +123,7 @@
<script th:if="${theme.config.envelope_comment.enable_danmu}" th:src="${assets_link + '/libs/twikoo/easy-Danmaku.min.js'}" id="Danmaku"></script>
<script>
let pjaxSelectors = ['title', '#config-diff', '#body-wrap', '#rightside-config-hide', '#rightside-config-show', '.js-pjax','#site-config']

View File

@ -24,7 +24,7 @@
</th:block>
</th:block>
<div id="article-container">
<section class="timeline page-1 loadings">
<section class="page-1 loadings">
<div class="type-gallery ">
<div class="gallery">
<div class="fj-gallery-item"
@ -47,7 +47,7 @@
</h1>
</th:block>
<div id="article-container">
<section class="timeline page-1 loadings">
<section class="page-1 loadings">
<div class="type-gallery ">
<div class="gallery">
<div class="fj-gallery-item"