如何更改Jekyll中的默认订单页面?
是在Github上用Jekyll构建的。在导航栏中,默认顺序为页面、消息、关于、存档。我想将列表更改为页面、存档、关于、消息。我该怎么办 我认为这与下面的代码有关如何更改Jekyll中的默认订单页面?,jekyll,github-pages,Jekyll,Github Pages,是在Github上用Jekyll构建的。在导航栏中,默认顺序为页面、消息、关于、存档。我想将列表更改为页面、存档、关于、消息。我该怎么办 我认为这与下面的代码有关 {% assign pages_list = site.pages %} 我认为站点。页面是我应该更改的,但我不知道如何更改。导航栏菜单的顺序由\u布局中的HTML模板决定(可能从\u包含中提取HTML片段) 听起来您的导航栏是通过编程从site.pages中提供的页面列表生成的,使用的是液态代码 {% assign pages_l
{% assign pages_list = site.pages %}
我认为
站点。页面
是我应该更改的,但我不知道如何更改。导航栏菜单的顺序由\u布局
中的HTML模板决定(可能从\u包含
中提取HTML片段)
听起来您的导航栏是通过编程从site.pages中提供的页面列表生成的,使用的是液态代码
{% assign pages_list = site.pages %}
如果您只有少量页面,您可能更愿意手动写出列表。site.pages
是Jekyll按字母顺序列出的所有页面。没有任何东西可以阻止您只对其进行硬编码:
<div class="navbar" id="page-top">
<div class="navbar-inner">
<div class="container">
<a class="brand" href="/">EverCoding.net</a>
<ul class="nav">
<li><a href="/pages.html">Pages</a></li>
<li><a href="/archive.html">Archive</a></li>
<li><a href="/about.html">About</a></li>
<li><a href="/messages.html">Messages</a></li>
然而,我猜目前您已经通过编程方式生成了该列表,可能是按照Jekyll bootstrap处理液态代码的方式:
<div class="navbar">
<div class="navbar-inner">
<div class="container">
<a class="brand" href="{{ HOME_PATH }}">{{ site.title }}</a>
<ul class="nav">
{% assign pages_list = site.pages %}
{% assign group = 'navigation' %}
{% include JB/pages_list %}
</ul>
</div>
</div>
</div>
{%assign pages\u list=site.pages%}
{%assign group='导航'%}
{%include JB/pages\u list%}
如果您真的想每次确定菜单,那么第二个示例中的液体代码是很方便的,但是如果您有一个静态顺序的静态菜单,那么您可能最好像我的第一个示例中那样手动对其进行编码,而不是修改液体代码进行排序
如果您可以链接到Jekyll源代码,而不是已发布的博客,我们可以更具体一些。更新:一些订购功能似乎已添加到Jekyll中: 更新:查看下面安迪·杰克逊的评论——“名称”可能需要更改为“路径” 这似乎对我有用:
{% assign sorted_pages = site.pages | sort:"name" %}
{% for node in sorted_pages %}
<li><a href="{{node.url}}">{{node.title}}</a></li>
{% endfor %}
遗憾的是,这不适用于自定义属性,因为它们不能作为Page类上的方法访问:
{% assign sorted_pages = site.pages | sort:"weight" %} #bummer
模板要求您在Jekyll标题中包含组导航
。基于@Wojtek的答案,您可以修改以使用此组
字段进行筛选和排序
调用页面列表之前,请按组排序:
{%assign sorted_pages=site.pages | sort:“group”%}
然后,只需更改页面列表中的一行:
{%if group==null或group==node.group%}
->{%if group==null或node.group包含group%}
现在,您可以将组指定为
navigation-00
,navigation-01
,而无需重命名文件或设置任何永久链接,您就可以免费进行排序。我在_data目录中创建了pages.yml文件,它看起来类似于:
- url: pages/test.html
title: Pages
group: navigation
- url: pages/front.html
title: Front
group: navigation
我将default.html(从site.pages更改为site.data.pages):
{%assign pages\u list=site.data.pages%}
{%assign group='导航'%}
{%include JB/pages\u list%}
现在,我可以使用这个yml文件作为菜单。我使用的是Jekyll v2.5.3,您还可以对实际的降价文件进行编号(按这种方式排序),因为您使用的是Front Matter块,所以您仍然可以按需保留标题和永久链接 解析器将以这种方式对页面链接进行排序。
即:
您可以创建菜单项的自定义顺序,如下所示:
---
layout: default
published: true
title: Page title
order: 1
---
{% assign sorted_pages = site.pages | sort:"order" %}
{% for node in sorted_pages %}
<li><a href="{{node.url}}">{{node.title}}</a></li>
{% endfor %}
{%assign sorted_pages=site.pages | sort:“order”%}
{已排序的_页%中的节点的百分比}
{%endfor%}
页面顺序对页面进行排序。
数组您可以定义\u config.yml
:
pages_order: ['index', 'summary', 'overview', 'part1', 'part2', 'conclusion', 'notes']
- about.md
- portfolio.md
它在模板中公开page.prev
和page.next
以允许导航:
{% if page.prev %}
<a id="previous-page" href="{{page.prev}}.html">Previous</a>
{% endif %}
{% if page.next %}
<a id="next-page" href="{{page.next}}.html">Next</a>
{% endif %}
{%if page.prev%}
{%endif%}
{%if page.next%}
{%endif%}
注意:在Github页面上不起作用。您的路径正确。您可以通过名为“order”的自定义变量进行排序 在header.html中插入和附加行:
{% assign pages_list = (site.pages | sort: 'order') %}
然后在for语句中将site.pages替换为pages\u列表:
{% for my_page in pages_list %}
{% if my_page.title %}
<a class="page-link" href="{{ my_page.url | relative_url }}">{{ my_page.title | escape }}</a>
{% endif %}
{% endfor %}
您可以查看以下文档: 有一些很好的例子和解释是关于导航\u权重的
---
layout: page
title: About
permalink: /about/
navigation_weight: 10
---
最低限度:
<div>
{% assign navigation_pages = site.pages | sort: 'navigation_weight' %}
{% for p in navigation_pages %}
{% if p.navigation_weight %}
{% if p.title %}
<a class="page-link" href="{{ p.url | relative_url }}">{{ p.title | escape }}</a>
{% endif %}
{% endif %}
{% endfor %}
</div>
{%assign navigation_pages=site.pages | sort:'navigation_weight%}
{p在导航_页面%}
{%if p.navigation_weight%}
{%if p.title%}
{%endif%}
{%endif%}
{%endfor%}
最小值主题
付诸表决:
在\u config.yml
中覆盖默认顺序。仅此而已
最小自述:
自定义导航链接
这允许您设置要在中显示的页面
导航区域并配置链接的顺序
例如,要仅链接到关于
和投资组合
页面,
将以下内容添加到您的\u config.yml
:
pages_order: ['index', 'summary', 'overview', 'part1', 'part2', 'conclusion', 'notes']
- about.md
- portfolio.md
你可以在minima-includes的文件中看到它是如何工作的。谢谢。我已经看过aboue about site.pages。看起来它无法处理site.pages Arrai。恐怕我不同意你的评论。你使用的是jekyll引导模板吗?它可以访问site.pages。按照我上面的建议,我不明白你为什么需要访问site.pages.pages,如果您打算使用您指定的四个静态页面选项。谢谢。我已经用您的第一种方法更改了我的博客。我给出上面的评论是为了学习。我只是想知道为什么我不能在jekyll中处理数组。@您是否真的可以在jekyll中处理数组
<div>
{% assign navigation_pages = site.pages | sort: 'navigation_weight' %}
{% for p in navigation_pages %}
{% if p.navigation_weight %}
{% if p.title %}
<a class="page-link" href="{{ p.url | relative_url }}">{{ p.title | escape }}</a>
{% endif %}
{% endif %}
{% endfor %}
</div>
header_pages:
- pages.md
- archive.md
- about.md
- messages.md
- about.md
- portfolio.md