Drupal CCK字段选择选项名称,它们在哪里?

时间:2011-02-15 14:06:13

标签: drupal drupal-6 drupal-modules

我有一个自定义内容类型,其中有一个名为“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 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

经过多次试验和磨难,我在数据库表content_node_field_instance中,在字段的窗口小部件设置字段下找到了这个。

答案 2 :(得分:0)

这个破解的Drupal 6代码将检索你的cck字段值选项并将它们作为数组放入$ allowed_values变量中。将“YOUR_CCK_FIELD_NAME”替换为您的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"));

答案 3 :(得分:0)

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