避免使用Jekyll分页的多个菜单条目

时间:2017-12-21 14:32:41

标签: pagination jekyll liquid

我正在使用Jekyll paginate插件为我的博客创建多个页面。为了确保分页工作,我创建了一个名为blog的单独目录,其中包含index.html文件。在这个index.html文件的前面,我指定了布局,标题和顺序:

---
layout: default
title:  Blog
order:  8
---

Jekyll会获取title值,并用于在我网站的主页上创建一个名为“Blog”的菜单条目。但是,一旦启用分页并且所有帖子被分成多个页面,每个页面将具有标题“博客”。这将导致多个菜单条目“博客”。我想只有一个菜单项叫“博客”。

我试图通过将此代码插入index.html

,将页面标题重置为“空”以显示由paginator创建的其他页面
{% if paginator.page > 1 %}
  {% assign page.title = '' %}
{% endif %}

似乎page.title不是变量,而是一个对象。因此,任务无效。

5 个答案:

答案 0 :(得分:1)

如何扭转它,所以在构建菜单时检查paginator.page < 2?对我来说似乎是一个更合乎逻辑的解决方案。

答案 1 :(得分:1)

Allo,我认为你不能从paginator.page.title或page.title更改标题,即使你指定它''

在我修复issue的情况下,我改变了标题在导航栏中呈现的方式,确保它们不会重复两次。

    {% assign name_page = "" %}
    {% for page in site.pages %}
    {% if name_page contains page.title %}
    <!-- do nothing if already there -->
    {% else %}
      <li class="separator"> | </li>
      <li>
          <a class="clear" href="{{ page.url | relative_url }}">
            {{ page.title }}
          </a>
      </li>
    {% endif %}
    {% assign name_page = page.title | append: name_page %}
    {% endif %}
    {% endfor %} 

所以基本上它将标题添加到name_page,如果标题有两次则不会打印页面标题。

答案 2 :(得分:1)

我区分了分页网址,即 / blog / / blog / page1 / ,...。而且,我只打印不包含< em>“页面” 。

{%- for p in pages -%}
  {%- unless p.url contains 'page' -%}
    <li><a href="{{ site.baseurl }}{{ p.url }}">{{ p.title }}</a></li>
  {%- endunless -%}
{% endfor %}

答案 3 :(得分:1)

您还可以使用unless control flow tag,它与if相反,

{% assign tempPage = "" %}
{% for page in site.pages %}
   {% unless tempPage contains page.title %}
      {% comment %} list out the pages {% endcomment %}
      {{ page.title }}
   {% endunless %}
   {% assign tempPage = page.title | append: tempPage %}
{% endfor %}

在这里,我们将所有先前列出的page.title附加到tempPage上,并且仅在tempPage在循环中不包含当前页面标题的情况下,页面才会被列出

答案 4 :(得分:0)

另一个不错的解决方案是在按order对网站页面进行排序时删除重复的条目。当创建一组排序页面时,可以通过使用Liquid选项uniq来实现。为此,将默认安装的header.html文件复制到Jekyll _includes目录中,并在<div class="trigger">环境内部引入更改:

<div class="trigger">
  {% assign sorted_pages = site.pages | uniq:"title" | sort:"order" %}
    {% for my_page in sorted_pages %}
      {% if my_page.title %}
      <a class="page-link" href="{{ my_page.url | relative_url }}">{{ my_page.title | escape }}</a>
      {% endif %}
    {% endfor %}
</div>