просто подсмотрел, что OG перехватывает node_type_save, в нем проверяет значение этой переменной
(а также og_group_content_type_' . $bundle_name), если установлено то создает соответствующее поле
и сбрасывает переменную.
поскольку в Drupal новичок, то не уверен, что это корректно... но работает, однако
/**
* 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)
спасибо, это как раз оно - проверяет значение 'og_group_type_' . $bundle_name, так что думаю ничего страшного если просто установить эту переменную перед вызовом node_type_save
Комментарии
Тоже интересно.
Тип создается так
'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);
вроде получилось со вставкой
variable_set('og_group_type_myog', 'group');
просто подсмотрел, что OG перехватывает node_type_save, в нем проверяет значение этой переменной
(а также og_group_content_type_' . $bundle_name), если установлено то создает соответствующее поле
и сбрасывает переменную.
поскольку в Drupal новичок, то не уверен, что это корректно... но работает, однако
* 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)
спасибо, это как раз оно - проверяет значение 'og_group_type_' . $bundle_name, так что думаю ничего страшного если просто установить эту переменную перед вызовом node_type_save