Drupal: Подсчет количества материалов по типам

Посчитать количество материалов по типам в 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

  1. Создаем новое представление
  2. Убираем все параметры сортировки, поля и другие параметры по умолчанию
  3. Добавляем новое поле Содержимое:Тип (Content: Type)
  4. Раскрываем раздел "advanced" справа и устанавливаем поле Использовать агрегацию (Use aggregation) в значение "Да"
  5. Добавляем еще одно поле Содержимое:Тип (Content: Type)
  6. Во втором поле, нажимаем Настройки агрегации (Aggregation settings)
  7. Устанавливаем тип агрегации в значение Счетчик (Сount)
  8. Второй "Content: Type" должен выглядеть как  COUNT(Содержимое: Тип) (COUNT(Content: Type))

Вот и все. Если нужно - поиграйтесь с дополнительными настройками, типа меток полей, критериев фильтрации и так далее.
 


 

 

Добавить комментарий

Filtered HTML

  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Разрешённые HTML-теги: <a> <s> <u> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <hr> <dd> <sub> <sup>
  • Строки и параграфы переносятся автоматически.

Plain text

  • HTML-теги не обрабатываются и показываются как обычный текст
  • Строки и параграфы переносятся автоматически.
CAPTCHA
Защита от СПАМ ботов. Подтвердите, пожалуйста, что вы человек.
3 + 10 =
Решите эту простую математическую задачу и введите результат. Например, для 1+3, введите 4.