Как использовать markdownify в Jekyll, чтобы показать выдержку по индексу
Я хочу показать короткую выдержку текста из более длинного сообщения или страницы на индексной странице. Я собирался использовать пользовательскую переменную в Front Matter и захватить ее, но затем я увидел фильтр для .excerpt
Я вижу в Jekyll docs что-то называемое {{ page.excerpt | markdownify }}
. Как бы пометить уценку на странице или сообщении, чтобы использовать этот фильтр?
edit: Или уделение внимания на весь документ .md?
Ответы
Ответ 1
В файлах после отметки вы должны сначала установить свою выдержку, вот пример из одного из моих сообщений
layout: post
title: A developers toolkit
date: Friday 14 December, 2012
excerpt: What text editor to use? Sass or plain old CSS? What on earth is Compass? Command line? I'm not touching that. Sound like you? Welcome, I was once like you and this is the guide I wish someone had given me.
Затем на индексной странице вызовите тег
{{ post.excerpt }}
Затем это должно выводить то, что вы написали в файле уценки. Приятно и просто и почему я люблю Джекила.
Ответ 2
Jekyll имеет опцию excerpt_separator
, которая подходит именно вам.
Все идет так:
В _config.yml
:
excerpt_separator: <!--more--> # you can specify your own separator, of course.
В вашем сообщении:
---
layout: post
title: Foo
---
This appears in your `index.html`
This appears, too.
<!--more-->
This doesn't appear. It is separated.
Обратите внимание, что вы должны ввести точно <!--more-->
, а не <!--more-->
или <!-- more -->
.
В вашем index.html
:
<!-- Loop in you posts -->
{% for post in site.posts %}
<!-- Here the header -->
<header>
<h2 class="title"><a href="{{ post.url }}">{{ post.title }}</a></h2>
</header>
<!-- Your post summary goes here -->
<article>{{ post.excerpt }}</article>
{% endfor %}
Вывод выглядит следующим образом:
<header>
<h2 class="title"><a href="Your post URL">Foo</a></h2>
</header>
<article>
This appears in your `index.html`
This appears, too.
</article>
Ответ 3
не работает для mu или коллекций, jekyll panics при попадании на исключающую жидкость для анализа. Я не знаю, почему это так, он должен работать, как вы предлагаете.
есть альтернатива:
post.content или в моем случае: blogX.content и разбить его через некоторые текстовые фильтры, которые ограничивают размер содержимого.
а именно:
{{blog.content | strip_html | truncatewords: 100}}
Ответ 4
Как и в случае ref 84cfc1cef
версия github jekyll поддерживает per-post excerpt_separator
, поэтому вам нужно добавить ссылку на Gemfile:
gem 'jekyll', github: 'jekyll/jekyll', ref: '84cfc1ceff0474fd3eb3beb193ae59ae43694863'
и создайте сообщение со следующим YAML
:
---
title: Post Excerpt Separator
excerpt_separator: "\n---\n"
---