我想在博客文章中包含HTML代码段并将代码放在一个位置。在仔细阅读框架后,我已经能够实现这一目标:
source
_includes
custom
foo.html
{% include custom/foo.html %}
我的问题:有没有办法可以将参数传递给foo.html?我只是想传递一些字符串并以格式化的方式输出它们,并且无法弄清楚我缺少的是什么。
感谢您的时间。
答案 0 :(得分:1)
你做不到。但你可以使用其他一些方式,就像主题做的那样。
首先,在custom/foo.html
中设置所需的格式化样式,例如,我在customfooter
中添加source/_includes/custom/footer.html
:
<p>
Copyright © {{ site.time | date: "%Y" }} - {{ site.author }} -
<span class="credit">Powered by <a href="http://octopress.org">Octopress</a></span>
{{ site:customfooter }}
</p>
然后,在_config.yml
中设置要设置的字符串:
url: http://fann.im
customfooter: My custom footer, bala bala.
希望这会对你有所帮助。
答案 1 :(得分:1)
没有办法做到这一点因为Jekyll是静态的。根据定义,您可以从一个文件传递到另一个文件的任何内容都是已知值,因为它必须在站点生成时定义。由于你不能传递动态值,这种间接是没有意义的,因为你可以把静态值放在原来的位置。
如果您有例如生成10个大部分相似但略有不同的输出块,然后使用插件完成使用变量隔离这些更改的任务。这为您提供了一些灵活性,同时仍将值放入模板中以供使用。
这是一个液体标签示例,它抽象生成带有特定hrefs的twitter bootstrap导航标签。
module Jekyll
class XmlJsonTabsTag < Liquid::Tag
def initialize(tag_name, markup, tokens)
@methodname = markup.strip
super
end
def render(context)
#wondering what this syntax is? google "here document"
<<-HTML
<ul class="nav nav-tabs">
<li class="active">
<a href="##{@methodname}-json" data-toggle="tab">JSON</a>
</li>
<li>
<a href="##{@methodname}-xml" data-toggle="tab">XML</a>
</li>
</ul>
HTML
end
end
end
Liquid::Template.register_tag('xmljsontabs', Jekyll::XmlJsonTabsTag)
将值用于模板中液体标签中的@methodname
:
{% xmljsontabs foo %}
输出类似
的内容<ul class="nav nav-tabs">
<li class="active">
<a href="#foo-json" data-toggle="tab">JSON</a>
</li>
<li>
<a href="#foo-xml" data-toggle="tab">XML</a>
</li>
</ul>