207 lines
6.1 KiB
Vue
207 lines
6.1 KiB
Vue
<template>
|
||
<div class="articleInfo-wrap">
|
||
<div class="articleInfo">
|
||
<ul
|
||
class="breadcrumbs"
|
||
v-if="articleInfo.classify1 && articleInfo.classify1 !== '_posts'"
|
||
>
|
||
<li>
|
||
<router-link
|
||
to="/"
|
||
class="iconfont icon-home"
|
||
title="首页"
|
||
/>
|
||
</li>
|
||
<li>
|
||
<router-link
|
||
v-if="articleInfo.cataloguePermalink"
|
||
:to="articleInfo.cataloguePermalink"
|
||
:title="articleInfo.classify1+'-目录页'"
|
||
>{{articleInfo.classify1}}</router-link>
|
||
<router-link
|
||
v-else-if="$themeConfig.category !== false"
|
||
:to="`/categories/?category=${encodeURIComponent(articleInfo.classify1)}`"
|
||
title="分类"
|
||
>{{articleInfo.classify1}}</router-link>
|
||
<span v-else>{{ articleInfo.classify1 }}</span>
|
||
</li>
|
||
<li v-if="articleInfo.classify2">
|
||
<router-link
|
||
v-if="articleInfo.cataloguePermalink"
|
||
:to="articleInfo.cataloguePermalink + '/#' + articleInfo.classify2"
|
||
:title="articleInfo.classify1+'#'+articleInfo.classify2"
|
||
>{{articleInfo.classify2}}</router-link>
|
||
<router-link
|
||
v-else-if="$themeConfig.category !== false"
|
||
:to="`/categories/?category=${encodeURIComponent(articleInfo.classify2)}`"
|
||
title="分类"
|
||
>{{articleInfo.classify2}}</router-link>
|
||
<span v-else>{{articleInfo.classify2}}</span>
|
||
</li>
|
||
<li v-if="articleInfo.classify3">
|
||
<router-link
|
||
v-if="articleInfo.cataloguePermalink"
|
||
:to="articleInfo.cataloguePermalink + '/#' + articleInfo.classify3"
|
||
:title="articleInfo.classify1+'#'+articleInfo.classify3"
|
||
>{{articleInfo.classify3}}</router-link>
|
||
<router-link
|
||
v-else-if="$themeConfig.category !== false"
|
||
:to="`/categories/?category=${encodeURIComponent(articleInfo.classify3)}`"
|
||
title="分类"
|
||
>{{articleInfo.classify3}}</router-link>
|
||
<span v-else>{{articleInfo.classify3}}</span>
|
||
</li>
|
||
</ul>
|
||
<div class="info">
|
||
<div
|
||
class="author iconfont icon-touxiang"
|
||
title="作者"
|
||
v-if="articleInfo.author"
|
||
>
|
||
<a
|
||
:href="articleInfo.author.href || articleInfo.author.link"
|
||
v-if="articleInfo.author.href || articleInfo.author.link && typeof(articleInfo.author.link) === 'string'"
|
||
target="_blank"
|
||
class="beLink"
|
||
title="作者"
|
||
>{{articleInfo.author.name}}</a>
|
||
<a
|
||
v-else
|
||
href="javascript:;"
|
||
>{{articleInfo.author.name || articleInfo.author}}</a>
|
||
</div>
|
||
<div
|
||
class="date iconfont icon-riqi"
|
||
title="创建时间"
|
||
v-if="articleInfo.date"
|
||
>
|
||
<a href="javascript:;">{{articleInfo.date}}</a>
|
||
</div>
|
||
<div
|
||
class="date iconfont icon-wenjian"
|
||
title="分类"
|
||
v-if="$themeConfig.category !== false && !(articleInfo.classify1 && articleInfo.classify1 !== '_posts') && articleInfo.categories"
|
||
>
|
||
<router-link
|
||
:to="`/categories/?category=${encodeURIComponent(item)}`"
|
||
v-for="(item, index) in articleInfo.categories"
|
||
:key="index"
|
||
>{{item + ' '}}</router-link>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</template>
|
||
|
||
<script>
|
||
export default {
|
||
data () {
|
||
return {
|
||
articleInfo: {}
|
||
}
|
||
},
|
||
created () {
|
||
this.articleInfo = this.getPageInfo()
|
||
},
|
||
watch: {
|
||
'$route.path' () {
|
||
this.articleInfo = this.getPageInfo()
|
||
}
|
||
},
|
||
methods: {
|
||
getPageInfo () {
|
||
const pageInfo = this.$page
|
||
const { relativePath } = pageInfo
|
||
const { sidebar } = this.$themeConfig
|
||
|
||
// 分类采用解析文件夹地址名称的方式
|
||
const relativePathArr = relativePath.split('/')
|
||
|
||
const classifyArr = relativePathArr[0].split('.')
|
||
const classify1 = classifyArr.length > 1 ? classifyArr[1] : classifyArr[0] // 文章一级分类名称
|
||
const classify2 = relativePathArr.length > 2 ? relativePathArr[1].split('.')[1] : undefined// 文章二级分类名称
|
||
const classify3 = relativePathArr.length > 3 ? relativePathArr[2].split('.')[1] : undefined// 文章三级分类名称
|
||
|
||
const cataloguePermalink = sidebar && sidebar.catalogue ? sidebar.catalogue[classify1] : undefined// 目录页永久链接
|
||
|
||
const author = this.$frontmatter.author || this.$themeConfig.author // 作者
|
||
let date = (pageInfo.frontmatter.date || '').split(' ')[0] // 文章创建时间
|
||
|
||
// 获取页面frontmatter的分类(碎片化文章使用)
|
||
const { categories } = this.$frontmatter
|
||
|
||
return {
|
||
date,
|
||
classify1,
|
||
classify2,
|
||
classify3,
|
||
cataloguePermalink,
|
||
author,
|
||
categories
|
||
}
|
||
}
|
||
}
|
||
}
|
||
</script>
|
||
|
||
<style lang='stylus' scoped>
|
||
@require '../styles/wrapper.styl'
|
||
|
||
.articleInfo-wrap
|
||
@extend $wrapper
|
||
position relative
|
||
z-index 1
|
||
color #888
|
||
.articleInfo
|
||
overflow hidden
|
||
font-size 0.92rem
|
||
.breadcrumbs
|
||
margin 0
|
||
padding 0
|
||
overflow hidden
|
||
display inline-block
|
||
line-height 2rem
|
||
@media (max-width 960px)
|
||
width 100%
|
||
li
|
||
list-style-type none
|
||
float left
|
||
padding-right 5px
|
||
&:after
|
||
content '/'
|
||
margin-left 5px
|
||
color #999
|
||
&:last-child
|
||
&:after
|
||
content ''
|
||
a
|
||
color #888
|
||
&:before
|
||
font-size 0.92rem
|
||
&:hover
|
||
color $accentColor
|
||
.icon-home
|
||
text-decoration none
|
||
.info
|
||
float right
|
||
line-height 32px
|
||
@media (max-width 960px)
|
||
float left
|
||
div
|
||
float left
|
||
margin-left 20px
|
||
font-size 0.8rem
|
||
@media (max-width 960px)
|
||
margin 0 20px 0 0
|
||
&:before
|
||
margin-right 3px
|
||
a
|
||
color #888
|
||
&:hover
|
||
text-decoration none
|
||
a.beLink
|
||
&:hover
|
||
color $accentColor
|
||
text-decoration underline
|
||
</style>
|