vuepress-theme-aurora
Version:
A vuepress-based animation blog theme, simple, beautiful, multi-color, multiple custom functions, providing article poster sharing, talk, photo album, comment and other features 一个基于vuepress的动漫类博客主题,简洁,漂亮,多色彩,多种自定义功能,提供文章海报分享,说说,相册,评论等特色功�?
219 lines (182 loc) • 9.32 kB
JavaScript
import myData from'@temp/my-data'
//需要排除的页面url
let excludes = ['/','/about/','/mood/','/link/','/tag/','/archive/','/photo/','/aurora-coze/','/aurora-register/','/aurora-archive/','/aurora-music/','/404.html','/register/','/next-mood/']
let categoriesIncludeFolderName = true
let customTagName = "tag"
let customCategoriesName = "categories"
export function setTag(app,themeProperty) {
if (themeProperty.customTagName !== undefined) {
customTagName = themeProperty.customTagName
}
if (themeProperty.customCategoriesName !== undefined) {
customCategoriesName = themeProperty.customCategoriesName
}
return new Promise((resolve,reject) => {
if (themeProperty.categoriesIncludeFolderName !== undefined) {
categoriesIncludeFolderName = themeProperty.categoriesIncludeFolderName
}
let excludePathSet = new Set()
for (let i = 0; i < excludes.length; i++) {
excludePathSet.add(excludes[i])
}
if (themeProperty.excludePath !== undefined) {
for (let i = 0; i < themeProperty.excludePath.length; i++) {
excludePathSet.add(themeProperty.excludePath[i])
}
}
resolve(excludePathSet)
}).then((excludePathSet) => {
excludes = Array.from(excludePathSet)
//存放所有categories
let categoriesSetArr = new Set()
//set存放所有分割的tag
let tagSetArr = new Set()
//mapSet存放所有文章的map集合
let mapSet = new Set()
new Promise((resolve,reject) => {
let excludeMapArr = myData.filter(pageData => {
if (pageData.data.frontmatter.show !== undefined && !pageData.data.frontmatter.show) {
return false
}
return !excludes.includes(pageData.path);
})
resolve(excludeMapArr)
}).then((excludeMapArr) => {
new Promise((resolve,reject) => {
for (let i = 0; i < excludeMapArr.length; i++) {
const articleMap = {
articleUrl: '',
title: '',
//这个是标签,在v1.8.0以前,这个是类别
tag: '',
component: '',
//路由名字
name: '',
content: '',
contentRendered: '',
//这个是类别,在v1.8.0之前,这个是标签
categories: [],
frontmatter: [],
data: null,
date: 0,
//自定义时间戳
customTime: 0,
//使用git提交的时间戳
gitTime: 0,
pageCreateTime: 0
}
articleMap.data = excludeMapArr[i].data
let createPageDate = excludeMapArr[i].data.frontmatter.date
let commitPageDate = undefined
try {
commitPageDate = excludeMapArr[i].data.git.updatedTime
} catch (e) {
}
if (createPageDate !== undefined) {
articleMap.pageCreateTime = new Date(createPageDate).getTime();
articleMap.customTime = new Date(createPageDate).getTime();
}else {
if (commitPageDate !== undefined && commitPageDate !== null) {
articleMap.pageCreateTime = commitPageDate
}
}
articleMap.gitTime = commitPageDate === undefined ? 0 : commitPageDate
let pageTagArr = excludeMapArr[i].data.frontmatter[customTagName] === undefined ? [] : excludeMapArr[i].data.frontmatter[customTagName]
articleMap.tag = pageTagArr
for (let j = 0; j < pageTagArr.length; j++) {
tagSetArr.add(pageTagArr[j])
}
//获取path
let path = excludeMapArr[i].path
let strings = path.split("/");
if (strings.length >2 && categoriesIncludeFolderName) {
//从strings中的第二个开始遍历,到倒数第二个结束
let tempCategoriesSetArr = new Set()
let temTag = []
new Promise((resolve,reject) => {
//将frontmatter中的categories放入此集合里面
if (excludeMapArr[i].data.frontmatter[customCategoriesName] !== undefined) {
for (let j = 0; j < excludeMapArr[i].data.frontmatter[customCategoriesName].length; j++) {
categoriesSetArr.add(excludeMapArr[i].data.frontmatter[customCategoriesName][j])
tempCategoriesSetArr.add(excludeMapArr[i].data.frontmatter[customCategoriesName][j])
}
}
for (let j = 0; j < strings.length; j++) {
if (j +1 >= strings.length -1) {
continue
}
let tag = strings[j+1]
let excludeTag = []
if (themeProperty.excludeTag !== undefined) {
excludeTag = themeProperty.excludeTag
}
if (excludeTag.length !== 0) {
for (let k = 0; k < excludeTag.length; k++) {
if (!(tag === excludeTag[k])) {
categoriesSetArr.add(tag)
tempCategoriesSetArr.add(tag)
temTag.push(tag)
}
}
}else {
categoriesSetArr.add(tag)
tempCategoriesSetArr.add(tag)
temTag.push(tag)
}
}
resolve(tempCategoriesSetArr)
}).then((tempCategoriesSetArr) => {
//获取标签
//获取文章连接
articleMap.articleUrl = path
articleMap.frontmatter = excludeMapArr[i].frontmatter
articleMap.contentRendered = excludeMapArr[i].contentRendered
articleMap.content = excludeMapArr[i].content
articleMap.categories = Array.from(tempCategoriesSetArr)
//获取标题
let title = excludeMapArr[i].title
articleMap.title = title === undefined ? "" : title
mapSet.add(articleMap)
})
}else {
//获取标签
//获取文章连接
articleMap.articleUrl = path
articleMap.frontmatter = excludeMapArr[i].frontmatter
articleMap.contentRendered = excludeMapArr[i].contentRendered
articleMap.content = excludeMapArr[i].content
let categories = excludeMapArr[i].frontmatter[customCategoriesName]
categories = categories === undefined ? [] : categories
articleMap.categories = categories
for (let j = 0; j < categories.length; j++) {
categoriesSetArr.add(categories[j])
}
//获取标题
let title = excludeMapArr[i].title
articleMap.title = title === undefined ? "" : title
mapSet.add(articleMap)
}
}
resolve()
}).then(()=> {
app.$store.commit('setPageNum',{
page: mapSet.size
})
//这个是所有的标签
let allTagArr = Array.from(tagSetArr)
//这个是所有类别
let allCategoriesArr = Array.from(categoriesSetArr)
//将标签和文章数组对象放入store中
app.$store.commit('setTagArr',{
tagArr: allTagArr
})
app.$store.commit('setCategories',{
categories: allCategoriesArr
})
app.$store.commit('setAllPageMap',{
allPageMap: mapSet
})
})
})
})
}