ボキャブラリー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

完全な語彙ツリー(つまり、すべての用語と相互の関係)を読み込む代替案を受け入れますが、この質問は、将来の世代のGoogleに直接答えられるべきだと思います。


単なる推測ですが、開発モジュールですか?
ジェレミーフランス語

回答:



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、2番目のパラメーター($ids)にtaxonomy_vocabulary渡してから、mysqlデータベースのテーブルを参照して、条件として渡すことができるものを確認することです。machine_name以下のように使用することにしました:

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

あなたがより速く/より軽い方法を知っているなら、ここでそれを提供してください:)


1
EntityFieldQueryを使用します。$ conditionsは廃止され、より制限されています。
ボヤンジバノビッチ

そして、彼らは:)完全な答えを提出する気になりますか?そうでない場合は、この質問を完了する/閉じるためにここに何かを提出します。
-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コマンドを使用してデータベースに接続する
    sqlcを削除
  2. mysqlプロンプトで、次のように入力します
    *からtaxonomy_vocabularyを選択します。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.