Drupal CCK поле выбора имен вариантов, где они находятся? - PullRequest
2 голосов
/ 15 февраля 2011

У меня есть пользовательский тип контента, в котором есть поле с названием «location», представляющее собой длинный список выбора (около 100 элементов). Я хочу получить массив всех местоположений, с которыми связан контент. Числовое значение этого поля хранится в content_type_ [my_content_type], но я не могу найти нигде в базе данных, где хранятся имена значений. Я надеюсь, что это не слишком смущает - просто чтобы прояснить, я хочу сделать что-то вроде этого:

SELECT DISTINCT(field_location_value) FROM content_type_[my_content_type]

, а затем

SELECT field_location_name_or_something FROM where_on_earth_are_the_names_stored

и затем сделайте что-нибудь с двумя массивами, чтобы найти имена, которые я хочу.

Может кто-нибудь помочь?

Большое спасибо. Drupal 6, кстати.

Ответы [ 4 ]

4 голосов
/ 15 февраля 2011

Если вы имеете в виду, выберите поле списка CCK :
Получить все местоположение, связанное с текущим узлом (часть содержимого?):

$node = node_load('YOUR content ID');
print_r($node->field_location); // $node->field_location - this will array of values.

Получить все значения этого поля (определенные в «Разрешенных значениях»):

  $content_field = content_fields('field_location');
  $allowed_values = content_allowed_values($content_field); // array of values
1 голос
/ 23 ноября 2011

Я нашел это после долгих испытаний и скорбей в таблице базы данных content_node_field_instance под полем настроек виджета поля.

0 голосов
/ 03 августа 2012

В Drupal 7, если у вас есть поле типа List (текст), я написал следующую функцию для возврата массива опций:

function get_drupal_select_options($field_name) {
    $options = unserialize(db_query("SELECT c.data
                FROM field_config_instance i
                INNER JOIN field_config c ON c.id = i.field_id
                WHERE i.field_name = :fieldname", array(':fieldname'=>$field_name))->fetchField());
    return $options['settings']['allowed_values'];
}
0 голосов
/ 19 апреля 2011

Этот фрагмент кода Drupal 6 извлечет параметры значения вашего поля cck и поместит их в переменную $ allow_values ​​в виде массива.Замените YOUR_CCK_FIELD_NAME на имя вашего поля cck (имя, а не метка) <br /> $cck_field_name = 'YOUR_CCK_FIELD_NAME';<br /> $cck_field = db_fetch_object(db_query("SELECT global_settings FROM {content_node_field} WHERE field_name = '%s'", $cck_field_name));<br /> $cck_field_global_settings = unserialize($cck_field->global_settings);<br /> $allowed_values = explode("\r\n", trim($cck_field_global_settings['allowed_values'], "\r\n"));<br />

...