2011-02-15 125 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']; 
}