2012-03-24 76 views
2

我有画廊是基于我的twitter引导CSS文件。我最终使用了内联HTML + Markdown的Kramdown,因为我无法按照我希望的方式在Liquid中工作。如何使用jekyll&liquid更有效地创建此画廊?

通过Kramdown解析的降价模板看起来是这样的:

--- 
layout: gallery 
title: Gallery 
group: dropnavigation 
root: .\ 
--- 

{% include root %} 

{::options parse_block_html="true" /} 


<li class="span3"> 
<div class="thumbnail"> 
[![image](http://placehold.it/260x180)](#) 

#####Thumbnail label 

Thumbnail caption right here... 
</div> 
</li> 

<li class="span3"> 
<div class="thumbnail"> 
[![image](http://placehold.it/260x180)](#) 

#####Thumbnail label 

Thumbnail caption right here... 
</div> 
</li> 

画廊布局是这样的:

--- 
layout: core 
--- 
{% include root %} 

<div class="page-header"> 
    <h1 class="well">{{ page.title }} <small>{{ site.tagline }}</small></h1> 
</div> 


<ul class="thumbnails"> 
{{ content }} 
</ul> 

有没有办法做到这一点,这样我只包括图像标签和标签,然后通过模板获取ul,li和div类的样式?也许通过某种循环?

回答

5

是的。您可以通过定义一个包含每张图片信息的list来循环。

--- 
layout: gallery 
title: Gallery 
group: dropnavigation 
root: .\ 

pictures: 
    - url: http://placehold.it/260x180 
    label: Label 1 
    caption: Caption 1 
    - url: http://placehold.it/260x180 
    label: Label 2 
    caption: Caption 2 
    - url: http://placehold.it/260x180 
    label: Label 3 
    caption: Caption 3 
--- 

{% include root %} 

{::options parse_block_html="true" /} 

{% for pic in page.pictures %} 
<li class="span3"> 
    <div class="thumbnail"> 
    [![image]({{ pic.url }})](#) 

    ##### {{ pic.label }} 

    {{ pic.caption }} 
    </div> 
</li> 
{% endfor %} 

(这甚至可以通过仅仅有YAML头与列表完成,循环等加工的画廊布局完成,所以你只需要改变pictures列表中有多个画廊(这将意味着,标题和标签都必须用HTML编写的,而不是降价)编辑:例如,每个库文件是像这样:

--- 
layout: gallery 
title: Gallery 
group: dropnavigation 
root: .\ 

pictures: 
    - url: http://placehold.it/260x180 
    label: Label 1 
    caption: Caption 1 
    - url: http://placehold.it/260x180 
    label: Label 2 
    caption: Caption 2 
    - url: http://placehold.it/260x180 
    label: Label 3 
    caption: Caption 3 
--- 

和画廊模板的样子:

--- 
layout: core 
--- 
{% include root %} 

<div class="page-header"> 
    <h1 class="well">{{ page.title }} <small>{{ site.tagline }}</small></h1> 
</div> 


<ul class="thumbnails"> 
{% for pic in page.pictures %} 
<li class="span3"> 
    <div class="thumbnail"> 
    <a href="#"><img src="{{ pic.url }}" alt="image" /></a> 
    <h5>{{ pic.label }}</h5> 
    <p>{{ pic.caption }}</p> 
    </div> 
</li> 
{% endfor %} 
</ul> 

+0

谢谢,这是一个很好的解决方案!这是因为液体是模板语言吗?如果我使用不同的模板语言,是否可以在没有YAML题目的情况下执行此操作? – user1026169 2012-03-25 03:01:33

+1

@ user1026169,for循环的语法和标题在YAML中的事实是因为Liquid是模板语言。标题包含有关页面的信息,所以即使在其他模板语言中,仍然需要包含该信息的一些元数据。 – huon 2012-03-25 03:06:21

+0

是的,这是非常有意义的。最后一个问题:如果我使用的是不同的静态网站生成器,模板引擎,甚至布局不合理 - 那么就可以在不依赖元数据的情况下做到这一点? – user1026169 2012-03-25 03:11:23