it-swarm.com.de

Taxonomiebegriffe der angegebenen Sprache abrufen

Ich weiß, dass ich eine Liste der Taxonomie eines Wortschatzes mit bekommen kann

 $terms =  \Drupal::entityManager()->getStorage('taxonomy_term')->loadTree('course_category');

 kint($terms);

aber es gab all diese Vokabeln zurück, ich arbeite an einer mehrsprachigen Site, Ich möchte Begriffe der angegebenen Sprache abrufen.

my Drupal Version ist 8.1.3

3
Yusef

Ich hatte auch einige Probleme beim Drucken von Tags in der aktuellen Sprache im Code. Dies hat funktioniert, um NUR die übersetzten Begriffe eines Wortschatzes zu erhalten:

$vocabulary = 'MY_VOCABULARY_NAME';
$language =  \Drupal::languageManager()->getCurrentLanguage()->getId();
$query = \Drupal::entityQuery('taxonomy_term');
$query->condition('vid', $vocabulary);
$query->sort('weight');
$tids = $query->execute();
$terms = \Drupal\taxonomy\Entity\Term::loadMultiple($tids);
$termList = array();

foreach($terms as $term) {
    if($term->hasTranslation($language)){
        $tid = $term->id();
        $translated_term = \Drupal::service('entity.repository')->getTranslationFromContext($term, $language);
        $termList[$tid] = $translated_term->getName();
    }
}

// To print a list of translated terms. 
foreach($termList as $tid => $name) {
     print $name;
}

Informationen zum Verknüpfen der Tags finden Sie unter https://drupal.stackexchange.com/a/243160/71941

3

Mit der loadByProperties-Methode können Sie alle Entitäten laden, deren Felder bestimmten Werten entsprechen.

Für eine erweiterte Auswahl können Sie den Entitätsabfragedienst verwenden.

\Drupal::entityTypeManager()->getStorage('taxonomy_term')->loadByProperties([
  'vid' => $vid,
  'language' => $language_id
]);
1
Eyal