在哪里可以找到词汇表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的后代直接回答这个问题。


只是一个猜测,但开发模块?
杰里米·法兰西

Answers:



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。$ conditions已弃用,并且受到更多限制。
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.0000089989963531494秒增加到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中选择*;
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.