it-swarm-vi.com

Làm cách nào tôi có thể nhận được danh sách tất cả các loại nội dung có sẵn?

Tôi đang sử dụng Drupal 7. Nếu tôi gọi node_type_get_types(), tôi nhận được trang và bài viết. Nhưng tôi đã xác định 4 loại nút khác bằng cách sử dụng các trường không được liệt kê.

Làm cách nào tôi có thể nhận được danh sách tất cả các loại nội dung có sẵn?

6
BetaRide

Bạn đang làm đúng: node_type_get_types() sẽ trả về các loại nội dung.

Thật ki quặc! Tôi đã tạo một loại nội dung khác tin tức và tôi đã thực hiện một test.module nhanh với mã này:

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

Khi tôi truy cập/kiểm tra, tôi nhận được một mảng với cả 3 loại nội dung:

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

Có thể đáng lưu ý rằng chúng tôi đã tìm thấy một số mã trong tệp .module tồn tại BÊN NGOÀI bất kỳ chức năng nào và điều này đang gọi node_type_get_types () BEFORE Drupal đã được khởi động hoàn toàn. được lưu vào bộ đệm trước Drupal đã được biết về tất cả các loại, vì vậy các cuộc gọi tiếp theo đến node_type_get_types () đã bỏ lỡ một số loại nút. Điều này có thể giải thích những gì đang xảy ra ở đây.

Một bài viết chi tiết hơn về khái niệm này có tại http://tiger-fish.com/blog/drupal-ubercart-disappear-content-types (liên quan đến node_get_types () từ Drupal 6, nhưng các cơ chế rất giống nhau).

6
Chris Cohen

Dưới đây là một ví dụ về trích xuất tên và mô tả cho một nút theo loại nội dung:

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