/** * Indexes a single node. * * @param \Drupal\node\NodeInterface $node * The node to index. */ protected function indexNode(NodeInterface $node) { // Save the changed time of the most recent indexed node, for the search // results half-life calculation. $this->state->set('node.cron_last', $node->getChangedTime()); $languages = $node->getTranslationLanguages(); $node_render = $this->entityManager->getViewBuilder('node'); foreach ($languages as $language) { $node = $node->getTranslation($language->id); // Render the node. $build = $node_render->view($node, 'search_index', $language->id); unset($build['#theme']); $node->rendered = drupal_render($build); $text = '<h1>' . String::checkPlain($node->label($language->id)) . '</h1>' . $node->rendered; // Fetch extra data normally not visible. $extra = $this->moduleHandler->invokeAll('node_update_index', array($node, $language->id)); foreach ($extra as $t) { $text .= $t; } // Update index. search_index($node->id(), $this->getPluginId(), $text, $language->id); } }