【问题标题】:drupal 7: how to access list-field's key instead of its label (field api)drupal 7:如何访问列表字段的键而不是其标签(字段 api)
【发布时间】:2013-04-12 16:56:33
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

    标签: drupal drupal-7 drupal-theming


    【解决方案1】:

    您可以使用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];
    

    【讨论】:

      【解决方案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
      

      我希望这会有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-11-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-12-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多