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