适配文章尾部 “上篇” 和 “下篇” 获取异常问题
Jekyll 渲染生产的静态页面都是以 .html
结尾,默认存放在 http 服务器上时需要使用文件完整的 URL地址,使用 AliOSS 保存的静态页面也是类似的功能。
jekyll-TeXt-theme 的官方站点 应该是使用了 Web 服务器,比如 Nginx 或 Apache 之类的服务。能够提供 rewrite 的功能,将默认请求的 .html
省略掉,在浏览器中访问时就可以不用每个 URL 页面都携带 .html
的后缀。
因此,如果想将静态页面全部托管在 OSS 中,在渲染时需要修改文件 jekyll-TeXt-theme/_includes/article-section-navigator.html
将源文件中
{%- assign _page_url = __return -%}
修改为:
{%- assign _page_url = __return |append: '.html' -%}
修改后代码内容如下:
{%- if page.sidebar.nav -%}
{%- assign _sidebar_nav = site.data.navigation[page.sidebar.nav] -%}
{%- if _sidebar_nav -%}
{%- assign _find_cur = false -%}
{%- assign _find_next = false -%}
{%- for _item in _sidebar_nav -%}
{%- if _find_next -%} {%- break -%} {%- endif -%}
{%- if _item.children -%}
{%- for _child in _item.children -%}
{%- include snippets/get-nav-url.html path=_child.url -%}
{%- assign _nav_url = __return -%}
{%- include snippets/get-nav-url.html path=page.url -%}
{%- assign _page_url = __return |append: '.html' -%}
{%- if _nav_url == _page_url -%}
{%- assign _find_cur = true -%}
{%- elsif _find_cur and _find_next != true -%}
{%- assign _find_next = true -%}
{%- assign _next = _child -%}
{%- break -%}
{%- else -%}
{%- assign _previous = _child -%}
{%- endif -%}
{%- endfor -%}
{%- endif -%}
{%- endfor -%}
{%- endif -%}
{%- else -%}
{%- assign _previous = page.previous -%}
{%- assign _next = page.next -%}
{%- endif -%}