我正在使用Jekyll paginate插件为我的博客创建多个页面。为了确保分页工作,我创建了一个名为blog
的单独目录,其中包含index.html
文件。在这个index.html
文件的前面,我指定了布局,标题和顺序:
---
layout: default
title: Blog
order: 8
---
Jekyll会获取title
值,并用于在我网站的主页上创建一个名为“Blog”的菜单条目。但是,一旦启用分页并且所有帖子被分成多个页面,每个页面将具有标题“博客”。这将导致多个菜单条目“博客”。我想只有一个菜单项叫“博客”。
我试图通过将此代码插入index.html
{% if paginator.page > 1 %}
{% assign page.title = '' %}
{% endif %}
似乎page.title
不是变量,而是一个对象。因此,任务无效。
答案 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>