volantis-x / hexo-theme-volantis

A Wonderful Theme for Hexo.
https://volantis.js.org
MIT License
1.98k stars 596 forks source link

【问题】:cover这里有个bug #918

Closed lovelyJason closed 2 months ago

lovelyJason commented 2 months ago

检查清单

主题版本

6.x

复现地址

https://www.qdovo.com

问题描述

如图, 这里代码逻辑错误

image

你的意思是当配置了page.cover为true的时候在判断是否首页,是否prev=0,是否height_scheme=full都没用。因为博客首页的page.cover不可能为true, 即使在_post下新建index.md设置cover为true,hexo也不会读取。

image

所以后果就是首页的cover永远不会显示,不管怎么配置, 因为首页page.cover这段if就进不来。

难道是我用错了?我记得之前版本不是这样, 解答一下疑惑

配置文件

主题配置文件

```yml cover: logo: null title: qdovo height_scheme: full # full, half layout_scheme: dock # plugins: comment_typing: false # backstretch: # # enable: false # position: fixed # images: # For personal use only. At your own risk if used for commercial purposes !!! # - https://cdn.qdovo.com/scenic/4456776-3705836a00587303.jpeg parallax: enable: true position: cover ```

环境信息

node.js & npm

``` 在这里粘贴替换 `node -v && npm -v` 输出的信息 ```

package.json

``` 在这里粘贴替换 `npm ls --depth 0` 输出的信息 ```

lovelyJason commented 2 months ago

起因是我之前把cover设置为了fixed关掉了,现在想开启,发现怎么都不出来

lovelyJason commented 2 months ago

我刚在volantis/layout/_pre.ejs中看到了一段代码

<%_
if (page.cover == undefined && theme.cover) {
  if (is_home() && page.prev == 0) {
    page.cover = theme.cover.display.home;
  } else if (is_archive()) {
    page.cover = theme.cover.display.archive;
  } else {
    page.cover = theme.cover.display.homers;
  }
}

原来是在主题配置文件中读取cover.display.home这个值,赋值给page.cover。我去, 大坑啊, 这太绕了,开启一个cover要设置了太多地方。我cover.display写在config文件顶部,plugins.parallax又写在文件底部, 导致我改一个东西,这里改一下,那里改一下才知道这个cover是这么个事。