Добрый день. Есть словарь каталог в нём термин таксономии (к примеру) краска. Есть тип материала товар. Я создал представление для каталога и связал тип материала товар с нужным ему термином таксономии. Как мне найти количество нодов типа материала товар, которые относятся к определённому термину такосномии ( в частности краска )?
Нужно сделать именно через код. Вот что я пытался сделать.
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" . "оттенков");
}
}
$query = db_select('node', 'n');
$query -> condition('n.type', 'products');
$query -> addExpression('COUNT(*)');
$count = $query->execute()->fetchField();
if ($view->name == "catalog") {
print_r("$count" . "оттенков");
}
}
Комментарии
не так, надо брать из таблицы поля каталога entity_id фильтруя по нужному tid , нужный tid надо брать из taxonomy_term_data. Если правильно понял вопрос.
Но вообще можно вьювсом подсчитать.
Спасибо, что нибудь попробую. Я знаю, что через вьюху можно сделать. Но мне нужно именно через php код.
Через taxonomy_index будет работать быстрее.
Можете пожалуйста продемонстрировать это в виде кода? Я буду очень благодарен.
$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();