发布除了杰基尔摘录之外的所有内容

时间:2014-08-27 12:29:36

标签: yaml jekyll liquid github-pages

到目前为止,我已在config.yml文件中制作了自定义摘录:excerpt_separator: <!--more-->

当我写一篇文章时,我想在列表页面上显示摘录,该文章效果很好。但是,我想知道在帖子页面上是否可以发布摘录的所有内容。

示例文章:

---
title: Lorem ipsum dolor
layout: post
---
Lorem ipsum dolor sit amet, consectetur adipiscing elit. 
Cras in malesuada ipsum. Vivamus sapien orci, vulputate vitae 
consectetur ut, ullamcorper nec quam. Aliquam erat volutpat.

<!--more-->

Cras lacinia vehicula gravida. Cras sem quam, tincidunt at fringilla
sed, venenatis quis mauris. Praesent sit amet arcu varius mi sodales ultrices. 

在帖子页面上,我只想显示以“Cras lacinia”开头的段落,而不是Lorem ipsum。

杰基尔有可能吗?我进行了搜索和搜索,只找到了自定义摘录的方法,但没有将它们全部删除。

2 个答案:

答案 0 :(得分:9)

只需将{{ content }}替换为从{{ post.excerpt }}

中删除{{ post.content }}的标记
{{ post.content | remove: post.excerpt }}

这将打印content而不显示excerpt。 Et hop!

答案 1 :(得分:0)

我意识到这已经过时了,但接受的答案并不适合我...我认为因为在我的实例中,page.content和page.excerpt已经从Markdown呈现为HTML,以及标签和空白并没有完全匹配。

我的解决方案适用于任何想要观看的人。它将帖子内容拆分为包含[摘录,余数]的数组:

{% assign content_array = page.content | split: site.excerpt_separator %}
{% assign excerpt_only = content_array | first %}
{% assign content_remainder = content_array | last %}

这要求您在site.excerpt_separator中定义_config.yml,但对于此用例,您可能还有。现在,在模板中,您可以根据需要简单地引用变量:

<div class="post-excerpt">
  {{ excerpt_only | append: '</p>'}}
</div>

<div class="post-content">
  {{ content_remainder | remove_first: '</p>'}}
</div>

append:remove_first:过滤器可以重新生成HTML格式。检查输出并根据需要进行调整。