# Theme

使用的是 vuepress + vuepress-theme-seeker

框架简单友好,主题漂亮干净

主题配置的时候有几个坑:

  1. nav 中的 link 后面要带上 /,这样才能自动去找对应目录下的 README.md
  2. 分类路径是 /categories/

更多配置可以参考主题作者自己的博客

# 部分 tags 页面 title 为 hello world

这个是主题带来的问题

查看源码发现 FrontmatterPagination.vue 文件中有

export default {
  // ...
  created(){
    this.$page.frontmatter.title = 'hello world'
  }
}

变量 $page.frontmatter 表示的是 markdown 的 yaml 部分
页面打开时的表现:先是显示正确的 title,然后被 hello world 覆盖掉
不知道为什么部分页面是正常的

解决方案:去掉这句就行

  1. fork 原仓库
  2. 注释掉上述文件中的那行代码
  3. 修改依赖
    yarn remove vuepress-theme-seeker
    yarn install shapled/vuepress-theme-seeker
    
    如果安装时失败,请使用代理重试

当然,也可以用我 fork 好的仓库,只使用第三步

重新部署,大功告成!

# 功能扩展

# 为 markdown 添加 checkbox 支持

根据vuepress issues 986,使用markdown-it-task-lists扩展

yarn add markdown-it-task-lists
module.exports = {
  markdown: {
    extendMarkdown: md => {
      md.use(require('markdown-it-task-lists'))
    }
  }
}
/* file: .vuepress/styles/index.styl */
.contains-task-list li
{
  list-style-type: none;
}

# SEO

# 添加 GA 支持

快乐的使用vuepress官方GA插件

yarn add -D @vuepress/plugin-google-analytics
module.exports = {
  plugins: {
    '@vuepress/google-analytics': {
      'ga': '' // UA-00000000-0
    }
  }
}

# sitemap

使用插件vuepress-plugin-sitemap

因为这个不支持按照 url 前缀 disallow,需要手动修改对应页面的 sitemap.exclude 为 true

const exclude_prefix = ['/archive/', '/categories/', '/tags/', '/about/', '/404.html']

module.exports = {
  plugins: [
    (options, ctx) => {
      return {
        generated () {
          const { pages, locales } = ctx.getSiteData ? ctx.getSiteData() : ctx
          pages.forEach(page => {
            exclude_prefix.forEach(prefix => {
              if (page.path.startsWith(prefix)) {
                let fmOpts = page.frontmatter.sitemap || {}
                fmOpts.exclude = true
                page.frontmatter.sitemap = fmOpts
              }
            })
          })
        }
      }
    },
    ['sitemap', {
      hostname: 'https://shapled.com/'
    }]
  ]
}

# robot.txt

使用插件vuepress-plugin-robots

module.exports = {
  plugins: {
    'robots': {
      host: "https://shapled.com/",
      disallowAll: false,
      sitemap: "/sitemap.xml",
      policies: [{
        userAgent: '*',
        disallow: [
          '/archive/',
          '/categories/',
          '/tags/', 
          '/about/'
        ]
      }]
    }
  }
}

# 待解决的问题

  • 博客 logo
  • 手机端适配
  • 添加 GA 统计
  • 提交到 Google、Baidu、Sogou、360
  • 好友匮乏,about 页不好看
  • 页面隐藏 + 页面密码,需要一种友好的方式实现
  • QQ 显示值或者添加跳转
  • 添加版权信息
  • 修正 footer
  • 添加 robots.txt,只保留文章
  • 搜索引擎爬虫正文摘要去掉古诗词
  • 自动生成关键词
  • 博客首页按照最后更新时间排序
  • 博客正文页面添加最后更新时间
  • 博客大纲
  • 移除 sitemap 中匹配 robots.txt disallow 规则的部分