[Решено] OG как программно создать тип группы?

Главные вкладки

Комментарии

Аватар пользователя ustes_yr ustes_yr 30 мая 2011 в 15:32

Тоже интересно.
Тип создается так

$myog = array(
    'type' => 'myog',
    'name' => $t('моя группа'),
    'base' => 'node_content',
    'description' => $t('моя группа'),
    'body_label' => $t('Описание')
  );

  $content_type = node_type_set_defaults($gazer);
  node_add_body_field($content_type);
  node_type_save($content_type);
  $body_instance = field_info_instance('node', 'body', 'myog');
  field_update_instance($body_instance);

Аватар пользователя olegmif olegmif 30 мая 2011 в 15:44

вроде получилось со вставкой

variable_set('og_group_type_myog', 'group');

просто подсмотрел, что OG перехватывает node_type_save, в нем проверяет значение этой переменной
(а также og_group_content_type_' . $bundle_name), если установлено то создает соответствующее поле
и сбрасывает переменную.

поскольку в Drupal новичок, то не уверен, что это корректно... но работает, однако

Аватар пользователя ustes_yr ustes_yr 30 мая 2011 в 15:51
/**
 * Add group and group content fields to new content types.
 *
 * param $bundle_name
 *   The content type name.
 */

function og_node_type_save(myog) {
  if (variable_get('og_group_type_' . $bundle_name, 'omitted') == 'group') {
    og_create_field(OG_GROUP_FIELD,'node', $bundle_name);
    // Delete the variable, as we will rely on the presence of th field.
    variable_del('og_group_type_' . $bundle_name);
  }
  if (variable_get('og_group_content_type_' . $bundle_name, 'omitted') == 'og_content') {
    og_create_field(OG_AUDIENCE_FIELD,'node', $bundle_name);
    // Delete the variable, as we will rely on the presence of th field.
    variable_del('og_group_content_type_' . $bundle_name);
  }
}

Вот нарыл
попробуйте og_node_type_save($bundle_name)

Аватар пользователя olegmif olegmif 30 мая 2011 в 15:51

спасибо, это как раз оно - проверяет значение 'og_group_type_' . $bundle_name, так что думаю ничего страшного если просто установить эту переменную перед вызовом node_type_save