Joomla 1.5: проблемы стандартного поиска, AceSearch Печать
Добавил(а) microsin   

AceSearch-logoВместе с установкой Joomla Вы получаете встроенную систему поиска по сайту. Для начала её вполне достаточно, однако со временем становятся заметны недостатки. Вот они, по мере убывания по важности:

1. Встроенная поиска Joomla работает только в пределах ограниченного размера статьи. Т. е. большие статьи при поиске он не просматривает до конца. Если объем статьи превышает примерно 65000 символов, то дальше этого предела поиск не работает. Возможно, ограничение введено для ускорения поиска, либо просто ошибка. Исправить нельзя, настройки этого параметра не предусмотрены, решения проблемы не нашел.

2. Нельзя искать комбинацию слов, нельзя накладывать фильтр на поиск. Короче говоря, расширенный поиск полностью отсутствует.

3. Ограничение на минимальное и максимальное количество символов в строке поиска. Это жестко вшито в код, настроек нет. Ограничение сделано с целью ускорения поиска, и для уменьшения вероятности взлома [5]. Можно вручную пофиксить, см. [4].

Самое досадное, что нет поиска по всей статье от начала до конца, если статья большого размера. Начал думать, чем же можно заменить стандартный поиск. Оказалось, что для Joomla 1.5 сейчас вариантов осталось не так много. То что предлагают, либо платное, либо низкого качества, либо поддерживают только новые версии Joomla. Понравилась система поиска AceSearch, которая проста в установке, и обладает большими возможностями. Здесь коротко описана установка и настройка AceSearch.

[ACESEARCH FREE, установка на Joomla 1.5]

Установка AceSearch делается точно так же, как и все другие расширения Joomla. Документация довольно скупа, но настраивается система логично и понятно. К сожалению, тонкая настройка (оформление, цвета, размеры поля ввода искомой строки) делается не очень просто - через правку текстового файла CSS.

AceSearch выпускается в нескольких вариантах, из которых бесплатный вариант AceSearch Free. На мой взгляд, достоин внимания также вариант AceSearch Pro, он стоит $31. Однако вариант Free имеет полный неограниченный поисковый функционал, недоступны только некоторые сервисные функции - нет настраиваемых фильтров, нет статистики по ключевым словам поиска. Далее описан пошаговый процесс установки.

1. Скачать архив AceSearch_free_FIRST_UNZIP.zip [1]. В архиве содержатся сразу 3 варианта пакета: com_acesearch_j15_free.zip, com_acesearch_j25_free.zip, com_acesearch_j30_free.zip для разных версий Joomla. У меня была версия Joomla 1.5, поэтому я выбрал com_acesearch_j15_free.zip, этот файл я распаковал из архива AceSearch_free_FIRST_UNZIP.zip.

Прим. переводчика: русифицированную версию AceSearch Free можно скачать по ссылке [6]. Русифицированные INI-файлы подойдут для версий Joomla 1.5, 1.6, для версий Joomla 2.5 и 3.0 возможно потребуется их доработка.

2. Проверить версию PHP, она должна быть не ниже PHP 5.2.0 (версию можно узнать с помощью вызова функции phpinfo(), см. [3]).

3. Для установки залогиньтесь в админку Joomla, зайдите в Расширения -> Установка и удаление, в секции "Закачка файла пакета" нажмите кнопку "Выберите файл", выберите com_acesearch_j15_free.zip, затем кликните на "Закачать файл & Установить". Через несколько десятков секунд компонент установится.

4. Сразу после установки на фронтэнде сайта отобразится поле ввода для поиска "search..." вместе со старым стандартным поиском Joomla "найти...". Конечно же, старый модуль поиска нужно отключить. Для этого зайдите в меню Расширения -> Модули, и выключите модуль "Поиск".

5. В списке модулей увидите новый модуль "AceSearch - Search". Зайдите в его настройки, поменяйте Порядок, чтобы модуль отображался там, где Вам нужно (в выпадающем списке выбирается позиция модуля AceSearch в шаблоне относительно других модулей). Справа поменяйте приглашения поиска ("search..." замените на русское "найти...").

