xandeadx.ru Блог музицирующего веб-девелопера

Drupal → Узнать следующий/предыдущий термин

Опубликовано в

Задача — зная 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
Похожие записи

Комментарии RSS

Задача — зная tid термина, узнать следующий и предыдущий термин.
_______________________________________________________________
taxonomy_term_load($tid + 1);
_________________________________________________________________
наверное задачу надо озвучить
зная tid термина, узнать следующий и предыдущий термин из того же словаря ,что и данный термин

во первых tid + 1 может не существовать, во вторых термины сортируются по весу и по имени

Но ведь термины могут быть в разных словарях. На практике, особенно в для сео, полезнее будет выводить "соседей" из одного словаря. Подскажите, пожалуйта, что нужно добавить в вашем коде?

если вы прочитаете код, то поймёте, что поиск идёт в рамках одного словаря

точно! благодарю - разобрался! большое Вам спасибо!!!

Подскажите пожалуйста, как адаптировать этот код для Drupal 6? Стоит задача, на странице термина выводить ссылки на следующий/предыдущий термин словаря по id и никак не могу решить ее.

Оставить комментарий

Содержимое этого поля является приватным и не будет отображаться публично. Если у вас есть аккаунт в Gravatar, привязанный к этому e-mail адресу, то он будет использован для отображения аватара.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Доступные HTML теги: <a> <i> <b> <strong> <code> <ul> <ol> <li> <blockquote> <em> <s>
  • Строки и параграфы переносятся автоматически.
  • Подсветка кода осуществляется с помощью тегов: <code>, <css>, <html>, <ini>, <javascript>, <sql>, <php>. Поддерживаемые стили выделения кода: <foo>, [foo].

Подробнее о форматировании