search.pages.inc

Same filename and directory in other branches
  1. 7.x modules/search/search.pages.inc
  2. 9 core/modules/search/search.pages.inc
  3. 8.9.x core/modules/search/search.pages.inc
  4. 10 core/modules/search/search.pages.inc

User page callbacks for the Search module.

File

core/modules/search/search.pages.inc

View source
<?php


/**
 * @file
 * User page callbacks for the Search module.
 */
use Drupal\Component\Utility\UrlHelper;
use Drupal\Core\Language\LanguageInterface;

/**
 * Prepares variables for individual search result templates.
 *
 * Default template: search-result.html.twig
 *
 * @param array $variables
 *   An array with the following elements:
 *   - result: Individual search result.
 *   - plugin_id: Plugin the search results came from.
 *   - title_prefix: Additional output populated by modules, intended to be
 *     displayed in front of the main title tag that appears in the template.
 *   - title_suffix: Additional output populated by modules, intended to be
 *     displayed after the main title tag that appears in the template.
 *   - title_attributes: HTML attributes for the title.
 *   - content_attributes: HTML attributes for the content.
 */
function template_preprocess_search_result(&$variables) {
    $language_interface = \Drupal::languageManager()->getCurrentLanguage();
    $result = $variables['result'];
    $variables['url'] = UrlHelper::stripDangerousProtocols($result['link']);
    $variables['title'] = $result['title'];
    if (isset($result['langcode']) && $result['langcode'] != $language_interface->getId() && $result['langcode'] != LanguageInterface::LANGCODE_NOT_SPECIFIED) {
        $variables['title_attributes']['lang'] = $result['langcode'];
        $variables['content_attributes']['lang'] = $result['langcode'];
    }
    $info = [];
    if (!empty($result['plugin_id'])) {
        $info['plugin_id'] = $result['plugin_id'];
    }
    if (!empty($result['user'])) {
        $info['user'] = $result['user'];
    }
    if (!empty($result['date'])) {
        $info['date'] = \Drupal::service('date.formatter')->format($result['date'], 'short');
    }
    if (isset($result['extra']) && is_array($result['extra'])) {
        $info = array_merge($info, $result['extra']);
    }
    // Check for existence. User search does not include snippets.
    $variables['snippet'] = $result['snippet'] ?? '';
    // Provide separated and grouped meta information..
    $variables['info_split'] = $info;
    $variables['info'] = [
        '#type' => 'inline_template',
        '#template' => '{{ info|safe_join(" - ") }}',
        '#context' => [
            'info' => $info,
        ],
    ];
}

Functions

Title Deprecated Summary
template_preprocess_search_result Prepares variables for individual search result templates.

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.