Как изменить длину поисковой фразы Joomla

Как изменить длину поисковой фразы Joomla, 5.0 из 5 основанный на 10 голосах.

В Joomla 1.5 и 2.5 для com_search по умолчанию установлена длина поисковой фразы в пределах 3- 20 символов. В подавляющем большинстве случаев этого вполне достаточно. Но что делать, если возникла необходимость расширить эти рамки?

Предположим, мне надо изменить длину поисковой фразы 2-50 символов. Приступим.



Изменение длины поисковой фразы Joomla 2.5

В отличие от J1.5 жестко заданные пределы были вынесены в файлы локализации JOOMLA_ROOT/administrator/language/en-GB/en-GB.localise.php и JOOMLA_ROOT/language/en-GB/en-GB.localise.php. Для русской локализации это файлы JOOMLA_ROOT/administrator/language/ru-RU/ru-RU.localise.php и JOOMLA_ROOT/language/ru-RU/ru-RU.localise.php. Найдите в них следующие фрагменты кода:

/**
  * Returns the lower length limit of search words
  *
  * @return  integer  The lower length limit of search words.
  * @since   1.6
  */
 public static function getLowerLimitSearchWord() {
     return 3;
 }
 /**
  * Returns the upper length limit of search words
  *
  * @return  integer  The upper length limit of search words.
  * @since   1.6
  */
 public static function getUpperLimitSearchWord() {
     return 20;
 }

Замените на нужные вам величины, в моем примере это будет выглядеть так:

/**
  * Returns the lower length limit of search words
  *
  * @return  integer  The lower length limit of search words.
  * @since   1.6
  */
 public static function getLowerLimitSearchWord() {
     return 2;
 }
 /**
  * Returns the upper length limit of search words
  *
  * @return  integer  The upper length limit of search words.
  * @since   1.6
  */
 public static function getUpperLimitSearchWord() {
     return 50;
 }

Изменение длины поисковой фразы Joomla 1.5

В Joomla 1.5 пределы жестко заданны в CMS и для внесения изменений придется править именно его. Откройте файл JOOMLA_ROOT/administrator/components/com_search/helpers/search.php. Найдите в нем следующие фрагменты кода:

Изменение нижней минимальной длины слова поиска
// filter out search terms that are too small
foreach( $aterms AS $aterm ) {
    if (JString::strlen( $aterm ) < 3) {
        $search_ignore[] = $aterm;
    }
}

Замените на нужную вам величину, в моем примере это будет выглядеть так:

// filter out search terms that are too small
foreach( $aterms AS $aterm ) {
    if (JString::strlen( $aterm ) < 2) {
        $search_ignore[] = $aterm;
    }
}
Изменение верхней максимальной длины слова поиска
function limitSearchWord(&$searchword)
{
    $restriction = false;
 
    // limit searchword to 20 characters
    if ( JString::strlen( $searchword ) > 20 ) {
        $searchword     = JString::substr( $searchword, 0, 19 );
        $restriction    = true;
    }
 
    // searchword must contain a minimum of 3 characters
    if ( $searchword && JString::strlen( $searchword ) < 3 ) {
        $searchword     = '';
        $restriction    = true;
    }
 
    return $restriction;
}

Замените на нужные вам величины, в моем примере это будет выглядеть так:

function limitSearchWord(&$searchword)
{
    $restriction = false;
 
    // limit searchword to 20 characters
    if ( JString::strlen( $searchword ) > 50 ) {
        $searchword     = JString::substr( $searchword, 0, 49 );
        $restriction    = true;
    }
 
    // searchword must contain a minimum of 3 characters
    if ( $searchword && JString::strlen( $searchword ) < 2 ) {
        $searchword     = '';
        $restriction    = true;
    }
 
    return $restriction;
}

Теперь в папке с текущим шаблоном необходимо изменить файл default_form.php. В качестве примера я предлагаю заглянуть в код шаблона «beez». Найдите файл JOOMLA_ROOT/templates/beez/html/com_search/search/default_form.php. Найдите в нем следующий фрагмент кода:

<input type="text" name="searchword" id="search_searchword" maxlength="20" value="<?php echo $this->escape($this->searchword) ?>" class="inputbox">

Замените на нужную вам величину, в моем примере это будет выглядеть так:

<input type="text" name="searchword" id="search_searchword" maxlength="50" value="<?php echo $this->escape($this->searchword) ?>" class="inputbox">

Если в вашем текущем шаблоне такого файла нет, то необходимо сделать такие изменения в компоненте поиска JOOMLA_ROOT/components/com_search/views/search/tmpl/default_form.php.

Теперь откорректируем сообщение для модуля поиска о измененном диапазоне поиска: Найдите файл JOOMLA_ROOT/language/en-GB/en-GB.com_search.ini и измените строку

SEARCH_MESSAGE=Search term must be a minimum of 3 characters and a maximum of 20 characters.

на

SEARCH_MESSAGE=Search term must be a minimum of 2 characters and a maximum of 50 characters.

Для русской локализации это файл JOOMLA_ROOT/language/ru-RU/ru-RU.com_search.ini.


Готово, стандартный модуль поиска Joomla позволит искать фрагменты от 2 до 50 символов.


Если эта статья показалась вам полезной, пожалуйста, проголосуйте за нее. Это поможет другим быстрее найти эту статью из множества других менее полезных.
( 10 Голосов ) 

Комментарии   

 
# MyHetman.com 15.05.2013 08:22
Большое человеческое спасибо за такую статью. Целый день с этим мучился - не мог добиться нормальной работы от поиска.
По-дурному он в джумле реализован.
Ответить | Ответить с цитатой | Цитировать
 
 
# Ковенко В.Б. 15.05.2013 08:44
Сколько людей, столько и мнений. Это же не Яндекс с Google. Воспользуйтесь поиском по сайту от Яндекс, поиск станет качественным и релевантным. Нравится поиск Google, тоже расписано как сделать. Все в ваших руках.
Ответить | Ответить с цитатой | Цитировать
 

Добавить комментарий

Уважаемые посетители!
Комментарии модерируются, активные ссылки на сайты не публикуются. Пожалуйста, не тратьте понапрасну свое и мое время на попытку размещения спамерских ссылок.
Спасибо.


Защитный код
Обновить