你能为Jekyll添加自定义html标签吗?

时间:2012-07-03 18:54:33

标签: html perl templates markdown jekyll

我想使用Jekyll生成一些模板页面,然后Perl脚本会使用HTML::Template Perl模块。是否有可能让Jekyll单独留下HTML :: Template的标签并完全忽略它们?

例如:

<tr>             <td>Name:               </td>  <td><TMPL_VAR NAME=NAME> </td> </tr>
<tr class="alt"> <td>Email:              </td>  <td><TMPL_VAR NAME=EMAIL></td> </tr>

我希望页面呈现为单独保留<TMPL_VAR NAME=...>位的.html文件,稍后在后端Perl脚本上将使用此文件作为模板文件并填写<TMPL_VAR NAME=...>位的位置。

2 个答案:

答案 0 :(得分:2)

您可以通过创建扩展名为.html的源页面来保留HTML(标准和Perl HTML :: Template集)。当你这样做时,jekyll(至少0.11.2)不会弄乱源HTML。您仍然可以使用YAML前端物质并放入液体标签。例如,这将作为扩展名为.html的源文件。

---
layout: default
title: This is the post title
categories: ["miscellaneous"]
---

{{ page.title }}

<table>
<tr>             <td>Name:  </td>  <td><TMPL_VAR NAME=NAME> </td> </tr>
<tr class="alt"> <td>Email: </td>  <td><TMPL_VAR NAME=EMAIL></td> </tr>
</table>

从那里,您可以完整地传递HTML :: Template标签进行二次处理。

答案 1 :(得分:1)

使用我从another question学到的东西,我问过&amp;在stackoverflow上回答,这些似乎是你的3个选项。其中一个@Alan W. Smith在回答这个问题时偶然发现了。

选项#1: - HTML::Template有一个名为vanguard_compatibility_mode的开关...来自perldocs

  

vanguard_compatibility_mode - 如果设置为1,模块将会看到s   除了标准语法之外,看起来像%NAME%。同时设置die_on_bad_params =&gt; 0。   如果您不在Vanguard Media尝试使用旧的格式模板,请不要担心   这个。默认为0。

选项#2 - HTML::Template还支持在评论块中嵌入模板标记,以便您的代码符合HTML标准,如下所示:<!-- TMPL_NAME NAME=FNAME -->

再次来自perldocs:

  

如果您对有效的HTML感兴趣,并希望您的模板符合有效   HTML语法,您可以选择以HTML注释的形式键入模板标签。这个   可能对想要验证其模板的HTML语法的HTML作者有用   在HTML :: Template处理之前,或者使用DTD-savvy编辑工具的人。

     

<!-- TMPL_VAR NAME=PARAM1 -->

在我为构造函数设置die_on_bad_params => 0之前,第二个选项最初对我不起作用。

选项#3:Jekyll文件的名称从.md(降价)更改为.html(vanilla html)。这个选项围绕着Jekyll使用ReXML的XML解析器。我不确定,但是如果您从使用ReXML切换到Nokogiri,我认为这也会绕过这个问题,但我不完全确定您甚至可以重新配置Jekyll这种方式。

结论:最终我认为选项#2 是最好用的,因为它不会限制您在.md文件中使用{{1}}文件的能力{3}}