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


24

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?) Của từ vựng như có thể thấy trong từ vựng 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 có lẽ chức năng này không chấp nhận số máy. $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 cần được trả lời trực tiếp cho các thế hệ tương lai với google.


chỉ là một mô-đun đoán nhưng phát?
Jeremy Pháp

Câu trả lời:



10

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

woa, không bao giờ mong đợi một giải pháp drush :) cảm ơn vì đã nói (và mở rộng) câu hỏi và câu trả lời này
electblake

1

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 nhỏ là truyền vào falsecác tham số thứ 2 (nghĩa là $ids) và sau đó tham chiếu taxonomy_vocabularybả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_namenhư 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 một cách nhanh hơn / nhẹ hơn thì hãy cung cấp nó ở đây :)


1
Sử dụng EntityFieldQuery. $ điều kiện không được chấp nhận, và hạn chế hơn.
Bojan Zivanovic

và vì vậy họ là :) Bạn có muốn gửi câu trả lời đầy đủ không? Nếu không tôi đoán tôi sẽ gửi một cái gì đó ở đây để hoàn thành / đóng câu hỏi này.
electblake

1

Bạn có thể sử dụng kiểm tra thủ công {taxonomy_vocabulary}bảng trong cơ sở dữ liệu và sau đó kiểm tra vidcột.


1

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ó.


0

Đ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

Đâ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, gõ
    chọn * từ phân loại từ vựng;
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.