Mercurial > hg > isophonics-drupal-site
diff core/modules/search/search.api.php @ 0:4c8ae668cc8c
Initial import (non-working)
author | Chris Cannam |
---|---|
date | Wed, 29 Nov 2017 16:09:58 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/core/modules/search/search.api.php Wed Nov 29 16:09:58 2017 +0000 @@ -0,0 +1,84 @@ +<?php + +/** + * @file + * Hooks provided by the Search module. + */ + +/** + * @addtogroup hooks + * @{ + */ + +/** + * Preprocess text for search. + * + * This hook is called to preprocess both the text added to the search index + * and the keywords users have submitted for searching. The same processing + * needs to be applied to both so that searches will find matches. + * + * Possible uses: + * - Adding spaces between words of Chinese or Japanese text. + * - Stemming words down to their root words to allow matches between, for + * instance, walk, walked, walking, and walks in searching. + * - Expanding abbreviations and acronyms that occur in text. + * + * @param string $text + * The text to preprocess. This is a single piece of plain text extracted + * from between two HTML tags or from the search query. It will not contain + * any HTML entities or HTML tags. + * @param string|null $langcode + * The language code for the language the text is in, if known. When this hook + * is invoked during search indexing, the language will most likely be known + * and passed in. This is left up to the search plugin; + * \Drupal\node\Plugin\Search\NodeSearch does pass in the node + * language. However, when this hook is invoked during searching, in order to + * let a module apply the same preprocessing to the search keywords and + * indexed text so they will match, $langcode will be NULL. A hook + * implementation can call the getCurrentLanguage() method on the + * 'language_manager' service to determine the current language and act + * accordingly. + * + * @return string + * The text after preprocessing. Note that if your module decides not to + * alter the text, it should return the original text. Also, after + * preprocessing, words in the text should be separated by a space. + * + * @ingroup search + */ +function hook_search_preprocess($text, $langcode = NULL) { + // If the language is not set, get it from the language manager. + if (!isset($langcode)) { + $langcode = \Drupal::languageManager()->getCurrentLanguage()->getId(); + } + + // If the langcode is set to 'en' then add variations of the word "testing" + // which can also be found during English language searches. + if ($langcode == 'en') { + // Add the alternate verb forms for the word "testing". + if ($text == 'we are testing') { + $text .= ' test tested'; + } + } + + return $text; +} + +/** + * Alter search plugin definitions. + * + * @param array $definitions + * The array of search plugin definitions, keyed by plugin ID. + * + * @see \Drupal\search\Annotation\SearchPlugin + * @see \Drupal\search\SearchPluginManager + */ +function hook_search_plugin_alter(array &$definitions) { + if (isset($definitions['node_search'])) { + $definitions['node_search']['title'] = t('Nodes'); + } +} + +/** + * @} End of "addtogroup hooks". + */