it-swarm-vi.com

Tôi tìm ID từ vựng ($ vid) ở đâu?

Trong Drupal 6 Tôi sẽ đi đến phần phân loại của quản trị viên/quản trị viên của mình và tôi có thể tìm thấy $ vid (số) trong URL.

Trong Drupal 7 (không còn nghi ngờ gì nữa do việc giới thiệu các thuật ngữ dưới dạng thực thể), URL không còn dài dòng nữa (và một số người sẽ nói sạch hơn) vì giờ đây nó hiển thị tên máy (tên gói?) từ vựng như có thể thấy trong admin/structure/taxonomy/my_vocabulary/edit.

Trò chơi cuối cùng của tôi là sử dụng taxonomy_get_tree ($ vid, $ Parent, $ max_depth, $ load_entities) để tải từ vựng của tôi và làm việc với nó theo những cách tuyệt vời và phong phú, nhưng than ôi chức năng này không chấp nhận một tên máy nhưng có lẽ thích số $vid.

Tôi sẽ chấp nhận các lựa chọn thay thế để tải một cây vocab đầy đủ (nghĩa là tất cả các điều khoản và mối quan hệ của chúng với nhau), nhưng tôi nghĩ rằng câu hỏi này nên được trả lời trực tiếp cho các thế hệ tương lai để google.

23
electblake

Trên thực tế bạn có thể sử dụng:

$vocab = taxonomy_vocabulary_machine_name_load('my_vocabulary');
$vid = $vocab->vid;
33
Manu

Theo Manu, nếu bạn có quyền truy cập dòng lệnh Drush, bạn có thể làm:

drush php-eval '$ tax = taxonomy_vocellect_machine_name_load ("main_site_itectture"); echo $ tax-> vid;'
10
Robin van Emden

Bạn có thể sử dụng kiểm tra thủ công {taxonomy_vocabulary} bảng trong cơ sở dữ liệu, rồi kiểm tra cột vid.

1
sumaiya

Trong D7

Nếu tất cả những gì bạn cần là ID từ vựng (vid) và bạn biết tên máy, bạn có thể sử dụng:

$query = db_select('taxonomy_vocabulary', 'tv');
$query->fields('tv', array('vid'));
$query->condition('tv.machine_name', __VOCAB_MACHINE_NAME, '=');
$result = $query->execute();
$data = $result->fetchAssoc();
$vid = $data['vid'];

Tăng hiệu suất nhỏ: ~ 0,0036489963531494 giây lên ~ 0,00030779838562012 giây.

Điều này, tất nhiên, có thể được điều chỉnh khi cần thiết. Chỉ cần thay đổi điều kiện để thông tin bạn có.

1
ryanka

Tôi đang sử dụng entity_load () để tải đối tượng vocab của mình và nhận được $ vid.

Mẹo là truyền vào false cho các tham số thứ 2 (đó là $ids) và sau đó tham chiếu taxonomy_vocabulary bảng trong cơ sở dữ liệu mysql của bạn để xem những gì bạn có thể vượt qua trong điều kiện. Tôi đã chọn sử dụng machine_name như bạn có thể thấy dưới đây:

$ids = false;
$conditions = array('machine_name' => 'my_vocabulary');
$vocab = entity_load('taxonomy_vocabulary', $ids, $conditions);

Nếu bạn biết cách nhanh hơn/nhẹ hơn thì vui lòng cung cấp tại đây :)

1
electblake

Điều này là để tải bằng cách sử dụng truy vấn trường thực thể như bojan đề cập:

$query = new entityFieldQuery();
$result = $query
  ->entityCondition('entity_type', 'taxonomy_vocabulary')
  ->propertyCondition('machine_name', 'my_vocabulary')
  ->execute();

if (empty($result['taxonomy_vocabulary'])) {
  return;
}

$vocabularies = taxonomy_vocabulary_load_multiple(array_keys($result['taxonomy_vocabulary']));
dpm($vocabularies);
0
Roy Segall

Đây là cách nhanh nhất để tôi xem danh sách tất cả các ID từ vựng thông qua Drush:

  1. Kết nối với cơ sở dữ liệu của bạn bằng lệnh Drush [.__.]
    sqlc drush
  2. Tại Dấu nhắc mysql, nhập [.__.]
    chọn * từ phân loại từ vựng;
0
peezy