Jekyll的TeXt主题适配OSS

适配文章尾部 “上篇” 和 “下篇” 获取异常问题

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 -%}