tid에서 분류 용어 이름을 얻는 방법은 무엇입니까?


32

우리의 많은 것들이 uris와 같은 형식을 가지고 site/taxonomy/XX있습니다. 여기서 XX는 정수입니다.

" 이름에서 TID를 얻는 방법 "과 같은 많은 질문을 찾았 지만 에서 이름을 가져오고 싶습니다 TID. 사이트 이동 경로 스크립트를 작성하려고하는데 " home > term" 와 같은 흔적이있는 경우를 제외하고 모든 것이 훌륭 합니다. 대신 " home > <TERM NAME>" 와 같이 사용하고 싶습니다 .

어떻게해야합니까?


좋은 답변입니다. 정보의 경우 : 반대의 말을하고 싶은 사람들을 위해 – 즉 용어명 으로부터 tid를 얻으려면, 그것에 대한 Q & A도 있습니다 : drupal.stackexchange.com/questions/36594/… 이것이 답변을 찾을 때 검색 엔진으로서 도움이 되기를 바랍니다 . '시작'과 '끝'의 관점에서 필요한 것의 순서를 이해하지 못하는 것 같습니다.
therobyouknow

답변:


92

Drupal 7을 사용하고 있다면 taxonomy_term_load()

$term = taxonomy_term_load($tid);
$name = $term->name;

용어 ID가 여러 개인 경우 다음을 사용하여 각로드마다 단일 쿼리를 실행하지 않아도됩니다 taxonomy_term_load_multiple().

$tids = array(1, 2, 3);
$terms = taxonomy_term_load_multiple($tids);

foreach ($terms as $term) {
  $name = $term->name;
}

Drupal 6을 사용하지 않으면 다음을 사용할 수 있습니다 taxonomy_get_term().

$term = taxonomy_get_term($tid);
$name = $term->name;

불행히도 Drupal 6에는 다중로드 옵션이 없습니다.


버전 지원을 위해 여분의 기능을 추가 할 수 있기를 바랍니다. D
Brodie

추가 질문 : 나는 이것을 같은 줄에 따라 생각합니다 .URL이 site / <term name>을 읽도록 설정하는 것이 매우 쉬운가요? 또는 각 개별 용어에 대해 설정해야합니까?
Brodie

3
당신은 그것을 기간별로 할 수 있지만 그것은 꽤 힘든 일입니다. pathauto 모듈은 단지 상황의이 종류를 위해, 당신은 등면 / 컨텐츠 / 사용자 /에 자동 할당 별칭에 패턴을 정의하는 데 사용할 수 있습니다 작성되었습니다.
Clive

5

다음 함수는 tid를 기준으로 분류 용어의 이름을 반환합니다.

function get_term($tid) {
  return db_select('taxonomy_term_data', 't')
  ->fields('t', array('name'))
  ->condition('tid', $tid)
  ->execute()
  ->fetchField();
}

1
API 함수를 사용하여 동일한 작업을 수행 할 수있는 경우 데이터베이스 함수를 사용하지 않는 것이 좋습니다.
Kartagis

4
API 함수는 데이터의 큰 볼륨을로드하기 때문에 어떤 경우는 사용 데이터베이스 기능에 더 낫다
houmem

분류 접근 접근 모듈이 접근을 제한 할 때도 유용
Dimetry

5

Drupal 8에서는 다음과 같이 분류 용어의 이름을 얻을 수 있습니다.

$term = \Drupal::entityTypeManager()->getStorage('taxonomy_term')->load($tid);

$name = $term->label();

또는 여러로드 :

$terms = \Drupal::entityTypeManager()->getStorage('taxonomy_term')->loadMultiple($tids);

foreach($terms as $term) {
  $name = $term->label();
}

이 오류가 발생합니다.주의 사항 : 정의되지 않은 속성 : Drupal \ Core \ Entity \ Plugin \ DataType \ EntityReference :: $ target
Diana

1

D7의 경우 :

$term = taxonomy_get_term_by_name($term_name, $vocab_name);  
  foreach($term as $key => $data) {  
    $tid = $data->tid;  

    dpm($tid);  

  }  

D8의 경우 :

$term_name = \Drupal\taxonomy\Entity\Term::load(2)->get('name')->value;  
dpm($term_name);  

0

다음과 같은 방법으로 Drupal 8에서 용어의 이름을 얻을 수 있습니다.

//Obtain the term.
$tid=1;
$term= taxonomy_term_load($tid);

//get the field name
$term->label();

//or
$term->get('name')->value;
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.