Drupal 10视图自定义文本字段如何显示翻译后的字段标签?
解决Drupal 10 Views自定义文本中显示翻译后字段标签的方法
方法一:使用Token模块(推荐)
确保已启用Token模块(Drupal核心自带,未启用可从扩展页面开启)。
在Views自定义文本字段中,把硬编码标签替换为对应字段的Token:
Location:替换为[node:field_region:label]Path Length:替换为[node:field_path_length:label]Activities:替换为[node:field_nature_activities:label]
修改后的代码如下:
<div class="col-sm-12 teaser-wrapper"> <div class="teaser-image">{{ field_image }}</div> <div class="teaser-header">{{ title }}</div> <div class="teaser-text">{{ body }}</div> <div class="row teaser-field"> <div class="col-xs-12 col-sm-12 teaser-field"> <span class="lbl">[node:field_region:label]: </span> <span class="val">{{ field_region }}</span> </div> <div class="col-xs-12 col-sm-12 teaser-field"> <span class="lbl">[node:field_path_length:label]: </span> <span class="val">{{ field_path_length }}</span> </div> <div class="col-xs-12 col-sm-12 teaser-field"> <span class="lbl">[node:field_nature_activities:label]: </span> <span class="val">{{ field_nature_activities }}</span> </div> </div> </div>保存视图设置,切换语言即可看到对应翻译的字段标签。
方法二:不依赖额外模块,通过Views字段变量调用
在Views的「字段」列表中,添加需要显示标签的字段(如
field_region、field_path_length等)。对每个添加的字段进行设置:
- 勾选「排除显示」(字段内容不会单独展示,仅用于自定义文本调用)。
- 将「标签」设置为默认(使用内容类型中已翻译的字段标签)。
在自定义文本字段中,用
{{ field_region__label }}这类变量替换硬编码标签:Location:替换为{{ field_region__label }}Path Length:替换为{{ field_path_length__label }}Activities:替换为{{ field_nature_activities__label }}
修改后的代码示例:
<div class="col-sm-12 teaser-wrapper"> <div class="teaser-image">{{ field_image }}</div> <div class="teaser-header">{{ title }}</div> <div class="teaser-text">{{ body }}</div> <div class="row teaser-field"> <div class="col-xs-12 col-sm-12 teaser-field"> <span class="lbl">{{ field_region__label }}: </span> <span class="val">{{ field_region }}</span> </div> <div class="col-xs-12 col-sm-12 teaser-field"> <span class="lbl">{{ field_path_length__label }}: </span> <span class="val">{{ field_path_length }}</span> </div> <div class="col-xs-12 col-sm-12 teaser-field"> <span class="lbl">{{ field_nature_activities__label }}: </span> <span class="val">{{ field_nature_activities }}</span> </div> </div> </div>保存视图,切换语言就能看到翻译后的标签。
方法三:使用预处理函数(适合开发者)
如果需要更灵活的控制,可通过主题预处理函数修改Views变量:
- 在主题的
.theme文件中添加代码:function YOUR_THEME_preprocess_views_view_field(&$variables) { $field = $variables['field']; // 针对目标视图和字段添加翻译标签变量 if ($variables['view']->id() == 'YOUR_VIEW_ID' && in_array($field->field, ['field_region', 'field_path_length', 'field_nature_activities'])) { $variables[$field->field . '_translated_label'] = $field->label(); } } - 替换
YOUR_THEME为主题机器名,YOUR_VIEW_ID为目标视图的机器名。 - 在自定义文本中用
{{ field_region_translated_label }}这类变量调用翻译标签。
内容的提问来源于stack exchange,提问作者thanili
相关产品推荐
相关产品推荐

