Как создать представление отчетов / аналитики на форуме Drupal?

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

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

Обновление. Я ищу примерно следующее:

-------------------------------------------------------
| User | Post                      | Type    | Date   |
-------------------------------------------------------
| amy  | post text appears here    | post    | 1/5/01 |
| bob  | comment text appears here | comment | 1/5/01 |
| amy  | another comment here      | comment | 1/5/01 |
| cid  | another post appears here | post    | 1/4/01 |
| dave | yet another comment here  | comment | 1/4/01 |
-------------------------------------------------------
total posts + comments: 5

person Matt V.    schedule 09.02.2011    source источник


Ответы (2)


Не уверен, чего ты действительно хочешь. Либо вы можете отображать узлы + количество комментариев, либо узлы и комментарии на одном уровне, но тогда у них нет общего числа, потому что все они отдельные? Или вы хотите отображать каждый комментарий отдельно вместе с количеством комментариев в этой ветке?

В последнем случае это может быть нетривиально.

По сути, вы можете создать запрос UNION Select и запросить как узел, так и таблицу комментариев. может выглядеть так:

(SELECT 'node' AS type, n.nid as id, n.title as title, nncs.comment_count as comment_count, n.created as timestamp FROM {node} n INNER JOIN {node_comment_statistics} nncs ON n.nid = nncs.nid)
UNION
(SELECT 'comment' AS type, c.cid as id, c.subject as title, cncs.comment_count as comment_count, c.timestamp as timestamp FROM {comments} c INNER JOIN {node_comment_statistics} cncs ON c.nid = cncs.nid)
ORDER BY timestamp DESC LIMIT 10;

Это вернет результат, содержащий: узел / комментарий | id | название | comment_count | отметка времени.

См. http://dev.mysql.com/doc/refman/5.1/en/union.html для получения дополнительной информации о UNION.

Затем вы можете оформить это как таблицу.

Подсказки:

  • Если вам нужно больше данных, либо расширьте запрос, либо используйте node / comment_load
  • Вы также можете присоединиться к {node} во втором запросе и использовать заголовок узла вместо темы комментария.
  • Этот запрос будет медленным, потому что он всегда будет выполнять сортировку по файлам, потому что там есть объединение. На самом деле может быть быстрее выполнить два отдельных запроса, а затем объединить их в PHP, если у вас
    большое количество узлов / комментариев.
person Berdir    schedule 09.02.2011
comment
Я добавил обновление, если это поможет прояснить ситуацию. Похоже, вы говорите, что Просмотры - это не вариант. Правильный? - person Matt V.; 09.02.2011

Оказывается, модуль Tracker 2 предоставляет достаточно того, что мне было нужно.

person Matt V.    schedule 09.02.2011