it-swarm.it

Come posso ottenere un elenco di tutti i tipi di contenuto disponibili?

Sto usando Drupal 7. Se chiamo node_type_get_types(), ottengo pagina e articolo. Ma ho definito altri 4 tipi di nodo usando campi che non sono elencati.

Come posso ottenere un elenco di tutti i tipi di contenuto disponibili?

6
BetaRide

Lo stai facendo bene: node_type_get_types() restituirà i tipi di contenuto.

È strano! Ho creato un altro tipo di contenuto news e ho creato un rapido test.module con questo codice:

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>';
} 

Quando accedo/collaudo ottengo un array con tutti e 3 i tipi di contenuto:

Array
(
[article] => stdClass Object ()
[news] => stdClass Object ()
[page] => stdClass Object ()
)
7
sergio

Vale la pena notare che abbiamo trovato del codice in un file .module che era ESTERNO da qualsiasi funzione e che si chiamava node_type_get_types () PRIMA Drupal era completamente avviato. Ciò causava la memorizzazione nella cache dei tipi di nodo prima che Drupal venisse a conoscenza di tutti i tipi, quindi le chiamate successive a node_type_get_types () hanno perso alcuni tipi di nodo. Questo potrebbe spiegare cosa sta succedendo qui.

Una descrizione più dettagliata di questo concetto è disponibile su http://tiger-fish.com/blog/drupal-ubercart-disappearing-content-types (che tratta node_get_types () da Drupal 6, ma i meccanismi sono molto simili).

6
Chris Cohen

Di seguito è riportato un esempio dell'estrazione del nome e della descrizione di un nodo in base al tipo di contenuto:

  <?php
  $type = $node->type;
  $types = node_type_get_types();
  $name = $types[$type]->name;
  $description = $types[$type]->description;  
  ?>
0
Astha chauhan