Как мне создать количество узлов для каждого термина категории в Drupal? - PullRequest
2 голосов
/ 28 октября 2009

Я хочу создать список терминов категории (содержащихся в блоке), за каждым из которых следует число узлов с этим термином, например ::10000

Cats (5)
Dogs (4)
Elephants (2)

Существует ряд модулей, которые динамически создают подобные списки, но я обнаружил, что все они имеют недостатки для моих целей. Мне буквально просто нужно что-то вроде этого:

<ul>
<li><a href="mylink">Cats</a> (<?php ...some code... ?>)</li>
<li><a href="mylink">Dogs</a> (<?php ...some code... ?>)</li>
<li><a href="mylink">Elephants</a> (<?php ...some code... ?>)</li>
</ul>

т.е. Мне нужно, чтобы число было динамическим, а не весь список (это нормально, потому что сами термины не изменятся). Я слышал, что функция Drupal taxonomy_term_count_nodes() может быть полезна, но я не могу найти простой информации о ее реализации.

Ответы [ 6 ]

8 голосов
/ 28 октября 2009

Какую информацию вы хотите относительно ее реализации? Документация кажется довольно ясной ...

<?php print taxonomy_term_count_nodes($term_id); ?>
3 голосов
/ 29 октября 2009

Я делал это несколько раз. IMO, лучше использовать Views для создания представления Node, в котором просто перечислены термины таксономии, а затем использовать модуль http://drupal.org/project/views_groupby, чтобы поместить число узлов с этим термином рядом с термином. Пример в документации views_groupby говорит вам, что вам нужно знать.

Ваш пользовательский модуль, очевидно, будет немного более гибким, но в конечном счете излишним, учитывая вышесказанное.

2 голосов
/ 29 октября 2009

Я также не уверен, какую информацию вам не хватает в документации - может быть, поможет пример. Следующее создаст упорядоченный список всех терминов в словаре с привязанным количеством узлов (не проверено, поэтому возможны опечатки).

// Adjust this to the id of the vocabulary holding your terms
$vid = 1;
// Grab all terms in that vocabulary
$terms = taxonomy_get_tree($vid);
$items = array();
foreach ($terms as $term) {
  // Get the number of (published) nodes with that term
  $count = taxonomy_term_count_nodes($term->tid);
  // Assemble your link text
  $text = $term->name . ' (' . $count . ')';
  // Set this to the path you want to link to (default term views used here)
  $path = 'taxonomy/term/' . $term->tid;
  // Turn the above into a rendered link
  $link = l($text, $path);
  // Add to items
  $items[] = $link;
}
// Render array as an ordered list
$list = theme('item_list', $items, NULL, 'ol');

print $list;
1 голос
/ 09 июня 2015

Taxonomy_term_count_nodes не выходит в Drupal 7

У Drupal 7 есть другой эквивалентный API для получения узлов термина таксономии. вот API https://api.drupal.org/api/drupal/modules!taxonomy!taxonomy.module/funct...

Будет возвращено значение массива, мы можем посчитать значения массива с помощью php

<?php 
  $data = taxonomy_select_nodes($tid);
  $count = count($data);
0 голосов
/ 24 декабря 2015

Если вы получили только 10 результатов с taxonomy_select_nodes, потому что для этой функции по умолчанию для Pager установлено значение true, поэтому вам нужно будет сделать так с помощью FALSE:

$data = taxonomy_select_nodes($term_id, FALSE);
$count = count($data);
0 голосов
/ 06 августа 2013

В Drupal 7 вы можете сделать это с помощью Views. Никакого кодирования или дополнительных модулей не требуется. Подробнее см. Как использовать агрегатор видов для создания блока подсчета терминов таксономии? .

...