2013-10-02 57 views
3

我正在將博客移動到Jekyll,並且我想提供RSS源。我需要排除一些與javascript相關的功能,例如幻燈片,從RSS內容。有沒有辦法告訴某個帖子(或帖子中的{% include %})是否將其插入index.html文件或feed.xml文件中?Jekyll:將變量從索引傳遞到帖子

有了很大的簡化,這裏就是我想怎麼看:

的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-01-random-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.htmlfeed.xml的YAML前物質的include_slideshow變量不可用_posts/2013年10月1日 - 隨機post.html。有沒有不同的方式來完成這一點?

我通過GitHub頁面部署,所以Jekyll擴展不是一個選項。

回答

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!