Как получить полный список зарегистрированных типов публикаций в Drupal 7. Задача типична для бек-енда при создании форм страниц настроек. Потому покажу в статье пример реализации поля для формы с выбором типов публикаций.
В API Drupal существует специальная функция для извлечения списка типов публикаций: node_type_get_types(). Также можно обратиться к таблице node_type, где перечислены зарегистрированные типы (но это не drupal-way).
Функция возвращает массив объектов вида:
| 
					 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20  | 
						Array ( [article] => stdClass Object   (       [type] => article       [name] => Article       [base] => node_content       [module] => node       [description] => Use articles for time-sensitive content like news, press releases or blog posts.       [help] =>        [has_title] => 1       [title_label] => Title       [custom] => 1       [modified] => 1       [locked] => 0       [disabled] => 0       [orig_type] => article       [disabled_changed] =>    ) ...  | 
					
Форма с полем выбора типов публикаций
Объявление формы с набором чекбоксов + кнопка сохранения данных.
| 
					 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18  | 
						function MYMODULE_settings_form($form, &$form_state) {   $form = array();   $type_list = _MYMODULE_get_nodetype_list();   $form['nodes'] = array(     '#type' => 'checkboxes',     '#options' => $type_list,     '#title' => t('Content types'),     '#default_value' => variable_get('mymodule_nodes', '') ? explode(',', variable_get('mymodule_nodes', '')) : array(),   );   $form['submit'] = array(     '#type' => "submit",     '#value' => t('Save'),   );   return $form; }  | 
					
Сохранение данных формы
| 
					 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17  | 
						/**  * Implements submit form hook (save settings).  */ function MYMODULE_settings_form_submit(&$form, &$form_state) {   $values = $form_state['values'];   $types = array();   foreach ($values['nodes'] as $value) {     if ($value) {       $types[] = $value;     }   }   variable_set('mymodule_nodes', implode(",", $types));     drupal_set_message(t('Settings were saved successfully.')); }  | 
					
Функция хелпер, читающая список типов нод.
| 
					 1 2 3 4 5 6 7 8 9 10 11 12 13  | 
						/**  * Retrieve the node types list  *  * @return array  */ function _MYMODULE_get_nodetype_list() {   $types = node_type_get_types();   $list = array();   foreach ($types as $type => $data) {     $list[$type] = check_plain($data->name);   }   return $list; }  |