Drupal 9 Twig 獲取field值速查表

Drupal 9 Twig cheat sheet about getting field values

在Drupal 8 和 Drupal 9 的 twig 模板開發中,常常會需要輸出指定的field,本文列出常見類型的field取值方法,以便查詢。

1. 一般類型 General

Field type How to get value Note
Boolean {{ content.field_name[0] }} 值為“On”或“Off”的label
Boolean {{ content.field_name['#items'][0].value }} 值為1或0
Date {{ content.field_name[0] }} 值為套用time.html.twig模板的完整日期時間html片段
Date {{ content.field_name[0]['#text] }} 值為完整日期時間格式的純文本
Timestamp {{ content.field_name[0] }} 值為完整日期時間格式的純文本
Timestamp {{ content.field_name['#items'][0].value }} 值為時間戳數字
Email {{ content.field_name[0] }} 值為純文本格式
link {{ content.field_name[0]['#url'] }} 值為連結URL
link {{ content.field_name[0]['#title'] }} 值為連結文字

2. 數字類型 Number

Field type How to get value Note
Number (float) {{ content.field_name[0] }} 顯示有前綴和後綴並number_decimal格式化
Number (float) {{ content.field_name['#items'][0].value }} 顯示未經格式化的浮點數
Number (integer) {{ content.field_name[0] }} 顯示有前綴和後綴
Number (integer) {{ content.field_name['#items'][0].value }} 顯示未經格式化的整數
Number (decimal) {{ content.field_name[0] }} 顯示有前綴和後綴
Number (decimal) {{ content.field_name['#items'][0].value }} 顯示未經格式化的小數

3. 文字類型 Text

Field type How to get value Note
Text (formatted) {{ content.field_name[0] }} 帶格式的文本
Text (formatted) {{ content.field_name[0]['#text'] }} 未經html轉化的文本
Text (formatted) {{ content.field_name['#items'][0].value|striptags }} 純文本
Text (formatted, long) {{ content.field_name[0] }} 帶格式的文本
Text (formatted, long) {{ content.field_name[0]['#text'] }} 未經html轉化的文本
Text (formatted, long) {{ content.field_name['#items'][0].value|striptags }} 純文本
Text (formatted, long with summary) {{ content.field_name[0] }} 帶格式的文本
Text (formatted, long with summary) {{ content.field_name[0]['#text'] }} 未經html轉化的文本
Text (formatted, long with summary) {{ content.field_name['#items'][0].value|striptags }} 純文本
Text (formatted, long with summary) {{ content.field_name['#items'][0].summary }} 摘要
Text (plain) {{content.field_name.0 }} 純文本
Text (plain, long) {{content.field_name.0 }} 純文本

4. 列表類型 List

Field type How to get value Note
List (float) {{ content.field_name[0] }} 在管理介面Manage Display中設置該欄位顯示值key或標籤label
List (float) {{ content.field_name['#items'][0].value }} 顯示值的key
List (integer) {{ content.field_name[0] }} 在管理介面Manage Display中設置該欄位顯示值key或標籤label
List (integer) {{ content.field_name['#items'][0].value }} 顯示值的key
List (text) {{ content.field_name[0] }} 在管理介面Manage Display中設置該欄位顯示值key或標籤label
List (text) {{ content.field_name['#items'][0].value }} 顯示值的key

5. 參照類型 Reference

Field type How to get value Note
Fiel {{ content.field_name[0] }} 值為套用file-link.html.twig模板的html片段
File {{ file_url(content.field_name[0]['#file'].uri.value) }} 檔案連結
File {{ content.field_name[0]['#description'] }} 檔案描述
Image {{ file_url(content.field_name[0]['#item'].entity.uri.value) }} 圖片連結
Image {{ content.field_name[0]['#item'].value.alt }} 圖片alt文字
Image {{ content.field_name[0]['#item'].value.title }} 圖片title文字
Image {{ content.field_name[0]['#item'].value.height }} 圖片設置的高度
Image {{ content.field_name[0]['#item'].value.width }} 圖片設置的寬度
Taxonomy Term {{ content.field_taxonomy[0]['#options'].entity.id }} 在Manage display中將format設為Label時顯示term id
Taxonomy Term {{ content.field_name[0]['#title'] }} 在Manage display中將format設為Label顯示term label
Taxonomy Term {{ content.field_name[0]['#url'] }} 在Manage display中將format設為Label顯示term path

6. 媒體類型 Media

啟用Media模組後出的media field。

Field type How to get value Note
Media (image) {{ file_url(content.field_name[0]['#media'].field_media_image.entity.uri.value) }} 圖片連結
Media (remote Video) {{ content.field_name }} 站外視頻iframe
Media (video) {{file_url(content.field_name[0]['#media'].field_media_video_file.entity.uri.value) }} 影片連結
Media (document) {{ file_url(content.field_name[0]['#media'].field_media_document.entity.uri.value) }} 檔案連結

延伸閱讀:

Y Cheung
Blogger, Programer & Traveler.
Shanghai