Программное создание ноды в Drupal 7.


Для того, чтобы создать программно новую ноду в Drupal 7 нам требуется создать новый тип контента (допустим, что мы хотим создать свой пользовательский тип ноды), поля (fields) для данного типа контента и уже затем саму ноду.

1. Создаем программно новый тип контента.

1
2
3
4
5
6
7
8
9
10
11
$type = array(
      'type' => 'Blog',
      'name' => st('blog'),
      'base' => 'node_content',
      'description' => st('Это наш блог'),
      'custom' => 1,
      'modified' => 1,
      'locked' => 0,
    );
$type = node_type_set_defaults($type);
node_type_save($type);

2. Задаем поле для нашего типа контента.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
field_create_field(array(
      'field_name' => 'post_content',
      'type' => 'Text',
      'cardinality' => 1,
      'settings' => array(),
      'entity_types' => array('node'),
    ));
 
field_create_instance(array(
      'field_name' => 'post_content',
      'entity_type' => 'node',
      'bundle' => 'blog',
      'label' => t('Text for post'),
      'description' => t('Введите текст для вашего поста'),
      'widget' => array(
          'type' => 'text_textarea',
          'weight' => 0,
          'settings' => array('size' => 50),
      ),
      'display' => array(
        'default' => array(
          'label' => 'above',
          'settings' => array(),
          'weight' => 1,
        ),
        'teaser' => array(
          'label' => 'above',
          'settings' => array(),
          'type' => 'hidden',
        ),
      ),
      'required' => TRUE,
));

3. Создаем ноду

1
2
3
4
5
6
7
8
9
10
11
$node = new stdClass();
$node->type = 'blog';
$node->title = ' Заголовок поста';
$node->language = LANGUAGE_NONE;
$node->body[LANGUAGE_NONE][0]['value'] = 'Текст нашего поста';
$node->body[LANGUAGE_NONE][0]['summary'] = 'Анонс';
$node->body[LANGUAGE_NONE][0]['format'] = 'filtered_html';
$node->uid = 1;
$node->status = 1;
$node->promote = 1;
node_save($node);

Таким образом, мы создали тип контента «блог», создали текстовое поле для него «post_content» и создали одну ноду для данного типа.

Другие посты

Категория: Drupal

Оставить комментарий


Яндекс.Метрика