Я ищу фрагмент, который позволяет мне отображать общее количество для определенного типа узла, например "Pages = 167" или "Products = 10630".
Какой код я должен использовать для достижения этой цели?
Вот функция, которая будет возвращать количество узлов для определенного типа контента:
function YOURTHEME_get_node_count($content_type) {
$query = 'SELECT COUNT(*) ' .
'FROM {node} n ' .
'WHERE n.type = :type';
return db_query($query, array(
':type' => $content_type
))->fetchField();
}
Чтобы использовать этот код в своей теме, добавьте функцию в свою template.php
и затем вы можете вызвать функцию следующим образом:
echo 'Pages: ' . YOURTHEME_get_node_count('page');
echo 'Products: ' . YOURTHEME_get_node_count('product');
Вы можете использовать модуль Views, чтобы сделать это.
Так и должно быть! При необходимости настройте дополнительные параметры, такие как метки полей и настройки стиля строки.
Вот экспорт такого представления, так что вы можете легко импортировать его и попробовать:
$view = new view;
$view->name = 'nodecounts';
$view->description = '';
$view->tag = 'default';
$view->base_table = 'node';
$view->human_name = 'Node counts';
$view->core = 7;
$view->api_version = '3.0';
$view->disabled = FALSE; /* Edit this to true to make a default view disabled initially */
/* Display: Master */
$handler = $view->new_display('default', 'Master', 'default');
$handler->display->display_options['title'] = 'Node counts';
$handler->display->display_options['group_by'] = TRUE;
$handler->display->display_options['access']['type'] = 'perm';
$handler->display->display_options['cache']['type'] = 'none';
$handler->display->display_options['query']['type'] = 'views_query';
$handler->display->display_options['query']['options']['query_comment'] = FALSE;
$handler->display->display_options['exposed_form']['type'] = 'basic';
$handler->display->display_options['pager']['type'] = 'none';
$handler->display->display_options['style_plugin'] = 'default';
$handler->display->display_options['row_plugin'] = 'fields';
$handler->display->display_options['row_options']['inline'] = array(
'type_1' => 'type_1',
'type' => 'type',
);
$handler->display->display_options['row_options']['separator'] = ': ';
$handler->display->display_options['row_options']['hide_empty'] = 0;
$handler->display->display_options['row_options']['default_field_elements'] = 1;
/* Field: Content: Type */
$handler->display->display_options['fields']['type_1']['id'] = 'type_1';
$handler->display->display_options['fields']['type_1']['table'] = 'node';
$handler->display->display_options['fields']['type_1']['field'] = 'type';
$handler->display->display_options['fields']['type_1']['label'] = '';
$handler->display->display_options['fields']['type_1']['alter']['alter_text'] = 0;
$handler->display->display_options['fields']['type_1']['alter']['make_link'] = 0;
$handler->display->display_options['fields']['type_1']['alter']['absolute'] = 0;
$handler->display->display_options['fields']['type_1']['alter']['external'] = 0;
$handler->display->display_options['fields']['type_1']['alter']['replace_spaces'] = 0;
$handler->display->display_options['fields']['type_1']['alter']['trim_whitespace'] = 0;
$handler->display->display_options['fields']['type_1']['alter']['nl2br'] = 0;
$handler->display->display_options['fields']['type_1']['alter']['word_boundary'] = 1;
$handler->display->display_options['fields']['type_1']['alter']['ellipsis'] = 1;
$handler->display->display_options['fields']['type_1']['alter']['strip_tags'] = 0;
$handler->display->display_options['fields']['type_1']['alter']['trim'] = 0;
$handler->display->display_options['fields']['type_1']['alter']['html'] = 0;
$handler->display->display_options['fields']['type_1']['element_label_colon'] = FALSE;
$handler->display->display_options['fields']['type_1']['element_default_classes'] = 1;
$handler->display->display_options['fields']['type_1']['hide_empty'] = 0;
$handler->display->display_options['fields']['type_1']['empty_zero'] = 0;
$handler->display->display_options['fields']['type_1']['hide_alter_empty'] = 1;
$handler->display->display_options['fields']['type_1']['link_to_node'] = 0;
$handler->display->display_options['fields']['type_1']['machine_name'] = 0;
/* Field: COUNT(Content: Type) */
$handler->display->display_options['fields']['type']['id'] = 'type';
$handler->display->display_options['fields']['type']['table'] = 'node';
$handler->display->display_options['fields']['type']['field'] = 'type';
$handler->display->display_options['fields']['type']['group_type'] = 'count';
$handler->display->display_options['fields']['type']['label'] = '';
$handler->display->display_options['fields']['type']['alter']['alter_text'] = 0;
$handler->display->display_options['fields']['type']['alter']['make_link'] = 0;
$handler->display->display_options['fields']['type']['alter']['absolute'] = 0;
$handler->display->display_options['fields']['type']['alter']['external'] = 0;
$handler->display->display_options['fields']['type']['alter']['replace_spaces'] = 0;
$handler->display->display_options['fields']['type']['alter']['trim_whitespace'] = 0;
$handler->display->display_options['fields']['type']['alter']['nl2br'] = 0;
$handler->display->display_options['fields']['type']['alter']['word_boundary'] = 1;
$handler->display->display_options['fields']['type']['alter']['ellipsis'] = 1;
$handler->display->display_options['fields']['type']['alter']['strip_tags'] = 0;
$handler->display->display_options['fields']['type']['alter']['trim'] = 0;
$handler->display->display_options['fields']['type']['alter']['html'] = 0;
$handler->display->display_options['fields']['type']['element_label_colon'] = FALSE;
$handler->display->display_options['fields']['type']['element_default_classes'] = 1;
$handler->display->display_options['fields']['type']['hide_empty'] = 0;
$handler->display->display_options['fields']['type']['empty_zero'] = 0;
$handler->display->display_options['fields']['type']['hide_alter_empty'] = 1;
$handler->display->display_options['fields']['type']['separator'] = '';
$handler->display->display_options['fields']['type']['format_plural'] = 0;
/* Display: Block */
$handler = $view->new_display('block', 'Block', 'block');
Предпочтительным программным способом является использование класса EntityFieldQuery . Узнайте, почему EntityFieldQuery превосходит db_query () .
Вот пример подсчета узлов типа Блог.
Смотрите аналогичный вопрос .
источник
Я сделал это с помощью EntityFieldQuery.
источник
Использование Drush просто и быстро.
Это дает вывод, похожий на:
И затем, если вы хотите фильтровать по определенному типу, просто используйте grep следующим образом:
источник
Для тех , кто заинтересован, другим решением является использование countQuery метод SelectQuery класса (через db_select ).
Однако я предпочитаю решение EntityFieldQuery, опубликованное Timofey. Я предоставляю это только в качестве разумной альтернативы.
источник
Используйте этот запрос в своем коде
источник
Модуль подсчета Типа узла делает то же самое, что вам требуется.
источник
В качестве варианта ответа на вопрос об использовании модуля Views вы можете «использовать» представление, которое поставляется с модулем Charts . Просто установите / включите его, никаких дополнительных настроек, кодирования и т. Д. Не требуется. Еще некоторые подробности об этом представлении, включенные в готовые примеры (цитата по этой ссылке):
Заметки:
Раскрытие: я поддерживаю этот модуль,
я надеюсь, что это не нарушает политику сайта по саморекламе .
источник