我即将在modular page中构建grav主题(使用twig作为模板引擎)。
默认情况下,模块化主题至少包含两个twig模板文件:一个提供包含头部的页面框架,另一个提供内容模块标记的页面框架。 Grav的standard theme提供了这些模板的示例:
如您所见,模块(示例)没有head
或javascripts
块来将javascripts添加到html头部。 (这甚至不可能,因为典型的模块化页面由多个模块组成。因此,如果两个不同的模块尝试更改javascripts
块,则最后一个模块将覆盖第一个模块所做的更改。会导致意想不到的结果。)
但是,我需要在模块中向页面的头部添加一些javascript代码。我想到了一个解决方案,并且有想法将javascript代码作为属性添加到存在的对象#34;网站范围内,即pages object。
这引出了我的问题:
如何使用twig语法向现有对象添加属性?
除此之外,我还想知道您是否可以想出为什么这个解决方案可能无法正常工作的任何原因。但是如果你帮我解释语法,我也可以尝试一下......
答案 0 :(得分:0)
不应在Twig模板中操作对象的状态。视图应该输出已提供给它的数据。
尝试更改javascripts块,最后一个块会覆盖第一个所做的更改,这会导致意外的结果
有关如何让多个块将内容附加到块而不是覆盖它的说明,请参阅此答案here。您可以简单地使用'extra_scripts'块或类似的东西,然后根据所描述的链接将特定模块的任何所需javascript附加到该块。基本上,您需要使用{{ parent() }}
来确保内容包含在父