我有几篇博客文章归入一个总括博客文章。例如,我有几篇有关SQL Zoo教程的帖子,但是我希望能够将它们全部链接到一篇“伞”帖子,这样我的博客索引页上只有一篇SQL Zoo帖子。我从https://codeasashu.github.io/implement-series-post-jekyll-part-2/那里得到了这个想法,并尝试按照说明进行操作,但是现在我的系列文章没有显示在索引页面上。我在_includes文件夹中的名为post-series.html的文件中包含以下代码:
{% assign seriesarray = '|' | split : '|' %}
{% assign seriestitle = '' %}
{% assign serieslabel = '' %}
{% assign sortedposts = (site.posts | sort: 'date') %}
{% for post in sortedposts %}
{% if post.series and page.series_slug != nil and post.series == page.series_slug %}
{% capture postitem %} <li> <a href="{{ site.url }}{{ post.url }}">{{ post.title }}</a> </li> {% endcapture %}
{% assign seriesarray = seriesarray | push: postitem %}
{% assign seriestitle = 'Posts in this series' %}
{% assign serieslabel = 'Series Post' %}
{% elsif post.series != nil and page.series != nil and page.series == post.series %}
{% assign pageurl = page.url | split:'/' | last %}
{% assign posturl = post.url | split:'/' | last %}
{% if pageurl != posturl %}
{% capture postitem %} <li> <a href="{{ site.url }}{{ post.url }}">{{ post.title }}</a> </li> {% endcapture %}
{% else %}
{% capture postitem %} <li> {{ post.title }} </li> {% endcapture %}
{% endif %}
{% assign seriesarray = seriesarray | push: postitem %}
{% endif %}
{% if post.series_slug != nil and page.series != nil and page.series == post.series_slug %}
{% capture series_title %} <a href="{{ site.url }}{{ post.url }}">{{ post.title }}</a> {% endcapture %}
{% assign seriestitle = 'This posts is part of series - ' | append: series_title %}
{% assign serieslabel = 'This posts is part of series - ' | append: series_title %}
{% endif %}
{% endfor %}
{% capture serieslayout %}
{% if seriesarray.size > 0 %}
<hr />
<div class="panel">
<div class="panel-body">
<h4> {{ seriestitle }} </h4>
<ul id="post-series-list">
{% endif %}
{% for post in seriesarray %} {{ post }} {% endfor %}
{% if seriesarray.size > 0 %} </ul> </div> </div> {% endif %}
{% endcapture %}
以及目录根目录中index.html文件中的以下代码:
---
layout: index
---
<div id="home">
<h1>{{ site.title }}</h1>
<hr />
<ol class="posts">
{% for post in paginator.posts %}
{% assign seriesPost = nil %}
{% if post.series == nil %}
{% if post.series_slug != nil %} {% assign seriesPost = '(Series)' %} {% endif %}
<li class="post-listing">
<img class="post__image" src="/static/img/{{ post.cover_image}}" alt="{{ post.cover_alt }}" />
<div class="post__text">
<a class="post__title" href="{{ post.url }}">{{ post.title }}</a><br>
<span>
{{ post.date | date_to_string }} •
{% assign words = post.content | number_of_words %}
{% if words < 360 %}
1 min read
{% else %}
{{ words | divided_by:180 }} min read
{% endif %}
</span>
{{ post.excerpt }}
</div>
</li>
{% endif %}
{% endfor %}
</ol>
<!-- <div class="sidebar-right sidebar"></div> -->
<!-- <ul>
{% for post in paginator.posts %}
<li>
<a href="{{ post.url }}">{{ post.title }}</a>
{{ post.excerpt }}
</li>
{% endfor %}
</ul> -->
<!-- Pagination links -->
{% if paginator.total_pages > 1 %}
<ul class="pagination pagination-sm">
{% if paginator.previous_page %}
<li><a href="{{ paginator.previous_page_path | prepend: site.baseurl | replace: '//', '/' }}">«</a></li>
{% else %}
<li class="disabled"><span aria-hidden="true">«</span></li>
{% endif %}
<li><a href="/">First</a></li>
{% for page in (1..paginator.total_pages) %}
{% if page == paginator.page %}
<li class="active"><a>{{ page }}<span class="sr-only">(current)</span></a></li>
{% elsif page == 1 %}
<li><a href="/">{{ page }}</a></li>
{% else %}
<li><a href="{{ site.paginate_path | prepend: site.baseurl | replace: '//', '/' | replace: ':num', page }}">{{ page }}</a></li>
{% endif %}
{% endfor %}
<li><a href="/page/{{ paginator.total_pages }}/">Last</a></li>
{% if paginator.next_page %}
<li><a href="{{ paginator.next_page_path | prepend: site.baseurl | replace: '//', '/' }}">»</a></li>
{% else %}
<li class="disabled"><span>»</span></li>
{% endif %}
</ul>
{% endif %}
</div><!-- end #home -->
我的完整回购可以在这里找到:https://github.com/thedatasleuth/thedatasleuth.github.io
答案 0 :(得分:1)
在您的index.html中,{% if post.series == nil %}
仅露出要打印的包含series: someserie
前题变量的帖子。
对于第二个问题(请注意,关于SO,您应该一次提出一个问题):
series_slug: "My serie slug"
问题。series: "My serie slug"
无关紧要,并且必须严格等于保护伞页面series_slug
。 (例如:您发布的帖子具有已发布:false 和系列:“ SQL Zoology” ,如果您发布,则不会出现在SQL Zoo
系列中。)< / li>
在 _layouts / post.html 中删除{% include series.html %}
。
在 _includes / post-series.html 中,将所有代码替换为以下内容:
{% comment %} #### On an umbrella page {% endcomment %}
{% if page.series_slug != nil %}
{% assign key = page.series_slug %}
{% assign title = page.title %}
{% assign url = page.url %}
{% assign sentence = "All posts in this serie :" %}
{% endif %}
{% comment %} #### On a serie page {% endcomment %}
{% if page.series != nil %}
{% assign key = page.series %}
{% assign umbrella_page = site.posts | where: 'series_slug', key | first %}
{% assign title = umbrella_page.title %}
{% assign url = umbrella_page.url %}
{% assign series_posts = site.posts | where: "series", key %}
{% for post in series_posts %}
{% if post.url == page.url %}
{% assign idx = forloop.index %}
{% endif %}
{% endfor %}
{% capture sentence %}
This article is <strong>Part {{ idx }}</strong> in a <strong>{{ series_posts.size }}-Part</strong> in <a href="{{ site.baseurl }}{{ url }}">{{ title }} serie</a>
{% endcapture %}
{% endif %}
{% if page.series_slug != nil or page.series != nil %}
{% assign series_posts = site.posts | where: "series", key %}
<hr />
<div class="panel">
<div class="panel-body">
{% if page.series_slug != nil %}
{% assign key = page.series_slug %}
{% assign title = page.title %}
{% assign url = page.url %}
{% endif %}
<h4>{{ sentence }}</h4>
<ul id="post-series-list">
{% for post in series_posts %}
<li>
{% if page.url == post.url %}
This post : {{ post.title }} - part {{ forloop.index }}
{% else %}
<a href="{{ site.baseurl }}{{ post.url }}">{{ post.title }} - part {{ forloop.index }}</a>
{% endif %}
</li>
{% endfor %}
</ul>
</div>
</div>
{% endif %}
答案 1 :(得分:0)
您忘记添加series
和series_slug
YML变量。这就是为什么它不适用于您的情况。您似乎还没有完全理解代码的工作原理,这可能是由于解决方案的复杂性所致。因此,我添加了另一个(简单得多)的解决方案,它可能同样适合您的需求。
只需将一个名为group: groupname
的YML变量添加到组中所需的每个帖子即可。分页时请勿跳过任何帖子。接下来,使用以下代码在每个帖子的页脚(在页面/帖子布局中)中列出具有相同组的帖子。最后,在系列的帖子名称中添加“第1部分”,“第2部分”等。
{% if post.group != nil %}
<ul>
{% for post in site.posts %}
{% if post.group == page.group %}
<li><a href="{{ post.url }}">{{ post.title }}</a></li>
{% endif %}
{% endfor %}
</ul>
{% endif %}
PS。如果您真的想跳过分页中的某些帖子,我将创建一个通用解决方案。将skip_pagination
布尔值添加到Front Matter(YML),然后在分页循环中查看它是否为true。这使您可以跳过分页器中的任何帖子。