gpt4 book ai didi

docpad - 如何以编程方式在 Docpad 中以每页为基础添加脚本或样式表

转载 作者:行者123 更新时间:2023-12-01 06:33:35 26 4
gpt4 key购买 nike

如何以编程方式将脚本或样式表标签添加到页面的 YAML 前端(元)中指定的页面?

假设有 src/documents/posts/a.html.eco内容如下:

---
layout: default
scripts: ['a.js']
---

Blog post that requires a special javascript

和布局 src/layouts/default.html.eco内容如下:
...
@getBlock('scripts').toHTML()
</body>
...
posts/a.html 的最终结果应该:
...
<!-- some extra stuff that was added when processing script tag -->
<script scr="/scripts/a.js"></script>
</body>
...

..而其他页面不应引用 /scripts/a.js
标签上面的注释只是为了表明在注入(inject)标签之前可能需要进行一些处理。

我尝试了许多使用不同的方法 eventsdocpad.coffee文件(包括从 docpad-plugin-livereload 插件中获取的方法),但每次我遇到同样的问题 - 脚本标签被应用到所有页面而不是被应用到 a.html只要。这是我的尝试之一:
renderDocument: (opts) ->
{extension,templateData,file,content} = opts
if extension == 'html' and scripts = file.get('scripts')
if typeof scripts != 'undefined'
scripts.forEach (scriptName) ->
@docpad.getBlock('scripts').add('<!-- custom script tag here -->')

我也试过 render事件, populateCollections (没有记录,但我在 docpad-plugin-livereload 插件中找到它)甚至 extendTemplateData事件,到目前为止没有运气。

我知道有一种方法可以在布局内执行此操作:
@getBlock('scripts').add(@document.scripts or [])

..这完全没问题,它确实可以按预期工作,但是它似乎没有为我提供足够的自由来在将内容注入(inject)页面之前对其进行操作..即使有可能我也不喜欢拥有的想法布局模板中有一些繁重的逻辑,我希望它在插件/docpad.coffee 中

希望这是有道理的

最佳答案

试试 templateData.getBlock('scripts').add而不是 docpad.getBlock('scripts').add

关于docpad - 如何以编程方式在 Docpad 中以每页为基础添加脚本或样式表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17605108/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com