Drupal-获取自定义分类字段

时间:2018-08-20 08:18:06

标签: arrays drupal-8 drupal-taxonomy

我正在尝试将一个自定义字段分配给分类法。我已经尝试过了:

-rw-rw-r-- 1 singh singh 0 Aug 20 04:47 sample 32_bill 4524242424.pdf
-rw-rw-r-- 1 singh singh 0 Aug 20 04:08 sample32_bill4524242424.pdf
-rw-rw-r-- 1 singh singh 0 Aug 20 04:08 sample32_bill452424.pdf
-rw-rw-r-- 1 singh singh 0 Aug 20 04:08 sample32_bill45.pdf

$ terms现在存储词汇表“ zeme”中的所有术语。问题是当我打印此变量时,它没有显示我需要获取的自定义字段。 知道如何获取该自定义字段吗? 我的代码如下:

$vid = 'zeme';
$terms =\Drupal::entityTypeManager()->getStorage('taxonomy_term')->loadTree($vid);

2 个答案:

答案 0 :(得分:2)

这是loadTree function的官方文档: TermStorage::loadTree

使用loadTree函数时,它只会为您提供最少的数据,以节省执行时间。您会看到默认情况下将$load_entities参数设置为false

  

bool $ load_entities :如果为TRUE,则将在   术语对象。否则,它们是直接从中查询的部分对象   {taxonomy_term_data}表可节省执行时间和内存   列出大量术语时的消耗。默认为FALSE。

因此,如果要获取每个分类术语的所有数据,则必须将$load_entities设置为true

$vid = 'zeme';
$terms =\Drupal::entityTypeManager()
    ->getStorage('taxonomy_term')
    ->loadTree($vid, 0, null, true);

答案 1 :(得分:0)

通过这篇帖子Get custom fields assigned to taxonomy找到了这种方式:

$contact_countries = \Drupal::service('entity_type.manager')->getStorage("taxonomy_term")->loadTree('contact_country');

$terms = array();

foreach($contact_countries as $contact_countrie) {
    $terms[] = array(
        'contact_country' => $contact_countrie->name,
        'contact_phone' => \Drupal::entityTypeManager()->getStorage('taxonomy_term')->load($contact_countrie->tid)->get('field_phone')->getValue()[0]['value'],
        'contact_flag' => \Drupal::entityTypeManager()->getStorage('taxonomy_term')->load($contact_countrie->tid)->get('field_category_flag')->entity->uri->value,
    );
}

非常有用!