Javascript getBlock('meta')在DocPad中是如何工作的?

Javascript getBlock('meta')在DocPad中是如何工作的?,javascript,node.js,docpad,static-site,Javascript,Node.js,Docpad,Static Site,我正在将一个网站从另一个站点生成器移动到另一个站点生成器,并试图理解getBlock'meta'特性。弄清楚getBlock'scripts'和getBlock'styles'非常简单,因为我只需要将单个资源位置传递给数组中的.add方法,每个位置占用一个空间。另一方面,生成元标记似乎要稍微复杂一些,因为每个标记有两个组件:名称和值 我的问题是,如何将元标记名和值传递给getBlock'meta'。添加以便它为我创建一些元标记 另外,我注意到getBlock'meta'默认创建一个标记: <

我正在将一个网站从另一个站点生成器移动到另一个站点生成器,并试图理解getBlock'meta'特性。弄清楚getBlock'scripts'和getBlock'styles'非常简单,因为我只需要将单个资源位置传递给数组中的.add方法,每个位置占用一个空间。另一方面,生成元标记似乎要稍微复杂一些,因为每个标记有两个组件:名称和值

我的问题是,如何将元标记名和值传递给getBlock'meta'。添加以便它为我创建一些元标记

另外,我注意到getBlock'meta'默认创建一个标记:

<meta http-equiv="X-Powered-By" content="DocPad"/>
我不喜欢在我的标记中有。我完全支持将这个很棒的DocPad项目归因于它,但是我更喜欢以不同的方式在不同的位置进行。如何防止生成该标记

谢谢。

算了吧

手写你自己的元数据。在您的布局中

只要你不需要特定页面的元你是好去

如果您需要它,您可以随时更改DocPad的源代码。

忘了它吧

手写你自己的元数据。在您的布局中

只要你不需要特定页面的元你是好去


如果您需要它,您可以随时更改DocPad的源代码。

在我看来,DocPad对getBlock'meta'的参数没有任何作用。添加。我查看了源代码,其他块都在add上生成了一些特定于块的HTML,而元块没有

我猜docpad会自动从文档中收集元数据,并以其他方式将它们插入元块


我认为目前向站点添加元数据的唯一可能方法是使用文档或docpad.coffee文件。

在我看来,docpad对getBlock'meta.add的参数没有任何作用。我查看了源代码,其他块都在add上生成了一些特定于块的HTML,而元块没有

我猜docpad会自动从文档中收集元数据,并以其他方式将它们插入元块


我认为目前向站点添加元数据的唯一可能方法是使用文档或docpad.coffee文件。

@przemo_li和@Rafael Epplee是正确的,按照标准安装,元数据块只会输出这些数据,如果您有时间提交一个pull请求,通过docpad配置选项使由meta元素供电的请求成为可选的,我很乐意接受它

然而,这不仅仅是为了输出由元素驱动的元数据,而是为了使插件能够注入它们自己的元数据-我还不知道有任何插件可以这样做,但是@Rafael的例子可以给出一个很好的例子-在这里,您通过文档的元数据定义元数据,然后使用插件将它们注入到元块中,允许您轻松获得特定于页面的元数据。另一个例子可能是根据文档的编码适当地注入字符集/编码元元素,而不是始终使用标准utf8编码的布局


因此,虽然它现在没有那么有用,但总有一天插件可能会需要它。

@przemo_li和@Rafael Epplee是对的,按照标准安装,如果您有时间通过docpad配置选项提交pull请求,使由meta元素供电成为可选的,meta块将只输出它——我很乐意接受它

然而,这不仅仅是为了输出由元素驱动的元数据,而是为了使插件能够注入它们自己的元数据-我还不知道有任何插件可以这样做,但是@Rafael的例子可以给出一个很好的例子-在这里,您通过文档的元数据定义元数据,然后使用插件将它们注入到元块中,允许您轻松获得特定于页面的元数据。另一个例子可能是根据文档的编码适当地注入字符集/编码元元素,而不是始终使用标准utf8编码的布局


因此,虽然它现在没有那么有用,但总有一天插件可能会需要它。

我的答案已经很晚了,但到目前为止,Docpad是v6.78.4,它提供了与事件挂钩的方法,这正是我们所需要的

首先,Docpad meta是一个出人意料的平静,它基本上是一个项目数组,使用.toHTML方法将它们连接到一个字符串中。它之所以称为块,是因为它位于可以在其他地方修改的不同结构中,并且有一组单独的方法,例如getBlock和setBlock

是可以触发用户代码的预定义点。我建议对元对象使用generateBefore,以便在生成任何内容之前进行设置:

# Define the DocPad Configuration
docpadConfig = {
    # ...
    events:
        generateBefore: () ->
            @docpad.getBlock('meta').add('<meta name="viewport" content="width=device-width,initial-scale=1"/>')
}

您可以通过在docpad.coffee文件中添加poweredByDocPad:false来禁用它

我的答案很晚了,但现在Docpad是v6.78.4和pro vides是一种与事件挂钩的方式,这正是我们所需要的

首先,Docpad meta是一个出人意料的平静,它基本上是一个项目数组,使用.toHTML方法将它们连接到一个字符串中。它之所以称为块,是因为它位于可以在其他地方修改的不同结构中,并且有一组单独的方法,例如getBlock和setBlock

是可以触发用户代码的预定义点。我建议对元对象使用generateBefore,以便在生成任何内容之前进行设置:

# Define the DocPad Configuration
docpadConfig = {
    # ...
    events:
        generateBefore: () ->
            @docpad.getBlock('meta').add('<meta name="viewport" content="width=device-width,initial-scale=1"/>')
}

您可以通过在docpad.coffee文件中添加poweredByDocPad:false来禁用它

在引导框架中,我发现了这一行:好像插入那一行只是添加了特定于DocPad的元标记……在引导框架中,我发现了这一行:好像插入那一行只是添加了特定于DocPad的元标记……在我看来,DocPad对getBlock'meta'的参数没有任何作用。添加。我查看了源代码,其他块都在add上生成了一些特定于块的HTML,而元块没有。看起来像个虫子,肯定能用。你能在github问题跟踪器上提交一个问题并发布链接吗?干杯。目前我甚至不知道它应该如何工作:P你是说预期的行为是将给定的要添加的参数注入元数据?在我看来,docpad对给定给getBlock'meta'的参数没有任何作用。添加。我查看了源代码,其他块都在add上生成了一些特定于块的HTML,而元块没有。看起来像个虫子,肯定能用。你能在github问题跟踪器上提交一个问题并发布链接吗?干杯。目前我甚至不知道它应该如何工作:P你的意思是预期的行为将是添加的参数被注入元数据?你能通过@Rafael链接到这个例子吗?我好像找不到它。谢谢。你能通过@Rafael链接到这个例子吗?我好像找不到它。谢谢