it-swarm-eu.dev

Jak získám seznam všech dostupných typů obsahu?

Používám Drupal 7.) Pokud volám node_type_get_types(), dostanu stránku a článek. Ale definoval jsem 4 další typy uzlů pomocí polí, která nejsou uvedena.

Jak získám seznam všech dostupných typů obsahu?

6
BetaRide

Děláte to správně: node_type_get_types() vrátí typy obsahu.

To je zvláštní! Vytvořil jsem další typ obsahu news a udělal jsem rychlý test.module s tímto kódem:

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

Při přístupu/testování získám pole se všemi 3 typy obsahu:

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

Za zmínku stojí, že jsme našli nějaký kód v souboru .module, který existoval mimo všechny funkce, a to volalo node_type_get_types () PŘED Drupal byl plně bootstrapped.) To způsobilo, že typy uzlů být uložen do mezipaměti před Drupal byl informován o všech typech, takže následná volání node_type_get_types () vynechala některé typy uzlů. Mohlo by to vysvětlit, co se tady děje.

Podrobnější popis tohoto konceptu je na http://tiger-fish.com/blog/drupal-ubercart-disappearing-content-types (který se zabývá node_get_types () z Drupal 6, ale mechanismy jsou velmi podobné).

6
Chris Cohen

Níže je uveden příklad extrahování názvu a popisu uzlu podle typu obsahu:

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