21
openhis-ui-vue3/public/help-center/vuepress-theme-vdoing-doc/LICENSE
Executable file
@@ -0,0 +1,21 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2019-present gaoyi(Evan) Xu
|
||||
|
||||
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 the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
290
openhis-ui-vue3/public/help-center/vuepress-theme-vdoing-doc/README.MD
Executable file
@@ -0,0 +1,290 @@
|
||||
<p align="center"><a href="https://xugaoyi.com/" target="_blank" rel="noopener noreferrer"><img width="180" src="../vuepress-theme-vdoing-doc/docs/.vuepress/public/img/logo.png" alt="logo"></a></p>
|
||||
|
||||
<h2 align="center">经创帮助中心编辑参考文档</h2>
|
||||
|
||||
<div style="background: #f8fafc; border: 2px solid #3b82f6; border-radius: 8px; padding: 20px; margin-bottom: 24px;">
|
||||
<h3 style="color: #1e40af; margin: 0 0 16px 0; display: flex; align-items: center; font-size: 18px;">
|
||||
🚨 <span style="margin-left: 8px;">【帮助中心文档编辑核心规则】</span>
|
||||
</h3>
|
||||
<div style="color: #334155; line-height: 2; font-size: 15px;">
|
||||
<p style="margin: 0 0 12px 0;">
|
||||
📁 <strong style="color: #dc2626;">文件夹路径规则</strong>:在 <span style="background: #fef2f2; padding: 2px 6px; border-radius: 3px;">help-center</span> 文件夹下的 <span style="background: #fef2f2; padding: 2px 6px; border-radius: 3px;">vuepress-theme-vdoing-doc/docs/</span> 文件夹下新建文件夹;
|
||||
</p>
|
||||
<p style="margin: 0 0 12px 0;">
|
||||
✏️ <strong style="color: #059669;">页面改造规则</strong>:<span style="color: #dc2626; font-weight: bold; font-size: 16px;">第一个测试页面不可删除</span>,这是帮助中心的入口页面,请勿删除(可以改造)!
|
||||
</p>
|
||||
<p style="margin: 0 0 12px 0;">
|
||||
💡 <strong style="color: #d97706;">编写建议</strong>:因为编写完成后页面不会实时刷新,需要重新启动服务才能看到效果。建议将编写好的MD格式文件复制到目录下后重新打包构建后刷新页面查看效果。
|
||||
</p>
|
||||
<p style="margin: 0 0 12px 0;">
|
||||
📋 <strong style="color: #7c3aed;">命名规则</strong>:<br>
|
||||
▪ 文件夹命名规则:01.(侧边栏根据数字生成必须要!!!) 页面名称(无后缀)<br>
|
||||
▪ 文件命名规则: 01.功能名称.md;
|
||||
</p>
|
||||
<p style="margin: 0 0 12px 0;">
|
||||
👀️ <strong style="color: #7c3aed;">静态资源放置规则</strong>:<br>
|
||||
▪ 页面图片放置在/openhis-ui-vue3/public/help-center/vuepress-theme-vdoing-doc/docs/.vuepress/public/img/png文件夹下。<br>
|
||||
▪ 通过相对路径引用
|
||||
</p>
|
||||
<p style="margin: 0 0 12px 0;">
|
||||
📦 <strong style="color: #2563eb;">打包部署规则</strong>:确认无误后进入 <span style="background: #fef2f2; padding: 2px 6px; border-radius: 3px;">vuepress-theme-vdoing-doc</span> 路径执行 <code style="background: #f1f5f9; padding: 2px 6px; border-radius: 3px; color: #d21818;">npm run build:win</code>(仅Windows系统需要加win) 打包命令
|
||||
</p>
|
||||
<p style="margin: 0; color: #d51414; font-weight: bold;">
|
||||
⚠️ 警告:如果帮助中心不放在当前路径下,请将配置文件中的打包路径改成自定义路径,否则会丢失JS和CSS样式。<br>
|
||||
配置文件路径:docs/.vuepress/config.js
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
📚 MarkDown基本语法大全
|
||||
|
||||
以下整理了MarkDown常用基础语法,涵盖标题、文本样式、列表等核心功能,附写法示例与显示效果,适合新手快速上手。
|
||||
|
||||
一、标题语法
|
||||
|
||||
说明:通过「#」符号表示标题,# 数量对应标题层级(1-6级),# 与标题文本间需留一个空格,层级越高字体越小。
|
||||
|
||||
📝 写法示例:
|
||||
|
||||
\# 一级标题
|
||||
|
||||
\#\# 二级标题
|
||||
|
||||
\#\#\# 三级标题
|
||||
|
||||
\#\#\#\# 四级标题
|
||||
|
||||
\#\#\#\#\# 五级标题
|
||||
|
||||
\#\#\#\#\#\# 六级标题
|
||||
|
||||
✨ 显示效果:
|
||||
|
||||
# 一级标题
|
||||
|
||||
## 二级标题
|
||||
|
||||
### 三级标题
|
||||
|
||||
#### 四级标题
|
||||
|
||||
##### 五级标题
|
||||
|
||||
###### 六级标题
|
||||
|
||||
二、文本样式
|
||||
|
||||
📝 写法示例:
|
||||
|
||||
\*\*加粗文本\*\*
|
||||
|
||||
\*斜体文本\*
|
||||
|
||||
\*\*\*加粗斜体文本\*\*\*
|
||||
|
||||
\~\~删除线文本\~\~
|
||||
|
||||
<u>下划线文本</u>
|
||||
|
||||
\=\=高亮文本\=\=(部分编辑器支持,如Typora)
|
||||
|
||||
\> 引用文本(块引用)
|
||||
|
||||
\>\> 嵌套引用文本(二级引用)
|
||||
|
||||
\`行内代码片段\`
|
||||
|
||||
✨ 显示效果:
|
||||
|
||||
**加粗文本**
|
||||
*斜体文本*
|
||||
***加粗斜体文本***
|
||||
~~删除线文本~~
|
||||
<u>下划线文本</u>
|
||||
==高亮文本==
|
||||
|
||||
> 引用文本(块引用)
|
||||
>
|
||||
>> 嵌套引用文本(二级引用)
|
||||
>> 行内代码示例:`print("Hello MarkDown")`
|
||||
>>
|
||||
|
||||
三、列表
|
||||
|
||||
1. 无序列表(符号可选:-、*、+,符号后需留空格)
|
||||
|
||||
📝 写法示例:
|
||||
|
||||
\-\- 无序列表项 1
|
||||
|
||||
\- 无序列表项 2
|
||||
\- 子列表项 2.1(前面缩进4个空格)
|
||||
\- 子列表项 2.2
|
||||
|
||||
\* 无序列表项 A
|
||||
\* 无序列表项 B
|
||||
|
||||
\+ 无序列表项 X
|
||||
\+ 无序列表项 Y
|
||||
|
||||
✨ 显示效果:
|
||||
|
||||
- 无序列表项 1
|
||||
- 无序列表项 2
|
||||
- 子列表项 2.1(前面缩进4个空格或1个Tab)
|
||||
- 子列表项 2.2
|
||||
|
||||
* 无序列表项 A
|
||||
* 无序列表项 B
|
||||
|
||||
+ 无序列表项 X
|
||||
+ 无序列表项 Y
|
||||
|
||||
2. 有序列表(数字+英文句点+空格,自动排序)
|
||||
|
||||
📝 写法示例:
|
||||
|
||||
1. 有序列表项 1
|
||||
2. 有序列表项 2
|
||||
|
||||
1. 子列表项 2.1(前面缩进4个空格)
|
||||
2. 子列表项 2.2
|
||||
3. 有序列表项 3
|
||||
4.
|
||||
5. 任务列表(结合无序列表与复选框,部分编辑器支持)
|
||||
6. 有序列表不会认定前面数字改变,从1开始排序,数字会自动序号并不会根据你输入的数字排序
|
||||
|
||||
✨ 显示效果:
|
||||
|
||||
1. 有序列表项 1
|
||||
2. 有序列表项 2
|
||||
|
||||
1. 子列表项 2.1(缩进后自动续号)
|
||||
2. 子列表项 2.2
|
||||
3. 有序列表项 3
|
||||
4.
|
||||
5. 任务列表(结合无序列表与复选框,部分编辑器支持)
|
||||
|
||||
有序列表和无序列表的区别是quote(引用)标签不能嵌套,但无序列表可以嵌套。
|
||||
|
||||
📝 写法示例:
|
||||
|
||||
\-[x] 已完成任务 1
|
||||
\-[x] 已完成任务 2
|
||||
\-[ ] 未完成任务 3
|
||||
\-[ ] 未完成任务 4
|
||||
|
||||
✨ 显示效果:
|
||||
|
||||
- [X] 已完成任务 1
|
||||
- [X] 已完成任务 2
|
||||
- [ ] 未完成任务 3
|
||||
- [ ] 未完成任务 4
|
||||
|
||||
四、链接与图片
|
||||
|
||||
1. 链接(两种写法:行内链接、参考链接)
|
||||
|
||||
📝 写法示例:
|
||||
|
||||
# 行内链接(直接显示链接文本与地址)
|
||||
|
||||
\[百度一下\](https://www.baidu.com "百度首页 - 悬停提示文本")
|
||||
|
||||
# 参考链接(适合多次引用同一链接)
|
||||
|
||||
\[MarkDown官方文档\]\[1\]
|
||||
\[GitHub\]\[2\]
|
||||
|
||||
\[1\]: https://daringfireball.net/projects/markdown/ "MarkDown官方指南"
|
||||
\[2\]: https://github.com/ "GitHub官网"
|
||||
|
||||
✨ 显示效果:
|
||||
|
||||
行内链接:[百度一下](https://www.baidu.com "百度首页 - 悬停提示文本")
|
||||
参考链接:[MarkDown官方文档][1]、[GitHub][2]
|
||||
|
||||
2. 图片(语法与链接类似,前缀加!)
|
||||
|
||||
📝 写法示例:
|
||||
|
||||
# 行内图片
|
||||
|
||||
\![风景图]\(https://picx.zhimg.com/v2-d6f44389971daab7e688e5b37046e4e4_720w.jpg?source=172ae18b)
|
||||
|
||||
# 参考图片
|
||||
|
||||
\![Logo]\[img1]
|
||||
|
||||
\[img1]: https://www.logosc.cn/uploads/articles/2022/10/20/16662553442591813.png "品牌Logo"
|
||||
|
||||
✨ 显示效果:
|
||||
|
||||
行内图片:
|
||||
|
||||
参考图片:![Logo][img1]"品牌Logo"
|
||||
|
||||
五、分割线
|
||||
|
||||
说明:三种写法均可,需单独成行,前后建议空一行,避免与其他内容混淆。
|
||||
|
||||
📝 写法示例:
|
||||
|
||||
\---
|
||||
|
||||
\***
|
||||
|
||||
\___
|
||||
|
||||
✨ 显示效果:
|
||||
|
||||
---
|
||||
|
||||
---
|
||||
|
||||
---
|
||||
|
||||
六、表格(支持对齐设置)
|
||||
|
||||
📝 写法示例:
|
||||
|
||||
# 基础表格(| 分隔列,- 分隔表头与内容)
|
||||
|
||||
\| 姓名 | 年龄 | 职业 |
|
||||
|
||||
\| ---- | ---- | ---- |
|
||||
|
||||
\| 张三 | 25 | 程序员 |
|
||||
|
||||
\| 李四 | 30 | 设计师 |
|
||||
|
||||
# 带对齐的表格(: 表示对齐方向)
|
||||
|
||||
\| 左对齐 | 居中对齐 | 右对齐 |
|
||||
|
||||
\| :----- | :------: | -----: |
|
||||
|
||||
\| 内容1 | 内容2 | 内容3 |
|
||||
|
||||
\| 文本A | 文本B | 文本C |
|
||||
|
||||
✨ 显示效果:
|
||||
|
||||
|
||||
| 姓名 | 年龄 | 职业 |
|
||||
| ---- | ---- | ------ |
|
||||
| 张三 | 25 | 程序员 |
|
||||
| 李四 | 30 | 设计师 |
|
||||
|
||||
|
||||
| 左对齐 | 居中对齐 | 右对齐 |
|
||||
| :----- | :------: | -----: |
|
||||
| 内容1 | 内容2 | 内容3 |
|
||||
| 文本A | 文本B | 文本C |
|
||||
|
||||
* 更多md语法请参考以下链接
|
||||
* [Markdown 语法参考](https://markdown.com.cn/basic-syntax/)
|
||||
|
||||
[1]: https://daringfireball.net/projects/markdown/
|
||||
[2]: https://github.com/
|
||||
[img1]: https://www.logosc.cn/uploads/articles/2022/10/20/16662553442591813.png
|
||||
@@ -0,0 +1,189 @@
|
||||
const baiduCode = require('./config/baiduCode.js'); // 百度统计hm码
|
||||
const htmlModules = require('./config/htmlModules.js');
|
||||
const path = require('path');
|
||||
|
||||
|
||||
module.exports = {
|
||||
theme: 'vdoing', // 使用依赖包主题
|
||||
// theme: require.resolve('../../vdoing'), // 使用本地主题 (先将vdoing主题文件下载到本地:https://github.com/xugaoyi/vuepress-theme-vdoing)
|
||||
|
||||
title: "vuepress-theme-vdoing",
|
||||
description: '一个基于VuePress的 知识管理&博客 主题',
|
||||
// base: '/', // 默认'/'。如果你想将你的网站部署到如 https://foo.github.io/bar/,那么 base 应该被设置成 "/bar/",(否则页面将失去样式等文件)
|
||||
base: '/help-center/vuepress-theme-vdoing-doc/docs/.vuepress/dist/',
|
||||
theme: 'vdoing',
|
||||
title: "经创HIS系统操作手册",
|
||||
head: [ // 注入到页面<head> 中的标签,格式[tagName, { attrName: attrValue }, innerHTML?]
|
||||
['link', { rel: 'icon', href: '/img/favicon.ico' }], //favicons,资源放在public文件夹
|
||||
['meta', { name: 'keywords', content: 'vuepress,theme,blog,vdoing' }],
|
||||
['meta', { name: 'theme-color', content: '#11a8cd' }], // 移动浏览器主题颜色
|
||||
|
||||
// ['meta', { name: 'wwads-cn-verify', content: '6c4b761a28b734fe93831e3fb400ce87' }], // 广告相关,你可以去掉
|
||||
// ['script', { src: 'https://cdn.wwads.cn/js/makemoney.js', type: 'text/javascript' }], // 广告相关,你可以去掉
|
||||
],
|
||||
|
||||
// 排除特定目录不被打包
|
||||
patterns: [
|
||||
'**/*.md',
|
||||
],
|
||||
// 注意:patterns 配置只影响 Markdown 文件,不影响 public 目录中的静态资源
|
||||
|
||||
configureWebpack: {
|
||||
resolve: {
|
||||
alias: {
|
||||
'@img': path.resolve(__dirname, './public/img')
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
// 主题配置
|
||||
themeConfig: {
|
||||
nav: [
|
||||
{ text: '首页', link: '/' },
|
||||
{ text: 'HIS', link: '/pages/520e67/' },
|
||||
],
|
||||
sidebarDepth: 2, // 侧边栏显示深度,默认1,最大2(显示到h3标题)
|
||||
logo: '/img/logo.png', // 导航栏logo
|
||||
// repo: 'xugaoyi/vuepress-theme-vdoing', // 导航栏右侧生成Github链接
|
||||
searchMaxSuggestions: 10, // 搜索结果显示最大数
|
||||
// lastUpdated: '上次更新', // 更新的时间,及前缀文字 string | boolean (取值为git提交时间)
|
||||
|
||||
// docsDir: 'docs', // 编辑的文件夹
|
||||
// editLinks: true, // 编辑链接
|
||||
// editLinkText: '编辑',
|
||||
|
||||
// 以下配置是Vdoing主题改动的和新增的配置
|
||||
sidebar: { mode: 'structuring', collapsable: false }, // 侧边栏 'structuring' | { mode: 'structuring', collapsable: Boolean} | 'auto' | 自定义 温馨提示:目录页数据依赖于结构化的侧边栏数据,如果你不设置为'structuring',将无法使用目录页
|
||||
|
||||
// sidebarOpen: false, // 初始状态是否打开侧边栏,默认true
|
||||
updateBar: { // 最近更新栏
|
||||
showToArticle: false, // 显示到文章页底部,默认true
|
||||
// moreArticle: '/archives' // “更多文章”跳转的页面,默认'/archives'
|
||||
},
|
||||
// titleBadge: false, // 文章标题前的图标是否显示,默认true
|
||||
// titleBadgeIcons: [ // 文章标题前图标的地址,默认主题内置图标
|
||||
// '图标地址1',
|
||||
// '图标地址2'
|
||||
// ],
|
||||
|
||||
pageStyle: 'line', // 页面风格,可选值:'card'卡片 | 'line' 线(未设置bodyBgImg时才生效), 默认'card'。 说明:card时背景显示灰色衬托出卡片样式,line时背景显示纯色,并且部分模块带线条边框
|
||||
|
||||
// contentBgStyle: 1,
|
||||
|
||||
category: false, // 是否打开分类功能,默认true。 如打开,会做的事情有:1. 自动生成的frontmatter包含分类字段 2.页面中显示与分类相关的信息和模块 3.自动生成分类页面(在@pages文件夹)。如关闭,则反之。
|
||||
tag: false, // 是否打开标签功能,默认true。 如打开,会做的事情有:1. 自动生成的frontmatter包含标签字段 2.页面中显示与标签相关的信息和模块 3.自动生成标签页面(在@pages文件夹)。如关闭,则反之。
|
||||
// archive: false, // 是否打开归档功能,默认true。 如打开,会做的事情有:1.自动生成归档页面(在@pages文件夹)。如关闭,则反之。
|
||||
|
||||
author: { // 文章默认的作者信息,可在md文件中单独配置此信息 String | {name: String, href: String}
|
||||
name: 'JinYang Chen', // 必需
|
||||
// href: 'https://github.com/xugaoyi' // 可选的
|
||||
},
|
||||
social: { // 社交图标,显示于博主信息栏和页脚栏
|
||||
// iconfontCssFile: '//at.alicdn.com/t/font_1678482_u4nrnp8xp6g.css', // 可选,阿里图标库在线css文件地址,对于主题没有的图标可自由添加
|
||||
// icons: [
|
||||
// {
|
||||
// iconClass: 'icon-youjian',
|
||||
// title: '发邮件',
|
||||
// link: 'mailto:894072666@qq.com'
|
||||
// },
|
||||
// {
|
||||
// iconClass: 'icon-github',
|
||||
// title: 'GitHub',
|
||||
// link: 'https://github.com/xugaoyi'
|
||||
// },
|
||||
// {
|
||||
// iconClass: 'icon-erji',
|
||||
// title: '听音乐',
|
||||
// link: 'https://music.163.com/#/playlist?id=755597173'
|
||||
// }
|
||||
// ]
|
||||
// },
|
||||
footer: { // 页脚信息
|
||||
createYear: 2019, // 博客创建年份
|
||||
copyrightInfo: 'Evan Xu | MIT License', // 博客版权信息,支持a标签
|
||||
},
|
||||
htmlModules,
|
||||
},
|
||||
|
||||
// 插件
|
||||
plugins: [
|
||||
// [require('./plugins/love-me'), { // 鼠标点击爱心特效
|
||||
// color: '#11a8cd', // 爱心颜色,默认随机色
|
||||
// excludeClassName: 'theme-vdoing-content' // 要排除元素的class, 默认空''
|
||||
// }],
|
||||
|
||||
['fulltext-search'], // 全文搜索
|
||||
|
||||
// ['thirdparty-search', { // 可以添加第三方搜索链接的搜索框(原官方搜索框的参数仍可用)
|
||||
// thirdparty: [ // 可选,默认 []
|
||||
// {
|
||||
// title: '在GitHub中搜索',
|
||||
// frontUrl: 'https://github.com/search?q=', // 搜索链接的前面部分
|
||||
// behindUrl: '' // 搜索链接的后面部分,可选,默认 ''
|
||||
// },
|
||||
// {
|
||||
// title: '在npm中搜索',
|
||||
// frontUrl: 'https://www.npmjs.com/search?q=',
|
||||
// },
|
||||
// {
|
||||
// title: '在Bing中搜索',
|
||||
// frontUrl: 'https://cn.bing.com/search?q='
|
||||
// }
|
||||
// ]
|
||||
// }],
|
||||
|
||||
[
|
||||
'vuepress-plugin-baidu-tongji', // 百度统计
|
||||
{
|
||||
hm: baiduCode || '01293bffa6c3962016c08ba685c79d78'
|
||||
}
|
||||
],
|
||||
|
||||
['one-click-copy', { // 代码块复制按钮
|
||||
copySelector: ['div[class*="language-"] pre', 'div[class*="aside-code"] aside'], // String or Array
|
||||
copyMessage: '复制成功', // default is 'Copy successfully and then paste it for use.'
|
||||
duration: 1000, // prompt message display time.
|
||||
showInMobile: false // whether to display on the mobile side, default: false.
|
||||
}],
|
||||
['demo-block', { // demo演示模块 https://github.com/xiguaxigua/vuepress-plugin-demo-block
|
||||
settings: {
|
||||
// jsLib: ['http://xxx'], // 在线示例(jsfiddle, codepen)中的js依赖
|
||||
// cssLib: ['http://xxx'], // 在线示例中的css依赖
|
||||
// vue: 'https://jsd.cdn.zzko.cn/npm/vue/dist/vue.min.js', // 在线示例中的vue依赖
|
||||
jsfiddle: false, // 是否显示 jsfiddle 链接
|
||||
codepen: true, // 是否显示 codepen 链接
|
||||
horizontal: false // 是否展示为横向样式
|
||||
}
|
||||
}],
|
||||
[
|
||||
'vuepress-plugin-zooming', // 放大图片
|
||||
{
|
||||
selector: '.theme-vdoing-content img:not(.no-zoom)',
|
||||
options: {
|
||||
bgColor: 'rgba(0,0,0,0.6)'
|
||||
},
|
||||
},
|
||||
],
|
||||
[
|
||||
'@vuepress/last-updated', // "上次更新"时间格式
|
||||
{
|
||||
transformer: (timestamp, lang) => {
|
||||
const dayjs = require('dayjs') // https://day.js.org/
|
||||
return dayjs(timestamp).format('YYYY/MM/DD, HH:mm:ss')
|
||||
},
|
||||
}
|
||||
]
|
||||
],
|
||||
|
||||
markdown: {
|
||||
// lineNumbers: true,
|
||||
extractHeaders: ['h2', 'h3', 'h4', 'h5', 'h6'], // 提取标题到侧边栏的级别,默认['h2', 'h3']
|
||||
},
|
||||
|
||||
// 监听文件变化并重新构建
|
||||
extraWatchFiles: [
|
||||
'.vuepress/config.js',
|
||||
'.vuepress/config/htmlModules.js',
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
module.exports = '';
|
||||
@@ -0,0 +1,79 @@
|
||||
/** 插入自定义html模块 (可用于插入广告模块等)
|
||||
* {
|
||||
* homeSidebarB: htmlString, 首页侧边栏底部
|
||||
*
|
||||
* sidebarT: htmlString, 全局左侧边栏顶部
|
||||
* sidebarB: htmlString, 全局左侧边栏底部
|
||||
*
|
||||
* pageT: htmlString, 全局页面顶部
|
||||
* pageB: htmlString, 全局页面底部
|
||||
* pageTshowMode: string, 页面顶部-显示方式:未配置默认全局;'article' => 仅文章页①; 'custom' => 仅自定义页①
|
||||
* pageBshowMode: string, 页面底部-显示方式:未配置默认全局;'article' => 仅文章页①; 'custom' => 仅自定义页①
|
||||
*
|
||||
* windowLB: htmlString, 全局左下角②
|
||||
* windowRB: htmlString, 全局右下角②
|
||||
* }
|
||||
*
|
||||
* ①注:在.md文件front matter配置`article: false`的页面是自定义页,未配置的默认是文章页(首页除外)。
|
||||
* ②注:windowLB 和 windowRB:1.展示区块最大宽高200px*400px。2.请给自定义元素定一个不超过200px*400px的宽高。3.在屏幕宽度小于960px时无论如何都不会显示。
|
||||
*/
|
||||
|
||||
|
||||
module.exports = {
|
||||
// 万维广告
|
||||
pageT: `
|
||||
<div class="wwads-cn wwads-horizontal page-wwads" data-id="136"></div>
|
||||
<style>
|
||||
.page-wwads{
|
||||
width:100%!important;
|
||||
min-height: 0;
|
||||
margin: 0;
|
||||
}
|
||||
.page-wwads .wwads-img img{
|
||||
width:80px!important;
|
||||
}
|
||||
.page-wwads .wwads-poweredby{
|
||||
width: 40px;
|
||||
position: absolute;
|
||||
right: 25px;
|
||||
bottom: 3px;
|
||||
}
|
||||
.wwads-content .wwads-text, .page-wwads .wwads-text{
|
||||
height: 100%;
|
||||
padding-top: 5px;
|
||||
display: block;
|
||||
}
|
||||
</style>
|
||||
`,
|
||||
// 赞助商广告
|
||||
sidebarT: `
|
||||
<a href="http://apifox.cn/a103xugaoyi" target="_blank">
|
||||
<img src="https://jsd.cdn.zzko.cn/gh/xugaoyi/blog-gitalk-comment@master/img/431669861564_.2470ykdcpbds.jpg" alt="npm" class="no-zoom" style="width: 100%;border-radius: 2px;">
|
||||
<p style="text-align: center;margin: 0;color: #999;font-size: 12px;">(进入注册为作者充电)</p>
|
||||
</a>`,
|
||||
|
||||
|
||||
// windowRB: `
|
||||
// <div class="wwads-cn wwads-vertical windowRB" data-id="136" style="max-width:160px;
|
||||
// min-width: auto;min-height:auto;"></div>
|
||||
// <style>
|
||||
// .windowRB{ padding: 0;}
|
||||
// .windowRB .wwads-img{margin-top: 10px;}
|
||||
// .windowRB .wwads-content{margin: 0 10px 10px 10px;}
|
||||
// .custom-html-window-rb .close-but{
|
||||
// display: none;
|
||||
// }
|
||||
// </style>
|
||||
// `
|
||||
}
|
||||
|
||||
|
||||
// module.exports = {
|
||||
// homeSidebarB: `<div style="width:100%;height:100px;color:#fff;background: #eee;">自定义模块测试</div>`,
|
||||
// sidebarT: `<div style="width:100%;height:100px;color:#fff;background: #eee;">自定义模块测试</div>`,
|
||||
// sidebarB: `<div style="width:100%;height:100px;color:#fff;background: #eee;">自定义模块测试</div>`,
|
||||
// pageT: `<div style="width:100%;height:100px;color:#fff;background: #eee;">自定义模块测试</div>`,
|
||||
// pageB: `<div style="width:100%;height:100px;color:#fff;background: #eee;">自定义模块测试</div>`,
|
||||
// windowLB: `<div style="width:100%;height:100px;color:#fff;background: #eee;">自定义模块测试</div>`,
|
||||
// windowRB: `<div style="width:100%;height:100px;color:#fff;background: #eee;">自定义模块测试</div>`,
|
||||
// }
|
||||
@@ -0,0 +1,59 @@
|
||||
/**
|
||||
* to主题使用者:你可以去掉本文件的所有代码
|
||||
*/
|
||||
export default ({
|
||||
Vue, // VuePress 正在使用的 Vue 构造函数
|
||||
options, // 附加到根实例的一些选项
|
||||
router, // 当前应用的路由实例
|
||||
siteData, // 站点元数据
|
||||
isServer // 当前应用配置是处于 服务端渲染 还是 客户端
|
||||
}) => {
|
||||
|
||||
// 用于监控在路由变化时检查广告拦截器 (to主题使用者:你可以去掉本文件的所有代码)
|
||||
if (!isServer) {
|
||||
router.afterEach(() => {
|
||||
//check if wwads' fire function was blocked after document is ready with 3s timeout (waiting the ad loading)
|
||||
docReady(function () {
|
||||
setTimeout(function () {
|
||||
if (window._AdBlockInit === undefined) {
|
||||
ABDetected();
|
||||
}
|
||||
}, 3000);
|
||||
});
|
||||
|
||||
// 删除事件改为隐藏事件
|
||||
setTimeout(() => {
|
||||
const pageAD = document.querySelector('.page-wwads');
|
||||
if (!pageAD) return;
|
||||
const btnEl = pageAD.querySelector('.wwads-hide');
|
||||
if (btnEl) {
|
||||
btnEl.onclick = () => {
|
||||
pageAD.style.display = 'none';
|
||||
}
|
||||
}
|
||||
// 显示广告模块
|
||||
if (pageAD.style.display === 'none') {
|
||||
pageAD.style.display = 'flex';
|
||||
}
|
||||
}, 900);
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function ABDetected() {
|
||||
const h = "<style>.wwads-horizontal,.wwads-vertical{background-color:#f4f8fa;padding:5px;min-height:120px;margin-top:20px;box-sizing:border-box;border-radius:3px;font-family:sans-serif;display:flex;min-width:150px;position:relative;overflow:hidden;}.wwads-horizontal{flex-wrap:wrap;justify-content:center}.wwads-vertical{flex-direction:column;align-items:center;padding-bottom:32px}.wwads-horizontal a,.wwads-vertical a{text-decoration:none}.wwads-horizontal .wwads-img,.wwads-vertical .wwads-img{margin:5px}.wwads-horizontal .wwads-content,.wwads-vertical .wwads-content{margin:5px}.wwads-horizontal .wwads-content{flex:130px}.wwads-vertical .wwads-content{margin-top:10px}.wwads-horizontal .wwads-text,.wwads-content .wwads-text{font-size:14px;line-height:1.4;color:#0e1011;-webkit-font-smoothing:antialiased}.wwads-horizontal .wwads-poweredby,.wwads-vertical .wwads-poweredby{display:block;font-size:11px;color:#a6b7bf;margin-top:1em}.wwads-vertical .wwads-poweredby{position:absolute;left:10px;bottom:10px}.wwads-horizontal .wwads-poweredby span,.wwads-vertical .wwads-poweredby span{transition:all 0.2s ease-in-out;margin-left:-1em}.wwads-horizontal .wwads-poweredby span:first-child,.wwads-vertical .wwads-poweredby span:first-child{opacity:0}.wwads-horizontal:hover .wwads-poweredby span,.wwads-vertical:hover .wwads-poweredby span{opacity:1;margin-left:0}.wwads-horizontal .wwads-hide,.wwads-vertical .wwads-hide{position:absolute;right:-23px;bottom:-23px;width:46px;height:46px;border-radius:23px;transition:all 0.3s ease-in-out;cursor:pointer;}.wwads-horizontal .wwads-hide:hover,.wwads-vertical .wwads-hide:hover{background:rgb(0 0 0 /0.05)}.wwads-horizontal .wwads-hide svg,.wwads-vertical .wwads-hide svg{position:absolute;left:10px;top:10px;fill:#a6b7bf}.wwads-horizontal .wwads-hide:hover svg,.wwads-vertical .wwads-hide:hover svg{fill:#3E4546}</style><a href='https://wwads.cn/page/whitelist-wwads' class='wwads-img' target='_blank' rel='nofollow'><img src='https://jsd.cdn.zzko.cn/gh/xugaoyi/image_store@master/blog/wwads.2a3pidhlh4ys.webp' width='130'></a><div class='wwads-content'><a href='https://wwads.cn/page/whitelist-wwads' class='wwads-text' target='_blank' rel='nofollow'>为了本站的长期运营,请将我们的网站加入广告拦截器的白名单,感谢您的支持!<span style='color: #11a8cd'>如何添加白名单?</span></a><a href='https://wwads.cn/page/end-user-privacy' class='wwads-poweredby' title='万维广告 ~ 让广告更优雅,且有用' target='_blank'><span>广告</span></a></div><a class='wwads-hide' onclick='parentNode.remove()' title='隐藏广告'><svg xmlns='http://www.w3.org/2000/svg' width='6' height='7'><path d='M.879.672L3 2.793 5.121.672a.5.5 0 11.707.707L3.708 3.5l2.12 2.121a.5.5 0 11-.707.707l-2.12-2.12-2.122 2.12a.5.5 0 11-.707-.707l2.121-2.12L.172 1.378A.5.5 0 01.879.672z'></path></svg></a>";
|
||||
const wwadsEl = document.getElementsByClassName("wwads-cn");
|
||||
const wwadsContentEl = document.querySelector('.wwads-content');
|
||||
if (wwadsEl[0] && !wwadsContentEl) {
|
||||
wwadsEl[0].innerHTML = h;
|
||||
}
|
||||
};
|
||||
|
||||
//check document ready
|
||||
function docReady(t) {
|
||||
"complete" === document.readyState ||
|
||||
"interactive" === document.readyState
|
||||
? setTimeout(t, 1)
|
||||
: document.addEventListener("DOMContentLoaded", t);
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
const path= require('path');
|
||||
const LoveMyPlugin = (options={}) => ({
|
||||
define () {
|
||||
const COLOR = options.color || "rgb(" + ~~ (255 * Math.random()) + "," + ~~ (255 * Math.random()) + "," + ~~ (255 * Math.random()) + ")"
|
||||
const EXCLUDECLASS = options.excludeClassName || ''
|
||||
return {COLOR, EXCLUDECLASS}
|
||||
},
|
||||
enhanceAppFiles: [
|
||||
path.resolve(__dirname, 'love-me.js')
|
||||
]
|
||||
});
|
||||
module.exports = LoveMyPlugin;
|
||||
@@ -0,0 +1,62 @@
|
||||
export default () => {
|
||||
if (typeof window !== "undefined") {
|
||||
(function(e, t, a) {
|
||||
function r() {
|
||||
for (var e = 0; e < s.length; e++) s[e].alpha <= 0 ? (t.body.removeChild(s[e].el), s.splice(e, 1)) : (s[e].y--, s[e].scale += .004, s[e].alpha -= .013, s[e].el.style.cssText = "left:" + s[e].x + "px;top:" + s[e].y + "px;opacity:" + s[e].alpha + ";transform:scale(" + s[e].scale + "," + s[e].scale + ") rotate(45deg);background:" + s[e].color + ";z-index:99999");
|
||||
requestAnimationFrame(r)
|
||||
}
|
||||
function n() {
|
||||
var t = "function" == typeof e.onclick && e.onclick;
|
||||
|
||||
e.onclick = function(e) {
|
||||
// 过滤指定元素
|
||||
let mark = true;
|
||||
EXCLUDECLASS && e.path && e.path.forEach((item) =>{
|
||||
if(item.nodeType === 1) {
|
||||
typeof item.className === 'string' && item.className.indexOf(EXCLUDECLASS) > -1 ? mark = false : ''
|
||||
}
|
||||
})
|
||||
|
||||
if(mark) {
|
||||
t && t(),
|
||||
o(e)
|
||||
}
|
||||
}
|
||||
}
|
||||
function o(e) {
|
||||
var a = t.createElement("div");
|
||||
a.className = "heart",
|
||||
s.push({
|
||||
el: a,
|
||||
x: e.clientX - 5,
|
||||
y: e.clientY - 5,
|
||||
scale: 1,
|
||||
alpha: 1,
|
||||
color: COLOR
|
||||
}),
|
||||
t.body.appendChild(a)
|
||||
}
|
||||
function i(e) {
|
||||
var a = t.createElement("style");
|
||||
a.type = "text/css";
|
||||
try {
|
||||
a.appendChild(t.createTextNode(e))
|
||||
} catch(t) {
|
||||
a.styleSheet.cssText = e
|
||||
}
|
||||
t.getElementsByTagName("head")[0].appendChild(a)
|
||||
}
|
||||
// function c() {
|
||||
// return "rgb(" + ~~ (255 * Math.random()) + "," + ~~ (255 * Math.random()) + "," + ~~ (255 * Math.random()) + ")"
|
||||
// }
|
||||
var s = [];
|
||||
e.requestAnimationFrame = e.requestAnimationFrame || e.webkitRequestAnimationFrame || e.mozRequestAnimationFrame || e.oRequestAnimationFrame || e.msRequestAnimationFrame ||
|
||||
function(e) {
|
||||
setTimeout(e, 1e3 / 60)
|
||||
},
|
||||
i(".heart{width: 10px;height: 10px;position: fixed;background: #f00;transform: rotate(45deg);-webkit-transform: rotate(45deg);-moz-transform: rotate(45deg);}.heart:after,.heart:before{content: '';width: inherit;height: inherit;background: inherit;border-radius: 50%;-webkit-border-radius: 50%;-moz-border-radius: 50%;position: fixed;}.heart:after{top: -5px;}.heart:before{left: -5px;}"),
|
||||
n(),
|
||||
r()
|
||||
})(window, document)
|
||||
}
|
||||
}
|
||||
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 1.7 MiB |
|
After Width: | Height: | Size: 145 KiB |
|
After Width: | Height: | Size: 166 KiB |
|
After Width: | Height: | Size: 148 KiB |
|
After Width: | Height: | Size: 135 KiB |
|
After Width: | Height: | Size: 150 KiB |
|
After Width: | Height: | Size: 152 KiB |
|
After Width: | Height: | Size: 164 KiB |
|
After Width: | Height: | Size: 174 KiB |
|
After Width: | Height: | Size: 167 KiB |
|
After Width: | Height: | Size: 174 KiB |
|
After Width: | Height: | Size: 208 KiB |
|
After Width: | Height: | Size: 200 KiB |
|
After Width: | Height: | Size: 216 KiB |
|
After Width: | Height: | Size: 198 KiB |
|
After Width: | Height: | Size: 215 KiB |
|
After Width: | Height: | Size: 133 KiB |
|
After Width: | Height: | Size: 214 KiB |
|
After Width: | Height: | Size: 179 KiB |
|
After Width: | Height: | Size: 99 KiB |
|
After Width: | Height: | Size: 99 KiB |
|
After Width: | Height: | Size: 118 KiB |
|
After Width: | Height: | Size: 136 KiB |
|
After Width: | Height: | Size: 191 KiB |
|
After Width: | Height: | Size: 203 KiB |
|
After Width: | Height: | Size: 161 KiB |
|
After Width: | Height: | Size: 179 KiB |
|
After Width: | Height: | Size: 175 KiB |
|
After Width: | Height: | Size: 86 KiB |
|
After Width: | Height: | Size: 151 KiB |
|
After Width: | Height: | Size: 91 KiB |
|
After Width: | Height: | Size: 108 KiB |
|
After Width: | Height: | Size: 126 KiB |
|
After Width: | Height: | Size: 120 KiB |
|
After Width: | Height: | Size: 121 KiB |
|
After Width: | Height: | Size: 154 KiB |
|
After Width: | Height: | Size: 169 KiB |
|
After Width: | Height: | Size: 174 KiB |
|
After Width: | Height: | Size: 168 KiB |
|
After Width: | Height: | Size: 161 KiB |
|
After Width: | Height: | Size: 115 KiB |
|
After Width: | Height: | Size: 71 KiB |
|
After Width: | Height: | Size: 161 KiB |
|
After Width: | Height: | Size: 164 KiB |
|
After Width: | Height: | Size: 161 KiB |
|
After Width: | Height: | Size: 180 KiB |
|
After Width: | Height: | Size: 183 KiB |
|
After Width: | Height: | Size: 116 KiB |
|
After Width: | Height: | Size: 120 KiB |
|
After Width: | Height: | Size: 119 KiB |
|
After Width: | Height: | Size: 142 KiB |
|
After Width: | Height: | Size: 122 KiB |
|
After Width: | Height: | Size: 122 KiB |
|
After Width: | Height: | Size: 120 KiB |
|
After Width: | Height: | Size: 98 KiB |
|
After Width: | Height: | Size: 98 KiB |
|
After Width: | Height: | Size: 84 KiB |
|
After Width: | Height: | Size: 84 KiB |
|
After Width: | Height: | Size: 105 KiB |
|
After Width: | Height: | Size: 80 KiB |
|
After Width: | Height: | Size: 157 KiB |
|
After Width: | Height: | Size: 146 KiB |
|
After Width: | Height: | Size: 150 KiB |
|
After Width: | Height: | Size: 131 KiB |
|
After Width: | Height: | Size: 149 KiB |
|
After Width: | Height: | Size: 148 KiB |
|
After Width: | Height: | Size: 111 KiB |
|
After Width: | Height: | Size: 130 KiB |
|
After Width: | Height: | Size: 66 KiB |
|
After Width: | Height: | Size: 77 KiB |
|
After Width: | Height: | Size: 106 KiB |
|
After Width: | Height: | Size: 102 KiB |
|
After Width: | Height: | Size: 106 KiB |
|
After Width: | Height: | Size: 102 KiB |
|
After Width: | Height: | Size: 108 KiB |
|
After Width: | Height: | Size: 95 KiB |
|
After Width: | Height: | Size: 96 KiB |
|
After Width: | Height: | Size: 70 KiB |
|
After Width: | Height: | Size: 113 KiB |
|
After Width: | Height: | Size: 114 KiB |
|
After Width: | Height: | Size: 114 KiB |
|
After Width: | Height: | Size: 119 KiB |
|
After Width: | Height: | Size: 120 KiB |
|
After Width: | Height: | Size: 78 KiB |
|
After Width: | Height: | Size: 150 KiB |
|
After Width: | Height: | Size: 150 KiB |
|
After Width: | Height: | Size: 132 KiB |
|
After Width: | Height: | Size: 153 KiB |
|
After Width: | Height: | Size: 155 KiB |
|
After Width: | Height: | Size: 153 KiB |
|
After Width: | Height: | Size: 64 KiB |