Panels + Statistics + Drupal 8

Опубликовано 2016.09.14

Модуль статистики(тот что в ядре) ""цепляется за ноды в hook_ENTITY_TYPE_view. Если вы выводите ноды через панели(Pages) - то этот хук соответственно не будет работать. Разрулить проблему можно если самому подрубить библиотеку модуля statistics к страницам материалов. Я сделаю это в hook_page_attachments. Код хука
  1. /**
  2.  * Implements hook_page_attachments().
  3.  */
  4. function module_page_attachments(array &$page) {
  5. $request = \Drupal::request()->getRequestUri();
  6. $nid = NULL;
  7. if (substr($request, 0, 6) == '/node/') {
  8. $nid = substr($request, 6);
  9. } else {
  10. $connection = Database::getConnection();
  11. $sql = new Select('url_alias', 'ua', $connection);
  12. $sql->condition('ua.alias', $request);
  13. $sql->fields('ua', ['source']);
  14. $res = $sql->execute()->fetchField();
  15. if (substr($res, 0, 6) == '/node/') {
  16. $nid = substr($res, 6);
  17. }
  18. }
  19.  
  20. if ((!empty($nid)) && (is_numeric($nid))) {
  21. // Node view page
  22. $page['#attached']['library'][] = 'statistics/drupal.statistics';
  23. $settings = array('data' => array('nid' => $nid), 'url' => Url::fromUri('base:' . drupal_get_path('module', 'statistics') . '/statistics.php')->toString());
  24. $page['#attached']['drupalSettings']['statistics'] = $settings;
  25. }
  26. }
Данный код поддерживает алиасы материалов. В аттаче к статье можете скачать готовый модуль.