J'utilise Drupal 7. Si j'appelle node_type_get_types()
, j'obtiens page et article. Mais j'ai défini 4 autres types de nœuds à l'aide de champs qui ne sont pas répertoriés.
Comment obtenir une liste de tous les types de contenu disponibles?
Vous le faites correctement: node_type_get_types()
renverra les types de contenu.
C'est étrange! J'ai créé un autre type de contenu news et j'ai fait un test.module rapide avec ce code:
function test_menu() {
$items = array();
$items['testing'] = array(
'title' => 'Testing',
'page callback' => 'page_test',
'access arguments' => array('access content'),
'type' => MENU_CALLBACK
);
return $items;
}
function page_test() {
return '<pre>' . print_r(node_type_get_types(), true) . '</pre>';
}
Lorsque j'accède/teste, j'obtiens un tableau avec les 3 types de contenu:
Array
(
[article] => stdClass Object ()
[news] => stdClass Object ()
[page] => stdClass Object ()
)
Il peut être intéressant de noter que nous avons trouvé du code dans un fichier .module qui existait EN DEHORS de toutes les fonctions, et cela appelait node_type_get_types () AVANT Drupal a été complètement amorcé. Cela causait les types de nœuds à être mis en cache avant Drupal a été informé de tous les types, donc les appels suivants à node_type_get_types () ont manqué certains types de nœuds. Cela pourrait expliquer ce qui se passe ici.
Une description plus détaillée de ce concept est disponible sur http://tiger-fish.com/blog/drupal-ubercart-disappearing-content-types (qui traite de node_get_types () from Drupal 6, mais les mécanismes sont très similaires).
Voici un exemple d'extraction du nom et de la description d'un nœud selon le type de contenu:
<?php
$type = $node->type;
$types = node_type_get_types();
$name = $types[$type]->name;
$description = $types[$type]->description;
?>