Drupal 8视图:如何访问内容类型关联段落字段及获取多标题?
嘿,我来帮你搞定Drupal 8视图里访问段落字段和获取所有关联段落标题的事儿~
在Drupal 8视图中访问段落字段&批量获取段落标题
一、通过视图UI界面访问段落字段
这部分完全不用写代码,跟着步骤走就行:
- 打开你要编辑的视图(或者新建一个针对目标内容类型的视图)。
- 点击「添加字段」,在字段列表里找到你那个关联段落的字段(比如你命名的「关联段落集合」),把它添加到视图里。
- 添加后在字段设置里,把「格式化程序」改成「渲染实体」,然后选一个合适的「视图模式」(比如默认视图模式,或者你给段落类型自定义的视图模式),这样就能直接展示段落里的标题、描述等字段了。
- 如果只想单独显示段落的某一个字段(比如只看标题),别直接加段落关联字段,先去「添加关系」,找到你的段落关联字段并添加——添加关系后,再回到「添加字段」列表,就能看到「段落: 标题」(这里的“标题”是你段落类型里的字段名)这类子字段了,直接添加它就行。
二、获取所有关联段落的标题(两种常用场景)
1. 视图UI里批量展示所有标题
要是想把所有关联的段落标题用逗号/换行之类的方式列出来:
- 先按上面的方法添加「段落: 标题」字段,确保已经加好段落关联关系。
- 找到字段设置里的「多个字段设置」,把「显示多个值的方式」改成「简单分隔符」,然后设置你想要的分隔符(比如逗号加空格
,),这样所有关联段落的标题就会整齐地排成一行啦。
2. 自定义代码里获取所有标题(比如视图模板预处理)
如果需要在代码里拿到这些标题做进一步处理(比如在视图模板里自定义输出),可以这么写:
// 假设你的内容实体是$node,段落字段的机器名是field_paragraphs $paragraphs = $node->get('field_paragraphs')->referencedEntities(); $paragraph_titles = []; foreach ($paragraphs as $para) { // 这里的field_title要换成你段落里标题字段的机器名 $title = $para->get('field_title')->value; if (!empty($title)) { $paragraph_titles[] = $title; } } // 把标题数组转成带分隔符的字符串 $all_titles = implode(', ', $paragraph_titles);
小提醒
- 要是在视图里找不到段落的子字段,一定要先检查有没有添加段落关联关系——毕竟段落是关联实体,必须先建立关系才能访问它的内部字段。
- 所有示例里的字段机器名(比如
field_paragraphs、field_title)记得换成你自己实际创建的字段名哦!
内容的提问来源于stack exchange,提问作者user3651844
相关产品推荐
相关产品推荐

