我正在将博客移至Jekyll,我想提供RSS Feed。我需要排除一些与javascript相关的功能,例如幻灯片,来自RSS内容。有没有办法告诉帖子(或帖子中的{% include %}
)是否将其插入index.html
文件或feed.xml
文件中?
通过简化,我希望看起来如此:
的index.html
---
layout: page
title: Index
include_slideshow: true
---
{% for post in paginator.posts %}
{{ post.content }}
{% endfor %}
feed.xml
---
layout: nil
include_slideshow: false
---
{% for post in site.posts limit:10 %}
{{ post.content }}
{% endfor %}
_posts / 2013年10月1日 - 随机post.html
---
layout: post
title: Random Post
---
This is a random post.
{% if include_slideshow %}
INSERT SLIDESHOW HERE.
{% else %}
NOTHING TO SEE HERE, MOVE ALONG.
{% endif %}
问题是来自 index.html 和 feed.xml 的YAML前端的include_slideshow
变量不可用于 _posts / 2013年10月1日 - 随机post.html 即可。有没有不同的方法来实现这一目标?
我正在通过GitHub页面部署,因此Jekyll扩展不是一种选择。
答案 0 :(得分:1)
您可以使用一些拆分过滤器。您不需要识别正在渲染的布局,而是在必要时操纵内容本身。
此示例适用于您的内容的多个幻灯片块,由html评论正确识别:
index.html - 过滤幻灯片显示内容
---
layout: page
title: Index
---
{% for post in paginator.posts %}
{%capture post_content %}
{% assign slideshows = post.content | split: "<!-- SLIDESHOW_CONTENT -->" %}
{% for slide in slideshows %}
{% if forloop.first %}
{{ slide }}
{% else %}
{% assign after_slide = slide | split: "<!-- END_SLIDESHOW_CONTENT -->" %}
{{ after_slide[1] }}
{% endif %}
{% endfor %}
{%endcapture%}
{{ post_content }}
{% endfor %}
feed.xml - 也过滤幻灯片内容
---
layout: nil
---
{% for post in site.posts limit:10 %}
{%capture post_content %}
{% assign slideshows = post.content | split: "<!-- SLIDESHOW_CONTENT -->" %}
{% for slide in slideshows %}
{% if forloop.first %}
{{ slide }}
{% else %}
{% assign after_slide = slide | split: "<!-- END_SLIDESHOW_CONTENT -->" %}
{{ after_slide[1] }}
{% endif %}
{% endfor %}
{%endcapture%}
<content type="html">{{ post_content | xml_escape }}</content>
{% endfor %}
post.html (您的帖子布局) - 请注意您无需更改帖子模板,因为它会显示幻灯片
---
layout: nil
---
<article>
...
<section>{{ content }}</section>
...
</article>
<强> _posts / 2013年10月1日 - 随机post.html 强>
---
layout: post
title: Random Post
---
<!-- SLIDESHOW_CONTENT -->
<p>INSERT SLIDESHOW 0 HERE</p>
<!-- END_SLIDESHOW_CONTENT -->
This is a random post.
Before slideshow 1!
<!-- SLIDESHOW_CONTENT -->
<p>INSERT SLIDESHOW 1 HERE</p>
<!-- END_SLIDESHOW_CONTENT -->
After slideshow 1!
Before slideshow 2!
<!-- SLIDESHOW_CONTENT -->
<p>INSERT SLIDESHOW 2 HERE</p>
<!-- END_SLIDESHOW_CONTENT -->
After slideshow 2!