6. Поменяйте длину заголовка в результатах поиска AceSearch Конфигурация -> Front-end -> Результаты -> Длина заголовка -> поменяйте значение по умолчанию 60 на 200. Там же поменяйте формат даты и отключите показывать URL.

Если Вы установили Free версию (бесплатную), то на этом основные настройки закончены.

[ACESEARCH PRO]

Эта версия включает в себя все возможности, стоит $39. Оплатить можно через PayPal, это совсем несложно. После оплаты на email придет ссылка для закачки. Устанавливается точно так же, как и FREE. После установки в AceSearch Control Panel нужно ввести Download-ID, который был прислан в email. Вот собственно и все различие.

[Редактирование CSS]

На оформление ACESEARCH влияют стили CSS, которые можно отредактировать через AceSearch Control Panel -> CSS. К сожалению, возврат файла CSS в состояние по умолчанию и откат настроек не предусмотрены, поэтому будьте осторожны.

По умолчанию внешний вид и размеры поля ввода определены стилем .acesearch_input_module. Вы можете его отредактировать, добавить свой стиль для поля ввода поиска. Примененный стиль поля ввода задается в свойствах модуля AceSearch - Search (mod_acesearch). Чтобы применить новый стиль для поля ввода поиска, зайдите в Расширения -> Модули -> кликните на AceSearch - Search, и справа поменяйте в поле ввода Search box CSS class имя используемого стиля (там по умолчанию вбито acesearch_input_module, можете указать другой готовый стиль acesearch_input_small_module или имя своего собственного стиля). Ниже можно задать также стиль для кнопки поиска.

[Русификация ACESEARCH]

Как почти все расширения Joomla 1.5, система поиска AceSearch поддерживает стандартную автоматическую локализацию (с помощью определения переменных в ini-файлах). К сожалению, поставляется AceSearch только с английским языком, но русифицировать можно самостоятельно. Вот файлы, которые определяют текстовое оформление AceSearch (файлы должны иметь кодировку UTF-8):

Файл локализации панели администрирования AceSearch (оформление бэкэнда) для английского языка. Его русифицировать необязательно. Для того, чтобы русифицировать, нужно в папку administrator/language/ru-RU/ положить файл ru-RU.com_acesearch.ini [6].

Файл локализации интерфейса поиска пользователя (оформление фронтэнда) для английского языка. Это именно то, что видят все посетители сайта, поэтому этот файл должен быть русифицирован, чтобы отображение поиска выглядело нормально. Для того, чтобы русифицировать, нужно в папку language/ru-RU/ сайта файл ru-RU.com_acesearch.ini [6].

Файл локализации настроек модуля в админке Joomla (оформление бэкэнда) для английского языка. Его русифицировать необязательно. Для того, чтобы русифицировать, нужно положить файл ru-RU.mod_acesearch_admin.ini [6] в папку administrator/language/ru-RU/ сайта.

Файл локализации главного меню настроек AceSearch (оформление бэкэнда) для английского языка. Его русифицировать необязательно. Для того, чтобы русифицировать, нужно положить файл ru-RU.mod_acesearch_quickicons.ini [6] в папку administrator/language/ru-RU/ сайта.

Файл локализации модуля поиска (оформление фронтэнда) для английского языка. Это именно то, что видят все посетители сайта, поэтому этот файл должен быть русифицирован, чтобы отображение поиска выглядело нормально. Для того, чтобы русифицировать, нужно в папку language/ru-RU/ сайта положить файл ru-RU.mod_acesearch.ini [6].

Принцип локализации прост: если при настроенной локализации ru-RU отсутствует ini-файл для русского языка, то будет отображаться оформление en-GB. Если имеется соответствующий файл русификации ru-RU, то для оформления будет использоваться именно он. INI-файл с русифицированным текстом должен иметь кодировку UTF-8.

Все, что нужно для основной русификации AceSearch, это русифицировать en-GB.com_acesearch.ini и en-GB.mod_acesearch.ini (скопировать в нужное место файлы ru-RU.com_acesearch.ini и ru-RU.mod_acesearch.ini). Панель управления (AceSearch Control Panel) русифицировать необязательно, но это также можно сделать, если Вам это нужно. Скачать русифицированные файлы ini-файлы можно по ссылке [6].

