2

我正在研究一个自定义主题并用谷歌搜索了一整天,但找不到我的问题的答案:

如何打印出 cck 列表字段的键而不是其标签?

我认为这是通过字段 api 访问字段的正确方法,对吗?所以我尝试

$output = field_view_field('node', $node, 'field_list');
print render($output);

这似乎是获取键|标签对的标签值的方法。但即使我将显示选项格式设置为“键” - 它也只会打印标签值。我究竟做错了什么?

我知道还有其他选项可以呈现密钥,但是如何使用字段 api 呢?

4

2 回答 2

4

您可以使用以下方法获取字段值本身(这将是允许的值数组键)field_get_items()

$items = field_get_items('node', $node, 'field_list');
$key = $items[0]['value'];

如果您需要在任何时候再次匹配它们,您可以从字段元数据中获取完整的键/值列表:

$info = field_info_field('field_list');
$values = $info['settings']['allowed_values'];
$label = $values[$key];
于 2013-04-13T14:22:13.740 回答
2

这里有一个类似的方法。此示例适用于具有 ISO 代码的国家/地区列表。这个想法是呈现被选择的国家名称,因为转储只返回密钥(在这种情况下是 iso 代码)

后端选择列表的格式:

AR|Argentina
US|United States

假设您在后端选择了美国,并且您想在节点模板上打印国家名称:

$country_field = field_info_field('field_country_iso');
$country_iso = $node->field_country_iso[LANGUAGE_NONE][0]['value'];
$country_name = $country_field['settings']['allowed_values'][$country_iso];

然后

print $country_name; // This will return United States, not US code

我希望这有帮助。

于 2017-04-06T18:00:39.973 回答