Создание, продвижение сайтов
компьютерная поддержка
53-02-63

Функции Drupal 7 API для работы с таксономией

03 августа 2016

В Drupal 7 API имеется ряд полезных функций для таксономии, позволяющих получить ноды, классифицированные по определенному термину, узнать родительские или дочерние термины и т.п.

Загружаем объект термина по его tid

Функция taxonomy_term_load() (внешняя ссылка) по аналогии с node_load() возвращает объект термина по tid:

  <?php
    $term = taxonomy_term_load(1);
    print $term->name; // Название термина
    print $term->vid; // Идентификатор словаря таксономии, к которому принадлежит данный термин
  ?>

Также по аналогии с node_load_multiple() в Drupal API имеется функция taxonomy_term_load_multiple() (внешняя ссылка)

Находим термины по названию

Для загрузки терминов по их названиям служит функция taxonomy_get_term_by_name() (внешняя ссылка), которая возвращает массив объектов терминов с заданным именем.

Получаем все термины словаря

Чтобы получить все термины словаря с учетом иерархии, можно воспользоваться функцией taxonomy_get_tree() (внешняя ссылка), в которую нужно передать значение vid - идентификатора словаря таксономии. При этом функция вернет объекты терминов с дополнительными свойствами "depth" (глубина термина в иерархии) и "parents" - массив значений tid родительских терминов. Примеры кода для вывода "дерева" словаря вы найдете на странице описания данной функции.

Получаем дочерние термины

Довольно распространенная задача - получить дочерние термины заданного термина. Для ее решения служит функция taxonomy_get_children() (внешняя ссылка). Обратите внимание, что данная функция принимает tid термина, а возвращает полные объекты дочерних терминов (если они есть). Т.е. данную функцию нецелесообразно использовать, если нам нужны, например, только значения tid или name дочерних терминов. В таких ситуациях с точки зрения быстродействия стоит написать запрос к базе данных сайта, используя db_select() (внешняя ссылка) (за основу можно взять запрос из тела функции taxonomy_get_children()).

Получаем родительские термины

Для получения предков заданного термина в API Drupal 7 предусмотрено две функции - taxonomy_get_parents() (внешняя ссылка) и taxonomy_get_parents_all() (внешняя ссылка).

Несмотря на почти идентичные названия, эти функции отличаются существенно. Первая вернет только «родителей» заданного термина. Предположим у нас есть словарь «Электроника», в нем родительские термины Sony и Panasonic и термин «Телевизоры», который сделан дочерним как для Sony, так и для Panasonic. Тогда в результате вызова функции taxonomy_get_parents() при подстановке в нее значения tid термина «Телевизоры» мы получим объекты терминов Sony и Panasonic.

Вторая функция возвращает объекты всех «предков» термина, а не только его родителей, т.е. с учетом всей глубины словаря.

Загружаем все ноды термина

Для получения содержимого, классифицированного по определенному термину, служит функция taxonomy_select_nodes() (внешняя ссылка). При всей очевидности ее назначения у новичков иногда возникают проблемы, связанные с непринятием во внимание всех аргументов данной функции. Поэтому давайте рассмотрим пример. Допустим, к термину с tid = 1 отнесено 25 нод. Тогда вполне логично предположить, что строка кода:

<?php
  $nids = taxonomy_select_nodes(1);
?>

вернет массив из 25 элементов - nid этих нод. Однако это не так. Обратите внимание на второй аргумент функции, а именно переменную булева типа $pager, установленную по умолчанию в TRUE. Это значит, что выборка наших будет разбита постранично. Если же мы хотим получить все ноды термина на одной странице, нам нужно преобразовать строку кода в:

<?php
  $nids = taxonomy_select_nodes(1, false);
?>

Также при использовании функции taxonomy_select_nodes() можно задать лимит на количество загружаемых нод и установить порядок сортировки через параметры $limit и $order.

В заключение стоит упомянуть такие полезные функции, как taxonomy_get_vocabularies() (внешняя ссылка) - для загрузки всех словарей таксономии и ее упрощенный вариант taxonomy_vocabulary_get_names() (внешняя ссылка), которая возвращает массив объектов, свойствами которых являются названия, машинные имена и идентификаторы vid словарей.

Узнайте о нас больше:

Мы предлагаем широкий спект услуг по сайтам и компьютерной поддержке

Создание сайтов

Мы разрабатываем как простые сайты - визитки, так и индивидуальные проекты. Основная система разработки - CMS Drupal.

Узнать подробнее

Продвижение сайтов

Одно из основных направлений работы нашей компании - продвижение сайтов в Саратове и области. Мы поможем Вам с SEO - продвижением сайтов и настройкой и ведением контекстной рекламы в Яндекс Директ.

Бесплатная SEO-консультация

Компьтерная поддержка

Мы оказываем услуги компаниям и частным лицам в области настройки компьютерного оборудования:

  • Настройка роутеров и локальных сетей
  • Установка Windows
  • Оптимизация работы компьютеров
  • Лечение вирусов
  • Восстановление данных с жестких дисков
Узнать подробнее
Сделайте заказ с сайта и получите 10% скидку на услугу

Заказ услуги с сайта raybin.ru

Нажимая на кнопку "Получить консультацию", я даю согласие на обработку персональных данных и соглашаюсь c условиями политики конфиденциальности
Заказать бесплатную SEO-консультацию

Запрос бесплатной SEO - консультации с сайта raybin.ru

Нажимая на кнопку "Получить консультацию", я даю согласие на обработку персональных данных и соглашаюсь c условиями политики конфиденциальности
Письмо в компанию Райбин

Письмо в компанию RAYBIN

Нажимая на кнопку "Получить консультацию", я даю согласие на обработку персональных данных и соглашаюсь c условиями политики конфиденциальности