如何替换Jekyll中的最后一个<p>标签

时间:2015-10-19 09:47:52

标签: jekyll

在我的index.html页面中,我想追加&#39; ...&#39; post.excerpt之后。理想化的方法是使用代码{{ post.excerpt |replace_last:'</p>', '……</p>' }},但似乎没有定义过滤器replace_last。那我怎么能在jekyll做到这一点?谢谢。

3 个答案:

答案 0 :(得分:5)

在我看来,更好的方法是CSS:

after

这增加了&#34; ..&#34;到摘录div中的最后一段<div class="excerpt"> <p>Normal paragraph.</p> <p>Paragraph with trailing ellipsis.</p> </div> psuedo-element。

slice

如果您需要使用Jekyll,可以使用</p>过滤器切断尾随的append'...</p>'过滤器,以便将{{1}}添加到最后。如果您的摘录不以段落结尾,则无效。

答案 1 :(得分:1)

我更喜欢先从post.excerpt剥离p标签,然后追加&#39; ...&#39;。 这样,我们甚至可以添加&#34;阅读更多&#34; p内的链接。

<p>
  {{ post.excerpt | strip_html | append: "..." }}

  {% if post.excerpt != post.content %}
    <a href="{{ post.url | prepend: site.baseurl }}"> >></a>
  {% endif %}
</p>

答案 2 :(得分:1)

我找到了一种解决方法,可以通过“阅读更多”链接实现省略号。 truncate过滤器和设置excerpt_separator都有缺点,但是,通过split自己实现它很简单。在您的index.html迭代帖子的地方使用它:

{{ post.content | split:'<!--read more-->' | first | append: "…"}} <a href="{{ site.baseurl }}{{ post.url }}">Read more</a>

您只需要将<!--read more-->放在您的博客文章中您想截断的任何地方,并替换为“ ... Read More”链接即可。