如何在 Drupal 8 中使用 Twig 获取 field_image 路径
Posted
技术标签:
【中文标题】如何在 Drupal 8 中使用 Twig 获取 field_image 路径【英文标题】:How to get the field_image path with Twig in Drupal 8 【发布时间】:2016-05-05 13:59:58 【问题描述】:为了制作动画滑块,我在自己的模板中覆盖了一个字段视图模板文件,名为:views-view-fields--slider.html.twig
在该文件中,我可以访问字段数组以打印出我的内容类型 slide 中的所有字段。
问题是我需要获取图像文件的路径而不是图像本身,因为我需要 CSS 背景图像样式的路径。
以下不起作用:
<div class="jumbotron " ref="" style="background-image:url(?????);">
file_url(fields.field_image.entity.fileuri)
</div>
我尝试了所有我在 Google 上找到的好东西:
fields.field_image.entity.uri
fields.field_image.entity.uri.value
fields.field_image.entity.url
fields.field_image.entity.url.value
等等
有人知道在 Drupal 8 中是如何完成的吗?
【问题讨论】:
【参考方案1】:由于您处于未格式化的视图中,您应该已经可以使用 row.content
单独访问您的内容类型的每个字段幻灯片,因此您必须这样做:
file_url(row.content.field_image.entity.fileuri)
【讨论】:
对不起我的错误。上面的 jumbotron div 在views-view-fields--slider.html.twig 内,我还有一个周围的文件views-view-unformatted--slider.html.twig 正在打印row.content。 row.content.field_image.entity.fileuri 还是空的 :( 好的,那你可以试试 file_url(fields.field_image['#items'].entity.fileuri)
对不起,输出还是空的。 /【参考方案2】:
试试 file_url(row._entity.field_image.entity.uri.value)
。
它对我有用。
<div style="background-image:url( file_url(row._entity.field_image.entity.uri.value) );"></div>
【讨论】:
【参考方案3】:我找到了这个模块:image_url_formatter,所以在查看界面,我可以用它来格式化我的图像文件作为路径。
它工作得很好,但是如果我打开了 twig 调试,它就不起作用了,因为它会输出调试注释。我还不知道怎么解决。
我用fields.field_image.content显示路径,不知道是不是rignt。
没有额外模块的解决方案:
在你看来:
1.将您的图片添加到高级/关系中
2.然后在filed部分,更改为File Group,你可以看到URI字段,添加它,并确保你选中“显示文件下载URI”
3.在树枝模板中添加新字段: field.uri.content
完成!
【讨论】:
感谢您提及此模块。我也不确定为什么需要一个额外的模块,应该有一个 entity.fileuri 或类似的东西。 content.field_image['#items'].entity.uri.value 在“节点”模板中工作,在“视图”模板中,字段没有“实体”属性 感谢关系解决方案有效,只有路径周围的树枝调试输出会破坏我的内联背景图像 css 行以上是关于如何在 Drupal 8 中使用 Twig 获取 field_image 路径的主要内容,如果未能解决你的问题,请参考以下文章
Drupal 8添加javascript并使用自定义模块在钩子中传递数据
php 基于内容类型的Drupal 8自定义页面模板(建议)(页面 - [content-type] .html.twig)