วิธีรับชื่อเทอมอนุกรมวิธานจาก tid


32

หลายสิ่งหลายอย่างของเรามีรูปแบบ uris site/taxonomy/XXที่ XX เป็นจำนวนเต็ม

ผมพบว่าคำถามจำนวนมากเช่น "ซึ่งเป็นวิธีการที่จะได้รับ TID จากชื่อหรือไม่ " TIDแต่ฉันต้องการที่จะได้รับชื่อจาก ฉันพยายามรวบรวมสคริปต์เกล็ดขนมปังและทุกอย่างยอดเยี่ยมยกเว้นกรณีเหล่านี้ที่ฉันได้รับเส้นทางเช่น " home > term" ฉันอยากได้มันเหมือน " home > <TERM NAME>"

ฉันจะทำเช่นนั้นได้อย่างไร


คำตอบที่ดี สำหรับข้อมูลเท่านั้น: สำหรับผู้ที่ต้องการทำสิ่งตรงกันข้าม - เช่นได้รับ tid จากชื่อคำศัพท์มีคำถาม & คำตอบที่เหมือนกัน: 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 อ่านไซต์ / <term name>? หรือฉันจะต้องกำหนดให้สำหรับแต่ละคำแต่ละคำ?
Brodie

3
คุณสามารถทำได้แบบทีละคำ แต่มันค่อนข้างลำบาก โมดูล pathautoถูกเขียนขึ้นเพียงสำหรับการเรียงลำดับของสถานการณ์นี้คุณสามารถใช้มันในการกำหนดรูปแบบการนามแฝงอัตโนมัติกำหนดถึงข้อตกลง / เนื้อหา / ผู้ใช้ / etc
ไคลฟ์

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
ไดอาน่า

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.