Как создать представление отчетов / аналитики на форуме Drupal? - PullRequest
1 голос
/ 09 февраля 2011

Я хочу создать страницу в 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

Ответы [ 2 ]

1 голос
/ 09 февраля 2011

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

Если последнее, это может быть не тривиально.

По сути, вы можете создать запрос 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.

Затем вы можете создать тему в виде таблицы.

Советы:

  • Если вам нужно больше данных, либо расширьте запрос или используйте узел / comment_load
  • Вы также можете присоединиться к {узлу} в второй запрос и использовать заголовок узла вместо темы комментария
  • Этот запрос будет медленным потому что это всегда будет делать сортировку файлов потому что у вас есть союз там. Это на самом деле может быть быстрее, чтобы выполнить два отдельных запроса, а затем искалечить они вместе в PHP, если у вас есть
    большое количество узлов / комментариев
0 голосов
/ 09 февраля 2011

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

...