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
を優先します。
完全な語彙ツリー(つまり、すべての用語とそれらの相互関係)をロードするための代替案を受け入れますが、この質問は、将来の世代がgoogleに直接回答する必要があると思います。
実際に使用できます:
$vocab = taxonomy_vocabulary_machine_name_load('my_vocabulary');
$vid = $vocab->vid;
Manuに続いて、コマンドラインでDrushにアクセスできる場合は、次のことができます。
drush php-eval '$ tax = taxonomy_vocabulary_machine_name_load( "main_site_structure"); echo $ tax-> vid;'
データベースの{taxonomy_vocabulary}
テーブルを手動で調べてから、vid
列を確認できます。
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秒。
もちろん、これは必要に応じて調整できます。ちょうどあなたが持っている情報に条件を変更します。
entity_load() を使用して語彙オブジェクトをロードし、$ vidを受け取ります。
トリックは、2番目のパラメーター($ids
)のfalse
を渡し、mysqlデータベースのtaxonomy_vocabulary
テーブルを参照して、条件として渡すことができるものを確認することです。以下のようにmachine_name
を使用することにしました。
$ids = false;
$conditions = array('machine_name' => 'my_vocabulary');
$vocab = entity_load('taxonomy_vocabulary', $ids, $conditions);
より速く/より軽い方法をご存知の場合は、ここでご提供ください:)
これは、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);
これは、Drushを介してすべての語彙IDのリストを表示する最も速い方法でした。
drush SQLC
select * from taxonomy_vocabulary;