You are here

function lightning_search_node_type_insert in Lightning Core 8.4

Same name and namespace in other branches
  1. 8.5 modules/lightning_search/lightning_search.module \lightning_search_node_type_insert()
  2. 8 modules/lightning_search/lightning_search.module \lightning_search_node_type_insert()
  3. 8.2 modules/lightning_search/lightning_search.module \lightning_search_node_type_insert()
  4. 8.3 modules/lightning_search/lightning_search.module \lightning_search_node_type_insert()

Implements hook_ENTITY_TYPE_insert().

1 string reference to 'lightning_search_node_type_insert'
lightning_search_install in modules/lightning_search/lightning_search.install
Implements hook_install().

File

modules/lightning_search/lightning_search.module, line 17
Contains Search API integration for Lightning.

Code

function lightning_search_node_type_insert(NodeTypeInterface $node_type) {

  // Don't do anything during config sync.
  if (\Drupal::isConfigSyncing()) {
    return;
  }
  $type = $node_type
    ->id();

  // No point in continuing without an index to configure.

  /** @var \Drupal\search_api\IndexInterface $index */
  $index = Index::load('content');
  if (empty($index)) {
    return;
  }

  /** @var \Drupal\lightning_core\DisplayHelper $display_helper */
  $display_helper = \Drupal::service('lightning.display_helper');
  $field = $index
    ->getField('rendered');
  if ($field) {
    $configuration = $field
      ->getConfiguration();
    $configuration['view_mode']['entity:node'][$type] = $display_helper
      ->getPreferredMode('node', $type, [
      'search_index',
      'full',
    ]);
    $field
      ->setConfiguration($configuration);
    $index
      ->save();
  }

  /** @var \Drupal\views\ViewEntityInterface $view */
  $view = View::load('search');
  if (empty($view)) {
    return;
  }
  $display =& $view
    ->getDisplay('default');
  if ($display['display_options']['row']['type'] == 'search_api') {
    $display['display_options']['row']['options']['view_modes']['entity:node'][$type] = $display_helper
      ->getPreferredMode('node', $type, [
      'search_result',
      'teaser',
    ]);
    $view
      ->save();
  }
}