어휘 ID ($ vid)는 어디에서 찾을 수 있습니까?


24

Drupal 6에서는 / admin의 분류 섹션으로 이동하여 URL에서 $ vid (숫자)를 찾을 수있었습니다.

Drupal 7에서 (실체로 용어를 도입했기 때문에 의심의 여지없이) URL은 더 이상 장황하지 않으며 (일부는 더 깨끗하다고 ​​말할 수 있습니다) 이제는 단어의 기계 이름 (번들 이름?)을 admin/structure/taxonomy/my_vocabulary/edit.

내 최종 게임은 taxonomy_get_tree ($ vid, $ parent, $ max_depth, $ load_entities) 를 사용하여 어휘를로드하고 영광스럽고 다양한 방법으로 작업하지만 아쉽게도이 함수는 machine_name을 허용하지 않지만 숫자를 선호합니다. $vid.

전체 vocab 트리 (즉, 모든 용어와 서로의 관계)를로드 할 수있는 대안을 채택 할 것이지만이 질문은 다음 세대에 Google에 직접 대답해야한다고 생각합니다.


추측하지만 개발 모듈입니까?
Jeremy French

답변:



10

Manu 다음에 명령 행 Drush 액세스 권한이 있으면 다음을 수행 할 수 있습니다.

drush php-eval '$ tax = taxonomy_vocabulary_machine_name_load ( "main_site_structure"); echo $ tax-> vid;'

WOA하는 drush 솔루션을 예상하지 :이 질문 & 답변 spicening (및 확대)에 대한 감사
electblake을

1

entity_load () 를 사용하여 vocab 객체를로드하고 $ vid를받습니다.

트릭은 false두 번째 매개 변수 ( )를 전달한 $ids다음 taxonomy_vocabularymysql 데이터베이스 의 테이블 을 참조하여 조건으로 전달할 수있는 항목을 확인하는 것입니다. machine_name아래에서 볼 수 있듯이 를 사용하기 로 선택했습니다 .

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

더 빠르고 가벼운 방법을 알고 있다면 여기에 제공하십시오 :)


1
EntityFieldQuery를 사용하십시오. $ 조건은 더 이상 사용되지 않으며 더 제한적입니다.
Bojan Zivanovic

그리고 그들은 :) 정답을 제출 케어? 그렇지 않다면이 질문을 완성 / 닫기 위해 여기에 무언가를 제출할 것입니다.
electblake

1

{taxonomy_vocabulary}데이터베이스 에서 테이블을 수동으로 검사 한 다음 vid열 을 확인할 수 있습니다.


1

D7에서

어휘 ID (vid) 만 있으면 기계 이름을 알 수 있습니다.

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

작은 성능 향상 : ~ 0.0036489963531494 초 ~ ~ 0.00030779838562012 초

물론 이것은 필요에 따라 조정될 수 있습니다. 당신이 가진 정보로 조건을 변경하십시오.


0

이것은 엔티티 필드 쿼리를 bojan 언급으로 사용하여로드하는 것입니다.

$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

이것은 Drush를 통해 모든 어휘 ID 목록을 보는 가장 빠른 방법이었습니다.

  1. Drush 명령으로 데이터베이스에 연결
    drush sqlc
  2. mysql 프롬프트에서 다음을 입력하십시오.
    taxonomy_vocabulary에서 *를 선택하십시오.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.