function comment_ajax_pager_entity_display_build_alter in Comments ajax pager 8
Implements hook_entity_display_build_alter().
File
- ./
comment_ajax_pager.module, line 9
Code
function comment_ajax_pager_entity_display_build_alter(&$build, $context) {
foreach ($build as $field_name => $field) {
if (!empty($field['#field_type']) && $field['#field_type'] === 'comment') {
$build[$field_name]['#attributes']['data-ajax_comment_pager'] = $context['entity']
->id();
$build[$field_name]['#attached']['library'][] = 'comment_ajax_pager/comment_ajax_pager.js';
$build[$field_name]['#attached']['drupalSettings']['comment_ajax_pager'][$context['entity']
->id()] = [
'ajax_pager' => [
'entity_id' => $context['entity']
->id(),
'field_name' => $field['#field_name'],
'entity_type' => $field['#entity_type'],
'bundle' => $field['#bundle'],
'comment_type' => $field['#items']
->getFieldDefinition()
->getSetting('comment_type'),
'default_mode' => $field['#items']
->getFieldDefinition()
->getSetting('default_mode'),
],
'ajax_url' => Url::fromRoute('comment_ajax_pager.api')
->toString(),
];
$config = \Drupal::config('field.field.' . $field['#entity_type'] . '.' . $field['#bundle'] . '.' . $field['#field_name'])
->get();
$build[$field_name][0]['comments']['#prefix'] = '<div class="comments_ajax_pager_wrap">';
$build[$field_name][0]['comments']['#suffix'] = '</div>';
if (!empty(\Drupal::config('comment_ajax_pager.settings')
->get('settings.' . $field['#entity_type'] . '.' . $field['#bundle'] . '.' . $field['#field_name'] . '.on')) && !empty($build[$field_name][0]['comments']['pager'])) {
$text = \Drupal::config('comment_ajax_pager.settings')
->get('settings.' . $field['#entity_type'] . '.' . $field['#bundle'] . '.' . $field['#field_name'] . '.text');
if (empty($text)) {
$text = 'Load more';
}
$text = t($text, [
'@per_page@' => $config['settings']['per_page'],
]);
$build[$field_name][0]['comments']['pager']['#prefix'] = '<div class="comment_load_more_pager" data-text="' . $text . '">';
$build[$field_name][0]['comments']['pager']['#suffix'] = '</div>';
}
}
}
}