2011-06-05 101 views
0

我已经开始将一个简单的网站迁移到Jekyll。我有一套模板可以让所有的东西都继承,所以我所要做的就是填充实际的内容。但是,在移动内容时,我发现其中的一些需要修改之前由模板指定的标签。使用html模板的正确方法?

例如,我有一个'main'模板,它指定了一切,包括开头的<body>标签。我的一个网站的页面使用了一些JavaScript来修改html5画布,因此其开始标记必须是<body onload="startDrawing();">之类的内容。现在,拥有一个完全独立的模板似乎很愚蠢,其中唯一的变化就是这个单一的标签,但同样愚蠢的是从模板中删除该标签,并且每个页面都手动指定开始的<body>标签。解决这个问题的正确方法是什么?

回答

0

在需要特殊的onload命令的个人页面,添加一行到YAML frontmatter:


--- 
... your existing frontmatter ... 
special_command: onload="startDrawing();" 
--- 

然后,在默认的模板,改变

<body>

<body {{ page.special_command }}>

在具有该YAML frontmatter的页面上,它将呈现内容。在他们的frontmatter中没有那个“special_command”行的页面上,它不会呈现任何内容。您将在这些页面上留下一个额外的空间,但仍然将W3规范作为有效代码传递(或者,至少当我通过代码运行时,它通过了验证器)。

+0

感谢您接受它。 对于未来的读者来说,这很明显,您不需要在那里使用“special_command”作为文本。你可以使用“custom_js”或“onload”或其他任何你喜欢的东西。 – charliepark 2011-07-01 11:07:56

0

我对Jekyll一无所知,但我倾向于为包含画布的页面设置单独的模板。这是一个特殊情况,除非Jekyll能够用一些特殊的语法来解释它,否则我觉得为这种情况设置不同的模板会更加清晰。

相关问题