Как использовать markdownify в Jekyll, чтобы показать отрывок в индексе

Я хочу показать короткий отрывок текста из более длинного сообщения или страницы на странице индекса. Я собирался использовать пользовательскую переменную в Front Matter и взять ее, но потом увидел фильтр для .excerpt

Я вижу в документации Jekyll что-то под названием {{ page.excerpt | markdownify }} Как мне разметить уценку на странице или сообщении, чтобы использовать этот фильтр ?

edit: Или markdownify принимает весь документ .md?


person kaplan    schedule 07.05.2013    source источник


Ответы (4)


В файлах уценки поста вам нужно сначала установить отрывок, вот пример из одного из моих постов

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 }}

Затем это должно вывести то, что вы написали в файле уценки. Красиво и просто, и за что я люблю Джекилла.

person joshuahornby10    schedule 07.05.2013

У Jekyll есть вариант excerpt_separator, который вам подходит. Дело обстоит так:

In _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's the header -->
  <header>
    <h2 class="title"><a href="{{ post.url }}">{{ post.title }}</a></h2>
  </header>

  <!-- Your post's 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>
person Chongxu Ren    schedule 02.08.2013
comment
@kaplan Это лучший ответ. Это должно быть принято. - person kleinfreund; 19.01.2014
comment
@kleinfreund На самом деле я ответил на вопрос через несколько месяцев после того, как был принят первый ответ. - person Chongxu Ren; 21.01.2014
comment
Я знаю это. Вот почему я прокомментировал. Это лучший ответ. - person kleinfreund; 21.01.2014
comment
@MaxfanZone: Есть ли способ указать экспертные разделители до и после требуемого текста? Например, я хочу, чтобы в сообщении отображался только текстовый отрывок без извлечения изображений / встроенных видео? - person dshgna; 17.03.2015

не работает для mu или коллекций, jekyll паникует при нажатии на except parsing liquid. Я не знаю, почему это так, все должно работать так, как вы предлагаете.

есть альтернатива:

post.content или, как в моем случае, blogX.content и пробейте его через некоторые текстовые фильтры, ограничивающие размер контента.

например: {{blog.content | strip_html | truncatewords: 100}}

person Richard Jasmin    schedule 28.09.2016

Начиная с ссылки 84cfc1cef версия github jekyll поддерживает per-post excerpt_separator, поэтому вам нужно добавить ссылку на Gemfile:

gem 'jekyll', github: 'jekyll/jekyll', ref: '84cfc1ceff0474fd3eb3beb193ae59ae43694863'

и создайте сообщение со следующим YAML:

---
title:  Post Excerpt Separator
excerpt_separator: "\n---\n"
---
person Малъ Скрылевъ    schedule 18.01.2015