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\_partial下meta.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