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

Аватар пользователя Junnior Junnior 2 августа 2018 в 15:45

Добрый день. Есть словарь каталог в нём термин таксономии (к примеру) краска. Есть тип материала товар. Я создал представление для каталога и связал тип материала товар с нужным ему термином таксономии. Как мне найти количество нодов типа материала товар, которые относятся к определённому термину такосномии ( в частности краска )?

Нужно сделать именно через код. Вот что я пытался сделать.

function custom_view_pre_render (&$view) {
  $query = db_select('node', 'n');
  $query -> condition('n.type', 'products');
  $query -> addExpression('COUNT(*)');
  $count = $query->execute()->fetchField();
  if ($view->name == "catalog") {
    print_r("$count" . "оттенков");
  }
}

Комментарии

Аватар пользователя Olegars Olegars 2 августа 2018 в 16:35
1

не так, надо брать из таблицы поля каталога entity_id фильтруя по нужному tid , нужный tid надо брать из taxonomy_term_data. Если правильно понял вопрос.
Но вообще можно вьювсом подсчитать.

Аватар пользователя Junnior Junnior 2 августа 2018 в 16:42

Спасибо, что нибудь попробую. Я знаю, что через вьюху можно сделать. Но мне нужно именно через php код.

Аватар пользователя Junnior Junnior 3 августа 2018 в 10:29

Можете пожалуйста продемонстрировать это в виде кода? Я буду очень благодарен.

Аватар пользователя sas@drupal.org sas@drupal.org 3 августа 2018 в 10:48
1
  $sql = db_select('node', 'n')->condition('n.type', 'products');
  $sql->addExpression('COUNT(*)');
  $sql->innerJoin('taxonomy_index', 'ti', 'ti.nid = n.nid');
  $sql->innerJoin('taxonomy_term_data', 'tti', 'tti.tid = ti.tid AND tti.name = :name', [':name' => 'краска']);
  $count = $sql->execute()->fetchField();