【问题标题】:Can you add custom html tags to Jekyll?你能在 Jekyll 中添加自定义的 html 标签吗?
【发布时间】:2012-07-04 06:20:01
【问题描述】:

我想使用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>

我希望将页面呈现为 .html 文件,并单独保留 &lt;TMPL_VAR NAME=...&gt; 位,稍后在后端 Perl 脚​​本将使用此文件作为模板文件并填充&lt;TMPL_VAR NAME=...&gt; 位是。

【问题讨论】:

  • 你们能解释一下为什么你对这个问题投了反对票吗?

标签: html perl templates markdown jekyll


【解决方案1】:

您可以通过创建带有 .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 标签完好无损地传递给您的二次处理。

【讨论】:

    【解决方案2】:

    使用我从 another question 学到的知识,我在 stackoverflow 上提问并回答了这些问题,这似乎是您的 3 个选项。其中一个@Alan W. Smith 在回答这个问题时也偶然发现。

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

    vanguard_compatibility_mode - 如果设置为 1,模块将期望看到 除了标准语法外,它看起来像 %NAME%。还设置 die_on_bad_params => 0。 如果您不在 Vanguard Media 尝试使用旧格式模板,请不要担心 这个。默认为 0。

    选项 #2 - HTML::Template 还支持在注释块中嵌入模板标签,以便您的代码符合 HTML,例如:&lt;!-- TMPL_NAME NAME=FNAME --&gt;

    再次来自 perldocs:

    如果您热衷于有效 HTML,并且希望您的模板符合有效的 HTML 语法,您可以选择以 HTML cmets 的形式键入模板标签。这 可能对想要验证其模板的 HTML 语法的 HTML 作者有用 在 HTML::Template 处理之前,或使用 DTD 精通编辑工具的人。

    &lt;!-- TMPL_VAR NAME=PARAM1 --&gt;

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-09-27
      • 1970-01-01
      • 2019-11-25
      • 1970-01-01
      • 1970-01-01
      • 2011-05-05
      相关资源
      最近更新 更多