关于3-hexo默认生成的摘要显示错误问题

  1. 1、前言
  2. 2、定位问题
  3. 3、解决方法
  4. 4、番外

1、前言

前段时间捣鼓了SEO,详细可跳转网站的SEO优化,最近bing终于给我网站上排名了,可是却没有浏览量,我试着自搜了一下,发现网站的摘要是错误的便有了这篇文章来解决hexo摘要生成错误的问题(也可能与我用的是3-hexo主题有关)

2、定位问题

自搜后结果如下图

具体表现为

似乎是全部使用了一篇文章的摘要,就连主页也会出现这种情况,主页的摘要是在hexo的配置文件中定义的,那么问题只能是3-hexo主题与默认配置存在冲突

3、解决方法

又因为原主题的摘要被主题所覆盖,因此知道了问题大概出在主题的模板文件上

编辑blog\themes\3-hexo\layout\_partial路径下的header.ejs文件

找到摘要生成部分修改成:

<meta name="description" content="<%
  var desc = '';
  if (page.description) {
    desc = page.description; // 1. 优先文章 front-matter 的 description
  } else if (page.excerpt) {
    desc = page.excerpt.replace(/(<([^>]+)>)/gi, ''); // 2. 如果有摘要,去掉 HTML 标签
  } else if (page.content) {
    desc = page.content.replace(/(<([^>]+)>)/gi, '').substring(0, 150); // 3. 否则取正文前150字
  } else {
    desc = config.description; // 4. 最后 fallback 用站点默认描述
  }%><%= desc %>">

成功解决

4、番外

接入了RSS后发现,会自动再生成一个摘要

因此我们再进行优化一下,把blog\themes\3-hexo\layout\_partialmeta.ejs中的open_graph({twitter_id: theme.twitter, google_plus: theme.google_plus, fb_admins: theme.fb_admins, fb_app_id: theme.fb_app_id}) %>复制并注释掉

打开blog\themes\3-hexo\layout\_partial路径下的header.ejs文件并修改摘要部分

<%
  var desc = '';
  if (page.description) {
    desc = page.description; // 优先文章 front-matter 的 description
  } else if (page.excerpt) {
    desc = page.excerpt.replace(/(<([^>]+)>)/gi, ''); // 如果有摘要,去掉 HTML 标签
  } else if (page.content) {
    desc = page.content.replace(/(<([^>]+)>)/gi, '').substring(0, 150); // 否则取正文前150字
  } else {
    desc = config.description; // 最后 fallback 用站点默认描述
  }%>
<%- open_graph({
  twitter_id: theme.twitter,
  google_plus: theme.google_plus,
  fb_admins: theme.fb_admins,
  fb_app_id: theme.fb_app_id,
  description: desc   // 让 open_graph 用和 <meta> 一样的描述
}) %>

欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 1701220998@qq.com
导航页 GitHub