Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[BUG] page.post template variable behaves differently when using hexo serve and hexo generate #2451

Closed
WeAthFoLD opened this issue Mar 14, 2017 · 5 comments
Labels
bug Something isn't working

Comments

@WeAthFoLD
Copy link

WeAthFoLD commented Mar 14, 2017

BUG Description

I'm using page.post variable when rendering pages to support multi-language.

When using hexo serve command, the variable works as expected and gives the page's absolute path.

However when using hexo generate command (or hexo deploy), when rendering blog posts, the page.post variable gives index.html, which is unexpected.

Bug Detail

I've create a repo to isolate and test this bug. I make the page.post variable display as header of the post, and it seems that when using hexo generate, the post.path and path stays the same between pages. When I create a test/hi.md static page, all other pages has path=test/hi.html.

Way to reproduce bug

See above.

Environment Info

Node version(node -v)

v6.9.5

Hexo version

3.2.2

Your site _config.yml (I use a self-modified version of theme chan

# Hexo Configuration
## Docs: https://hexo.io/docs/configuration.html
## Source: https://github.com/hexojs/hexo/

# Site
title: Project Gearbox
subtitle:
description:
author:
language:
- zh-cn
- en
timezone:

# URL
## If your site is put in a subdirectory, set url as 'http://yoursite.com/child' and root as '/child/'
url: http://www.project-gearbox.net
root: /
permalink: /:lang/:year/:title/
permalink_defaults:
  lang: zh-CN

# Directory
source_dir: source
public_dir: public
tag_dir: tags
archive_dir: archives
category_dir: categories
code_dir: downloads/code
i18n_dir: :lang
skip_render:

# Writing
new_post_name: :lang/:title.md # File name of new posts
default_layout: post
titlecase: false # Transform title into titlecase
external_link: true # Open external links in new tab
filename_case: 0
render_drafts: false
post_asset_folder: false
relative_link: false
future: true
highlight:
  enable: true
  line_number: true
  auto_detect: false
  tab_replace:

# Category & Tag
default_category: uncategorized
category_map:
tag_map:

# Date / Time format
## Hexo uses Moment.js to parse and display date
## You can customize the date format as defined in
## http://momentjs.com/docs/#/displaying/format/
date_format: YYYY-MM-DD
time_format: HH:mm:ss

# Pagination
## Set per_page to 0 to disable pagination
per_page: 10
pagination_dir: page

# Extensions
## Plugins: https://hexo.io/plugins/
## Themes: https://hexo.io/themes/
theme: Chan

# Deployment
## Docs: https://hexo.io/docs/deployment.html
deploy:
  type: git
  repo: git@github.com:LambdaInnovation/gearbox-blog-deploy.git
  branch: master

Your theme _config.yml

# chan theme configuration

# site setting
rss: /atom.xml
favicon: /favicon.png

# style setting
monochrome: false

# view setting
avatar: /img/GB-icon.png
avatarLink: /
maxContentWidth: 1000px # set the main content column's max-width property. keep it blank to unlimited the width
copyright: # the copyright text in the footer, could be richtext

# sidebar navigator structure
# It's a list with item that is also list.
# The item of first level list means a group of links,
# and the item of the second level list means exactly a link.
# A link item is an object whit two properties: 'name' for displaying and 'link' for redirecting.
# A link starts with http/https would be rendered as a tag with 'target="_blank"' .
# There are also some special link items representing in string: 'categories', 'tags' and 'archives'
nav:
  -
    - homepage

  -
    - blog # display a collapsible category list
    # - tags       # display a collapsible tag list

  -
    -
      name: media
      path: media/index.html

  -
    -
      name: about
      path: about/index.html

# duoshuo shortname
# refer to http://duoshuo.com
# If you use disqus then you should set disqus_shortname in your site config and disable duoshuo here.
# You also need to set 'comments' to true in the front-matter
#duoshuo: sprabbit

# jiathis share id
# refer to http://jiathis.com
#jiathis: 1589291

# open graph
twitter:
google_plus:
fb_admins:
fb_app_id:

# analytics ids
google_analytics:
baidu_statistics:

# default creative commons
# There are 6 kinds of combination and place 'none' to disable.
# - by
# - by-sa
# - by-nd
# - by-nc
# - by-nc-sa
# - by-nc-nd
# - none
# This setting could be overwritten in the front matter of a post.
# More details in https://creativecommons.org
cc: none

# FancyBox / PhotoSwipe
# Although it is called fancybox, we use PhotoSwipe instead.
# Check http://photoswipe.com
fancybox: true    # enable fancybox/photoswipe rendering
# photoswipe: true  # the same

Plugin version(npm ls --depth 0)

I've customized hexo-generator-category to change the path it generates.

hexo-site@0.0.0 D:\dev\Project\Gearbox\Blog\Source
+-- hexo@3.2.2
+-- hexo-deployer-git@0.2.0
+-- hexo-generator-archive@0.1.4
+-- hexo-generator-category@0.1.3
+-- hexo-generator-index@0.2.0 extraneous
+-- hexo-generator-tag@0.2.0
+-- hexo-renderer-ejs@0.2.0
+-- hexo-renderer-marked@0.2.11
+-- hexo-renderer-stylus@0.3.1
`-- hexo-server@0.2.0
@WeAthFoLD WeAthFoLD changed the title [BUG] page.post variable behaves differently when using hexo serve and hexo generate [BUG] page.post template variable behaves differently when using hexo serve and hexo generate Mar 14, 2017
@kirkcameron
Copy link

looks like this is related also to: #2454

@NoahDragon
Copy link
Member

I'm not sure if I'm clearly understand the issue. Is that possible to have some screenshots?

@WeAthFoLD
Copy link
Author

WeAthFoLD commented Apr 8, 2017

@NoahDragon Still using the Repo I created earlier, see this:

Note that the rendered page title (test/hi.html) doesn't correspond to the actual path(archives/2017/index.html). Here's how I used the code:

https://github.com/WeAthFoLD/HexoPathBug/blob/master/themes/landscape/layout/_partial/header.ejs#L6

@NoahDragon
Copy link
Member

Let me have a look.

@stevenjoezhang
Copy link
Member

stevenjoezhang commented Mar 9, 2020

It's caused by fragment cache.
See also #3738

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

4 participants