web-dev-qa-db-ja.com

ボキャブラリーID($ vid)はどこにありますか?

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に直接回答する必要があると思います。

23
electblake

実際に使用できます:

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

Manuに続いて、コマンドラインでDrushにアクセスできる場合は、次のことができます。

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

データベースの{taxonomy_vocabulary}テーブルを手動で調べてから、vid列を確認できます。

1
sumaiya

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秒。

もちろん、これは必要に応じて調整できます。ちょうどあなたが持っている情報に条件を変更します。

1
ryanka

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

より速く/より軽い方法をご存知の場合は、ここでご提供ください:)

1
electblake

これは、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
Roy Segall

これは、Drushを介してすべての語彙IDのリストを表示する最も速い方法でした。

  1. Drushコマンドを使用してデータベースに接続します
    drush SQLC
  2. Mysqlプロンプトで、と入力します。
    select * from taxonomy_vocabulary;
0
peezy