[Корректировка внешнего вида модуля]

1. Подобрал ширину строки ввода, чтобы она хорошо выглядела в левой полосе сайта. Для этого изменил acesearch.css, поправил параметр стиля (класса) acesearch_input_module, ширину width поменял с 133 пикселя на 120.

.acesearch_input_module_modif {
    width: 120px !important;
    float: left !important;
    background: url("../images/search-input.png") no-repeat scroll left top #F9F9F9 !important;
    border: 1px solid gainsboro !important;
    padding: 3px 0 3px 30px !important;
}

2. По умолчанию модуль отображает строку поиска с большим отступом под ней.

ACESearch-module-bottom-big-space

Это происходит потому, что стиль acesearch_clear делает слишком большой отступ. Так как этот стиль, кроме оформления модуля, используется еще во многих местах ACESearch, добавил в acesearch.css стиль acesearch_clear_mod_bottom (отредактировал стиль acesearch_clear):

.acesearch_clear{
    clear: both;
    height: 10px;
}
  
.acesearch_clear_mod_bottom{
    height: 0px;
}

После этого поправил файл отображения модуля modules/mod_acesearch/tmpl/default.php, применив новый стиль вместо старого:

...
< !-- < div class="acesearch_clear" >< /div > -- >
< div class="acesearch_clear_mod_bottom" >< /div >

3. Поправил внешний вид ссылки "Расширенный поиск". По умолчанию она отображается слишком большим фиксированным шрифтом, что не вписывается в общий дизайн сайта. Поправил, отредактировав файл modules/mod_acesearch/mod_acesearch.php:

...
if ($params->get('show_advanced_search', '0') == '1') {
   $link = 'index.php?option=com_acesearch&view=advancedsearch'. $flter . \
       AcesearchUtility::getItemid($group_id, true);
   /*$advanced = '< a style="font-size:12px;float:left;padding-left:5px;line-height:2.5em;" \
 href='. JRoute::_($link).' title="'.JText::_('COM_ACESEARCH_SEARCH_ADVANCED_SEARCH').'">'.\
 JText::_('COM_ACESEARCH_SEARCH_ADVANCED_SEARCH').'< /a>';*/
   $advanced = '< a style="float:left;padding-left:5px;" href='. JRoute::_($link).' title="'.\
       JText::_('COM_ACESEARCH_SEARCH_ADVANCED_SEARCH').'">'.\
       JText::_('COM_ACESEARCH_SEARCH_ADVANCED_SEARCH').'< /a>';
}

Исправил стиль acesearch_bg_module, уменьшив height с 50 пикселов на 40:

/*
.acesearch_bg_module {
 width: 100%;
 height: 50px;
}*/
.acesearch_bg_module {
    width: 100%;
    height: 40px;
}

После этих правок модуль ввода строки поиска стал отображаться нормально.

4. В списке результатов их номера отображаются ненормально большим шрифтом. Исправил правкой кода components/com_acesearch/views/search/tmpl/default_results.php:

< div >
   < !-- < font size="3px" color="#6a6767" >< ?php echo $this -> pagination -> getRowOffset($i); ? >.< /font > -->
   < font color="#6a6767" >< strong >< ?php echo $this -> pagination -> getRowOffset($i); ? >< /strong >.< /font >
   < font size="3px" >< a href="/< ?php echo $result -> link; ? >" >< ?php echo $result -> name; ? >< /a >< /font >
< /div >

5. Подстроил стиль, выделяющий искомый текст в результатах поиска (закомментировал padding в стиле acesearch_highlight, файл components/com_acesearch/assets/css/acesearch.css):

/* Highlight */
.acesearch_highlight {
    font-weight:bold;
    /*padding:1px 4px;*/
}

[Ссылки]

1. ACESEARCH FREE download site:joomace.net.
2. ACESEARCH User Manual, FAQ & Video Tutorials site:joomace.net.
3. Простейшие примеры скриптов на PHP.
4. Изменение/снятие ограничений на длину строки поиска и его попутная доработка site:stanislaw.ru.
5. Reason for Joomla Search Limited to 20 Characters site:groups.google.com.
6. 140604AceSearch_free_FIRST_UNZIP.zip - русифицированный AceSearch Free.