web-dev-qa-db-fra.com

Comment obtenir une liste de tous les types de contenu disponibles?

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?

6
BetaRide

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 ()
)
7
sergio

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).

6
Chris Cohen

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;  
  ?>
0
Astha chauhan