📅  最后修改于: 2023-12-03 15:35:15.497000             🧑  作者: Mango
在Drupal 8中,taxonomy_get_parents函数已被弃用,它被替换为taxonomy_term_hierarchy——一个比taxonomy_get_parents更现代、更强大的函数。它允许获取具有层次结构的术语及其父项和子项。因此,在Drupal 8中, 我们可以使用如下代码来获取术语的所有父项:
$tid = 123; // 术语ID
$parents = \Drupal::service('entity.manager')
->getStorage('taxonomy_term')
->loadParents($tid);
这个代码块会返回一个Term对象数组,可以通过循环遍历并操作这些对象。例如,以下代码块遍历了一个术语的所有父项并输出了它们的名称:
foreach ($parents as $parent) {
$name = $parent->getName(); // 获取术语名称
echo $name;
}
另外,值得注意的是,我们可以对taxonomy_term_hierarchy函数使用第二个参数,以获取不同结构的数据。下面是代码片段演示如何使用getParents函数来获取一个术语的父项和子项的ID列表:
$tid = 123; // 术语ID
$ids = \Drupal::service('entity.manager')
->getStorage('taxonomy_term')
->loadTree($tid, 0, NULL, TRUE);
此代码块将返回一个数组,包含所有父项和子项的术语ID。此外,我们还可以使用loadParents函数获取某个术语的直接父项:
$tid = 123; // 术语ID
$parents = \Drupal::service('entity.manager')
->getStorage('taxonomy_term')
->loadParents($tid, FALSE);
这将返回术语的直接父项,而不像loadParents函数那样返回所有父项。
以上是Drupal 8中的taxonomy_get_parents函数及其替代方法的介绍。这些函数都可以帮助程序员轻松地获取指定术语的父项和子项,进而处理大量数据。