2011-02-15 65 views
2

我有一个自定义内容类型,它有一个名为“位置”的字段,它是一个长选择列表(100左右的项目)。我想获得一个包含与它们相关的一段内容的所有位置的数组。此字段的数字值存储在content_type_ [my_content_type]中,但我无法在数据库中的任何位置找到存储值的名称。我希望这不是太混乱了 - 只是要清楚,我想要做这样的事情:Drupal CCK字段选择选项名称,它们在哪里?

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

如果你的意思是选择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 
+0

谢谢。我正在寻找允许的值。出于好奇,但是,你是否知道数据库中这些信息的存储位置? – Will 2011-02-17 16:27:17

0

这Drupal的6码剪断将检索您的CCK字段值选项,并把它们放在$ allowed_values变量数组。与CCK字段名(名称,而不是标签)
$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"));

1

替换“YOUR_CCK_FIELD_NAME”我发现这一点,很多考验和磨难之后,在数据库表content_node_field_instance,场下的窗口小部件设置字段。

0

在Drupal 7的,如果你有一个类型列表(文本)的领域,然后我写了下面的函数返回一组选项:

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']; 
}