开发者

Drupal CCK field select option names, where are they?

I have a custom content type which has a field called "location" which is a long select list (100 or so items). I want to get an array of all locations which have a piece of content associated with them. The numeric value of this field is stored in content_type_[my_content_type], but I can't find anywhere in the database where the name of the values are stored. I hope that's not too confusing - just to be clear, I want to do something like this:

SELECT DISTINCT(field_location_value) FROM content_type_[my_content_type]

and then

SELECT field_location_name_or_something FROM where_on_earth_are_the_names_stored

and then do som开发者_如何学JAVAething with the two arrays to find the names I want.

Can anyone help?

Thanks a lot. Drupal 6, by the way.


If you mean select list field of CCK:
Get all location associated with current node (piece of content?):

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

Get all values of that field (defined in "Allowed values"):

  $content_field = content_fields('field_location');
  $allowed_values = content_allowed_values($content_field); // array of values


I found this, after much trial and tribulation, in the database table content_node_field_instance, under the field's widget settings field.


This Drupal 6 code snipped will retrieve your cck field value options and put them in the $allowed_values variable as an array. Replace 'YOUR_CCK_FIELD_NAME' with your cck field name (name, not label)
$cck_field_name = 'YOUR_CCK_FIELD_NAME';
$cck_field = db_fetch_object(db_query("SELECT global_settings FROM {content_node_field} WHERE field_name = '%s'", $cck_field_name));
$cck_field_global_settings = unserialize($cck_field->global_settings);
$allowed_values = explode("\r\n", trim($cck_field_global_settings['allowed_values'], "\r\n"));


In Drupal 7 if you have a field of type List (text) then I have written the following function to return an array of options:

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

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