2009 09 марта

Стандартный поиск по отдельным категориям, !Joomla 1.0.xx

logoС подачи пользователя DK-Scorp набросан данный хак. Что делает - добавляет в стандартный компонент поиска движка возможность выбора категории, в которой производить поиск. По умолчанию данный пример работает на выбор всех категорий всех разделов, нужно ограничить - смотрим первый запрос. Топорно но работает (осторожно много хаков :))
Файл search.php компонента, функция viewSearch После строки
1
$ordering = strtolower( strval( mosGetParam( $_REQUEST, 'ordering', 'newest') ) );
добавляем
1
$category = strtolower( strval( mosGetParam( $_REQUEST, 'category', '') ) );
после
1
$lists['searchphrase']= mosHTML::radioList( $searchphrases, 'searchphrase', '', $searchphrase );
добавляем (запрос для образца, прочие проверки публикации, просроченности etc добавляем самостоятельно)
1
23
45
67
89
1011
1213
//category select
    $query = "SELECT id, title "                . "\n FROM #__categories  "
                . "\n WHERE section in (SELECT id FROM #__sections)   "                . "\n AND published = 1 "
                ;        $database->setQuery( $query );
        $catlist = $database->loadObjectList();        $orders = array();
        foreach ($catlist as $catrow) {                $catlists[] = mosHTML::makeOption( $catrow->id, $catrow->title );
        }        $lists['category'] = mosHTML::selectList( $catlists, 'category', ' class="inputbox"', 'value', 'text', $category  );
Ниже находим строку
1
$results = $_MAMBOTS->trigger( 'onSearch', array( $database->getEscaped( $searchword ), $phrase, $ordering) );
и заменяем на
1
$results = $_MAMBOTS->trigger( 'onSearch', array( $database->getEscaped( $searchword ), $phrase, $ordering, $category ) );
Файл search.html.php в функции searchbox добавляем новую строку
1
23
45
67
8
<tr>
        <td colspan="3">                <label for="search_ordering">
                        SELECT CATEGORY:                </label>
                <?php echo $lists['category']?>        </td>
</tr>
В функцию display добавляем строку
1
$category = strtolower( strval( mosGetParam( $_REQUEST, 'category', '' ) ) );
Ну и наконец файл бота content.searchbot.php Дополнительный параметр в функцию
1
function botSearchContent( $text, $phrase='', $ordering='', $category='' )
и в запрос который отмечен комментом "search content items" добавить условие
1
. "\n AND a.catid = ".$category.""
Ну и соответственно если список категорий нужно будет ограничить одним либо несколькими разделами, то смотрим наш первый добавленный запрос, что формирует собственно список Скриншот: Стандартный поиск по отдельным категориям Joomla 1.0.xx

Комментарии

