Программно проверить существование типа контента в Drupal 7.


Иногда перед тем, как создавать программно новый тип контента, требуется проверить — а не существует ли он уже? Чтобы сделать такую проверку, мы можем:

1. получить информацию о всех существующих типах контента
2. проверить, есть ли тип контента с нашим названием
3. если такой тип контента не существует, создать его

Получить информацию о всех типах контента нам поможет функция node_type_get_names(), имеющаяся в Drupal.

При ее вызове, например, так:

1
$types = node_type_get_names();

мы получим массив имеющихся типов контента, где в качестве ключа будет «машинное» имя, а в значении — имя:

1
2
3
4
5
6
7
8
9
Array
(
    [article] => Article
    [page] => Basic page
    [blog] => Blog
    [product] => Product
    [shop] => Shop
    [vacancy] => Vacancy
)

Если нужного нам типа еще нет, создаем его программно:

1
2
3
4
5
6
7
8
9
10
11
12
13
if (!array_key_exists("gallery", $types)) {   
    $type = array(
      'type' => 'gallery',
      'name' => st('gallery'),
      'base' => 'node_content',
      'description' => st('This is our gallery'),
      'custom' => 1,
      'modified' => 1,
      'locked' => 0,
    );
    $type = node_type_set_defaults($type);
    node_type_save($type);
}




Другие посты

Категория: Drupal

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