我正在制作一个自定义主题并且用Google搜索了一整天,但找不到我的问题的答案:
如何打印出一个cck list字段的键而不是它的标签?
我认为这是通过字段api访问字段的正确方法,对吧? 所以我试试
$output = field_view_field('node', $node, 'field_list');
print render($output);
这似乎是获取键|标签对的标签值的方法。但即使我将显示选项格式设置为'key' - 它也只打印标签值。我做错了什么?
我知道有其他选项可以渲染密钥,但是如何使用字段api?
答案 0 :(得分: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];
答案 1 :(得分:1)
这是类似的方式。此示例适用于具有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
我希望这会有所帮助。