0 valery пишет нам 21.03.2009 05:00
для работоспособности кода, необходимо заменить символы одинарных кавычек (и их пары) на сами кавычки. хак работает, опробовал. благодарю
Цитировать Сообщить модератору
0 Beliyadm пишет нам 21.03.2009 05:31
кавычки это парсер WP плагина Code Snippet косячит, надо его заменить на что-нить другое
Цитировать Сообщить модератору
0 Dos пишет нам 21.03.2009 22:53
была проблема с кавычками $lists[‘category’] = mosHTML::selectList( $catlists, ‘category’, ‘ class="inputbox"’, ‘value’, ‘text’, $category ); вместо ‘ class="inputbox"’ написал 'class="inputbox"' и поиск запустился но в SELECT CATEROTY пусто... причем пустот столько же, сколько и категорий. не знаю че делать....... (((((
Цитировать Сообщить модератору
0 Beliyadm пишет нам 21.03.2009 23:07
везде в $lists замени текущее уродство на одинарные кавычки $lists['category'] = mosHTML::selectList( $catlists, 'category', ' class="inputbox"', 'value', 'text', $category ); И еще раз проверь последовательность хака и правильность синтаксиса, хак рабочий, проверено
Цитировать Сообщить модератору
0 Сергей пишет нам 21.04.2009 15:45
А реализовать только по заголовкам (материалов) возможно ? если да то как)?
Цитировать Сообщить модератору
0 Beliyadm отвечает 21.04.2009 19:05
Сергей - конечно можно, в файле content.searchbot.php из запроса // search content items убрать строку (у меня №119) . "\n CONCAT(a.introtext, a.fulltext) AS text,"
Цитировать Сообщить модератору
0 valery пишет нам 04.07.2009 16:25
Можно ли в состав выбора условий поиска включить поиск по всему сайту?
Цитировать Сообщить модератору
0 Beliyadm отвечает 04.07.2009 16:33
конечно можно, добавить пустой элемент массива $lists[‘category’] (генерирующего список) еще придется в файле мамбота подправить условие, что если переменная $category пришла пустой, то не подставлять её в запрос (иначе запрос вернет NULL)
Цитировать Сообщить модератору
0 jem777 пишет нам 02.08.2009 16:40
Beliyadm, а вы не могли бы выложить сразу хакнутые файлы. Что то прямо беда с этими кавычками, никак не могу заставить это работать.
Цитировать Сообщить модератору
0 Beliyadm отвечает 02.08.2009 18:09
Затруднительно, придется повторять хак, бо делал только по просьбе на старом тестовом сайте. Постараюсь повторить и выложить
Цитировать Сообщить модератору
0 jem777 отвечает 01.09.2009 11:57
Спасибо! В принципе можно поступить проще, вышеприведенный код написать в текстовом редакторе и прикрепить к статье. Тогда код хака был бы сразу понятен, а то с этими кавычками действительно трудно.
Цитировать Сообщить модератору
0 Алексей пишет нам 08.02.2010 21:47
У меня верхней строчки нет. А хотелось бы прикрутить вашу модернизацию. Может Вам файлик выслать?
Цитировать Сообщить модератору
0 Beliyadm отвечает 08.02.2010 21:58
Для начала не забываем это хак для версии движка 1.0, в ней не может не быть первой строки. Для 1.5 в общий доступ модификацию не выкладывал
Цитировать Сообщить модератору
0 Serge пишет нам 24.06.2014 22:58
Для J2.5 не делалось подобное? Очень полезная функция и очень нужная.
Цитировать Сообщить модератору
0 Beliyadm отвечает 28.06.2014 14:59
Нет, для 2.5 пока необходимости не было, если в каком-либо ТЗ клиент попросит сделать - выложу в блог, но пока увы.
Цитировать Сообщить модератору
0 Serge отвечает 08.07.2014 19:34
А если бы я выступил в роли такого клиента? Есть N категорий. Меньше 10. Надо добавить на страницу результатов поиска кнопки с названиями этих категорий. При нажатии на кнопку поиск только по соотв. категории.
Цитировать Сообщить модератору
0 Beliyadm отвечает 09.07.2014 13:27
Добрый день. Именно кнопки, не выпадающий список? Напишите мне на почту с напоминанием и указанием версии движка, на днях могу поковыряться.
Цитировать Сообщить модератору
0 Artem пишет нам 17.01.2015 00:12
Здравствуйте, заметил на вашем сайте решение по поиску в определённой категории для joomla 1, и хочу спросить не реализовывали вы такую же возможность для joomla 2.5? Недавно начал изучать php , уже 3 для мучаюсь , а на форуме joomla молчат.
Цитировать Сообщить модератору
0 Beliyadm отвечает 17.01.2015 00:35
Добрый день. Да, делал для 2.5 под одного из клиентов, но не документировал для публикации в блоге. Если нужно - попробую на выходных набросать готовое решение для 2.5 (или сразу под 3.х актуальней будет?). Если все помню - там ничего сложного и логика примерно совпадает
Цитировать Сообщить модератору

Оставить коммент

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