我正在将网站从其他网站生成器移动到DocPad,并尝试了解 getBlock('meta')功能。弄清楚 getBlock('scripts')和 getBlock('styles')非常简单,因为我只需要将各个资源位置传递给 .add 数组中的方法,每个位置占用一个空格。另一方面,生成元标记似乎必须稍微复杂一些,因为每个标记有两个组件:名称和值。
我的问题是,如何将元标记名称和值传递给 getBlock('meta')。add()以便为我创建一些元标记?
另外,我注意到默认情况下 getBlock('meta')会创建一个标记:
<meta http-equiv="X-Powered-By" content="DocPad"/>
我不喜欢我的标记。我全都是为了归功于令人敬畏的DocPad项目,但我更喜欢以不同的方式和不同的位置。如何防止生成该标记?
谢谢。
答案 0 :(得分:2)
@przemo_li和@Rafael Epplee是正确的,通过标准安装,元块只会输出,如果你有时间通过docpad配置选项提交拉动请求以使该动力元元素可选 - 我我乐意接受它。
然而,重点不仅仅是输出被供电的元素,而是让插件能够注入自己的元数据 - 我还没有发现任何插件,但是一个很好的例子可以从@ Rafael的例子中给出 - 你通过你的文档的元数据定义元元素,然后使用插件将它们注入元块,允许你轻松地获得页面特定的元数据。另一个例子可能是根据文档的编码适当地注入charset / encoding元素,而不是总是使用标准utf8编码的布局。
因此,虽然它现在没那么有用,但有一天插件可能需要它。
答案 1 :(得分:1)
忘了它。
手写你自己的元。在你的布局中。
只要您不需要特定于页面的元,就可以了。
如果你需要它,你可以随时更改DocPad的源代码。
答案 2 :(得分:1)
在我看来,docpad对getBlock('meta').add()
的参数没有任何作用。我查看了源代码,其他块都在add()上生成了一些特定于块的HTML,而meta块却没有。
我的猜测是,docpad会自动从文档中收集元数据,并以其他方式将它们插入到元块中。
我认为目前向您的网站添加元数据的唯一可能方法是使用文档或docpad.coffee文件。
答案 3 :(得分:0)
我的答案很晚,但截至目前,Docpad是v6.78.4并提供了连接事件的方法,这正是我们所需要的。
首先,Docpad meta 是一个令人惊讶的平静MetaCollection,它基本上是一个项目数组,使用.toHTML()
方法将它们连接成一个字符串。它被称为块,因为它驻留在可以在别处修改的不同结构中,并且具有一组单独的方法,例如getBlock()
和setBlock()
Events是预定义的点,可以触发用户代码。我建议使用generateBefore作为元数据,以便在生成任何内容之前设置它:
# Define the DocPad Configuration
docpadConfig = {
# ...
events:
generateBefore: () ->
@docpad.getBlock('meta').add('<meta name="viewport" content="width=device-width,initial-scale=1"/>')
}
关于第二个问题,generator
中有条件地添加了元DocPad.prototype.resetCollections
(我猜这是问题中的X-Powered-By):
if (docpad.getConfig().poweredByDocPad !== false) {
meta.add("<meta name=\"generator\" content=\"DocPad v" + (docpad.getVersion()) + "\" />");
}
您可以在poweredByDocPad: false
文件中添加docpad.coffee
来停用它。