Посчитать количество материалов по типам в Drupal можно двумя способами: используя возможности модуля Views и написав собственную функцию. Оба метода удобны, первый - для тех, кто привык все настраивать через интерфейс конфигурации Drupal, второй - для любителей кодить php и по полной использовать возможности API Drupal. Давайте рассмотрим оба этих способа.
Пишем функцию, которая будет выводить количество нод для определенного типа материала:
Добавим следующий код в файл template.php:
function yourtheme_get_node_count($content_type) {
$query = "SELECT COUNT(*) amount FROM {node} n ".
"WHERE n.type = :type";
$result = db_query($query, array(':type' => $content_type))->fetch();
return $result->amount;
}
Для того, чтоб вывести посчитанное количество, следует добавить следующий код в нужном для вас мете файла шаблона вашей темы, например в файле page.tpl.php:
echo 'Статьи: '.yourtheme_get_node_count('article');
echo 'Записи в блоге: '.yourtheme_get_node_count('blog');
Считаем количество нод, исползуя модуль Views
- Создаем новое представление
- Убираем все параметры сортировки, поля и другие параметры по умолчанию
- Добавляем новое поле Содержимое:Тип (Content: Type)
- Раскрываем раздел "advanced" справа и устанавливаем поле Использовать агрегацию (Use aggregation) в значение "Да"
- Добавляем еще одно поле Содержимое:Тип (Content: Type)
- Во втором поле, нажимаем Настройки агрегации (Aggregation settings)
- Устанавливаем тип агрегации в значение Счетчик (Сount)
- Второй "Content: Type" должен выглядеть как COUNT(Содержимое: Тип) (COUNT(Content: Type))
Вот и все. Если нужно - поиграйтесь с дополнительными настройками, типа меток полей, критериев фильтрации и так далее.
Добавить комментарий