Задача — зная tid термина, узнать следующий и предыдущий термин.
Решение:
/**
* Return prev/next term.
*/
function helper_get_sibling_term($tid, $type) {
$term = taxonomy_term_load($tid);
if ($type == 'next') {
$operator = '>';
$direction = 'ASC';
}
else {
$operator = '<';
$direction = 'DESC';
}
return db_select('taxonomy_term_data', 'td')
->fields('td', array('tid', 'name'))
->condition('td.vid', $term->vid)
->where(
"td.weight $operator :weight OR (td.weight = :weight AND td.name $operator :name)",
array(':weight' => $term->weight, ':name' => $term->name)
)
->orderBy('td.weight', $direction)
->orderBy('td.name', $direction)
->range(0, 1)
->execute()
->fetchObject();
}
Использование:
$prev_term = helper_get_sibling_term(123, 'prev');
$next_term = helper_get_sibling_term(123, 'next');
Написанное актуально для
Drupal 7
Комментарии
Задача — зная tid термина, узнать следующий и предыдущий термин.
_______________________________________________________________
taxonomy_term_load($tid + 1);
_________________________________________________________________
наверное задачу надо озвучить
зная tid термина, узнать следующий и предыдущий термин из того же словаря ,что и данный термин
во первых tid + 1 может не существовать, во вторых термины сортируются по весу и по имени
Но ведь термины могут быть в разных словарях. На практике, особенно в для сео, полезнее будет выводить "соседей" из одного словаря. Подскажите, пожалуйта, что нужно добавить в вашем коде?
если вы прочитаете код, то поймёте, что поиск идёт в рамках одного словаря
точно! благодарю - разобрался! большое Вам спасибо!!!
Подскажите пожалуйста, как адаптировать этот код для Drupal 6? Стоит задача, на странице термина выводить ссылки на следующий/предыдущий термин словаря по id и никак не могу решить ее.
Добавить комментарий