it-swarm-id.com

Bagaimana saya bisa mendapatkan daftar semua jenis konten yang tersedia?

Saya menggunakan Drupal 7. Jika saya memanggil node_type_get_types(), saya mendapatkan halaman dan artikel. Tetapi saya telah mendefinisikan 4 jenis simpul lain menggunakan bidang yang tidak terdaftar.

Bagaimana saya bisa mendapatkan daftar semua jenis konten yang tersedia?

6
BetaRide

Anda melakukannya dengan benar: node_type_get_types() akan mengembalikan jenis konten.

Itu aneh! Saya membuat tipe konten lain berita dan saya membuat test.module cepat dengan kode ini:

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

Ketika saya mengakses/menguji saya mendapatkan sebuah array dengan ketiga tipe konten:

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

Mungkin perlu dicatat bahwa kami menemukan beberapa kode dalam file .module yang ada di luar fungsi apa pun, dan ini memanggil node_type_get_types () SEBELUM Drupal sepenuhnya bootstrap. Hal ini menyebabkan jenis simpul menjadi di-cache sebelum Drupal dibuat sadar akan semua jenis, jadi panggilan selanjutnya ke node_type_get_types () melewatkan beberapa jenis simpul. Ini mungkin menjelaskan apa yang terjadi di sini.

Penulisan konsep ini lebih rinci ada di http://tiger-fish.com/blog/drupal-ubercart-disappearing-content-types (yang membahas node_get_types () dari Drupal 6, tetapi mekanismenya sangat mirip).

6
Chris Cohen

Di bawah ini adalah contoh mengekstraksi nama dan deskripsi untuk sebuah simpul sesuai jenis konten:

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