今天碰到个问题,hexo的next主题,在点击头像下面的 日志 时无法正常跳转,反而显示
cannot get archives%7C%7C%20archive
在网上找了很久答案都不满意,最后终于找到解决方法了
思路在下面,不想看的的到文末看结论就行了
思路
首先我们要知道 %7C是|的编码,%20是空格的编码
所以上面的报错实际上是
cannot get archives|| archive
其中archives|| archive有没有觉得很眼熟?
没错,我们在next的主题配置中有这样一段代码
1 | menu: |
所以这里就有了第一个解决方法
把最后一行改为archives: /archives/即删掉后面的部分,但是这种方法很明显有问题
因为|| archive是一种格式,后面表示的是图标,删掉的话你的博客里面的“归档”就没有图标了
然后再想想
头像下面的日志不能再次打开,但是下面的分类和标签却可以正常打开,
这三个部分都属于 sidebar(侧边栏?)
所以我想问题出在sidebar的文件中
打开 \themes\next\layout_macro\sidebar.swig
因为我没学过这种语言,所以只能用对比的方法来找问题
我们找到有关 archive(日志) categorie(分类) tags(标签)的代码
1 | {% if config.archive_dir != '/' and site.posts.length > 0 %} |
查了一下url_for是转码用的,可能和跳转有关,我们来看一下这三条语句
1 | <a href="{{ url_for(theme.menu.archives).split('||')[0] | trim }}"> |
芜湖,一对比几乎可以确定问题出在这儿,第一行的代码格式与下两行明显不一样,其中的||正好对应%7C%7C
我们直接把第一行的格式修改的和下面两行差不多
1 | <a href="{{ url_for(theme.menu.archives[0].path) }}"> |
再测试,成功!花了一晚上时间想这个好难啊QAQ
结论
打开\themes\next\layout_macro\sidebar.swig
找到archive段中的
1 | <a href="{{ url_for(theme.menu.archives).split('||')[0] | trim }}"> |
修改为
1 | <a href="{{ url_for(theme.menu.archives[0].path) }}"> |
即可