【问题标题】:How to override a block template created using views如何覆盖使用视图创建的块模板
【发布时间】:2017-05-26 09:16:40
【问题描述】:
在 Drupal 8 上,我试图覆盖使用视图创建的块的模板。到目前为止,我的文件名是 block--views-block--xxx.html.twig,它可以让我访问视图字段。
我必须做类似content.view_build['#rows'].0['#rows'] 的操作来获取非常糟糕的行,但我找不到任何其他方法。我还必须在视图设置中设置“显示内容”。
我根本无法让寻呼机工作。从 Drupal 阅读文档我找不到任何线索。
【问题讨论】:
标签:
php
templates
drupal
twig
drupal-8
【解决方案1】:
打开 twig 调试器(他在检查器工具中显示了现在使用的所有模板)。
在检查器工具中,您会看到如下内容:
- html--internalviewpath.html.twig
- html--node--id.html.twig
- html.html.twig
然后只需创建具有此名称的模板即可添加自定义架构。例如:html--node--id.html.twig。检查你能听到的,你会看到:
- html--internalviewpath.html.twig
+ html--node--id.html.twig (now twig use this template)
- html.html.twig
【解决方案2】:
我认为您应该覆盖视图模板而不是视图块模板。
查看模板 命名约定可以在here 中找到,您可以使用的变量在here 中列出。您现在可以将分页器、标题、行和其他视图元素放在模板的不同部分中。
如果您需要覆盖视图行的内容,则需要根据您在视图中显示内容的方式采取措施。
如果您使用内容的预告视图,您可以覆盖内容预告模板,如“node--content_type--teaser.html.twig”,或者如果您使用视图中的字段,则必须覆盖每个字段的字段模板。