2013-04-12 1 views
1

Я работаю на собственную тему и гугл всего день, но не может найти ответ на мой вопрос:Друпало 7: как получить доступ к ключевому списку-поля вместо его этикетки (поле API)

хау распечатать ключ поля списка cck вместо метки?

Я думаю, что это правильный способ доступа к полям через поле api, правильно? поэтому я стараюсь

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

что, кажется, способ получить значение метки ключа | пары меток. но даже если я установил формат опций отображения в «key» - он только печатает значение метки. Что я делаю не так?

Я знаю, что есть другие варианты визуализации ключа, но как это возможно, используя поле api?

ответ

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]; 
+0

так много спасибо! – user2275302

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 

Надеюсь, это поможет.

 Смежные вопросы

  • Нет связанных вопросов^_^