Поиск по стороннему компоненту? Icms2+

 
Посетитель
small user social cms
МедальАвторитет форумаКубок зрительских симпатий
Сообщений: 1862
Предусмотрено ли в двойке использование системного поиска в своем компоненте?
Дополнения для InstantCMS
Посетитель
small user social cms
МедальПочетный донор проектаАвторитет форумаКубок зрительских симпатийПочетный донор проекта
Сообщений: 2636
kreator, я ковырял поиск. Он ищет только по типам контента.

В теме пожеланий я просил добавить хук в экшн поиска, тогда можно было бы добавлять свои результаты в $results[].

Но пока тишина...
Виджеты, поля и компоненты для instantcms 2 http://www.zau4man.ru/
Реклама
cms
Модератор
small user social cms
МедальКубок зрительских симпатийАвторитет форума
Сообщений: 1341
Не пробовал конечно, но не то?
почему я задаю мало вопросов? потому, что на 90% из них уже кто-то ответил...
Посетитель
small user social cms
МедальКубок зрительских симпатийАвторитет форума
Сообщений: 1241
Zau4man:
Он ищет только по типам контента.
Теги тоже зависимы от типов контента :(
Дополнения для InstantCMS 2 | Готовый сайт Доска объявлений
Посетитель
small user social cms
МедальАвторитет форумаПочетный донор проекта
Сообщений: 1377
kreator, Только если экшен свой будет.

Общий поиск сейчас завязан на схожих таблицах для компонентов. Поэтому по ним и ищет. Если у вас таблица различается, то придется делать свой поиск
Фриланс по Intantcms 1 и 2 версий.Писать в ЛС. Отзывы заказчиков
Посетитель
small user social cms
МедальПочетный донор проектаАвторитет форумаКубок зрительских симпатийПочетный донор проекта
Сообщений: 2636
kirkr:
Если у вас таблица различается, то придется делать свой поиск
так ведь никто не против сделать свой. Но нужно эти результаты показывать пользователю. А значит нужен
Zau4man:
хук в экшн поиска, тогда можно было бы добавлять свои результаты в $results[]
Виджеты, поля и компоненты для instantcms 2 http://www.zau4man.ru/
Посетитель
small user social cms
МедальАвторитет форумаПочетный донор проекта
Сообщений: 1377
Zau4man, либо отдельный поиск для компонента и виджет выводить на главной странице.
Фриланс по Intantcms 1 и 2 версий.Писать в ЛС. Отзывы заказчиков
Посетитель
small user social cms
МедальПочетный донор проектаАвторитет форумаКубок зрительских симпатийПочетный донор проекта
Сообщений: 2636
kirkr, а как юзеру объяснить, что на сайте два поиска?)
Виджеты, поля и компоненты для instantcms 2 http://www.zau4man.ru/
InstantCMS Team
small user social cms
МедальАвторитет форумаКубок зрительских симпатий
Сообщений: 4569
добавили поддержку
https://github.com/instantsoft/icms2/commit/c1354de0cabffe4dde262c74597494c07fec0571

Заинтересованных прошу протестировать. Установить движок из гита и сделать поиск своему компоненту.
Видео каталог для InstantCMS | Аудио каталог для InstantCMS | Мы Вконтакте | Предложение для спонсоров
Посетитель
small user social cms
МедальАвторитет форумаПочетный донор проекта
Сообщений: 1377
Поиск по всем полям сторонник компонентов?
Сегодня вечером залью проверю.
Фриланс по Intantcms 1 и 2 версий.Писать в ЛС. Отзывы заказчиков
InstantCMS Team
small user social cms
МедальАвторитет форумаКубок зрительских симпатий
Сообщений: 4569
kirkr:
Поиск по всем полям сторонник компонентов
это как вы в своем компоненте сделаете. чуть позже напишу документацию, а пока смотрите фронтэнд компонента поиск. там добавлен хук и еще много всего. возникнут вопросы, задавайте.
Видео каталог для InstantCMS | Аудио каталог для InstantCMS | Мы Вконтакте | Предложение для спонсоров
Посетитель
small user social cms
МедальПочетный донор проектаАвторитет форумаКубок зрительских симпатийПочетный донор проекта
Сообщений: 2636
Fuze, качаю, отпишу завтра.
Виджеты, поля и компоненты для instantcms 2 http://www.zau4man.ru/
Посетитель
small user social cms
МедальПочетный донор проектаАвторитет форумаКубок зрительских симпатийПочетный донор проекта
Сообщений: 2636
так. Создал свой хук. Код черновой.

Код PHP:
  1. <?php
  2.  
  3. class onAfishaFulltextSearch extends cmsAction {
  4.  
  5. public function run($data){
  6.  
  7. list($model, $ctype) = $data;
  8.  
  9.  
  10. $sql_fields = array('event', 'info');
  11. $default_fields=array('id','id','date');
  12. $results_count = $model->getSearchResultsCount('afisha_events', $sql_fields, $default_fields);
  13.  
  14. if ($results_count){
  15.  
  16. $result = $model->getSearchResults('afisha_events', $sql_fields, $default_fields);
  17.  
  18. }
  19.  
  20. $results[] = array(
  21. 'title' => 'Афиша',
  22. 'name' => 'afisha',
  23. 'items' => $result,
  24. 'count' => $results_count
  25. );
  26.  
  27. return $results;
  28.  
  29. }
  30.  
  31. }
  32.  
Как компонент поиска что-то найдет, если в getSearchSQL идет две жесткие привязки в запросах

Код PHP:
  1. $sql = "SELECT {$select_fields}
  2. FROM {#}{$table_name}
  3. WHERE is_pub = 1 AND MATCH({$sql_fields}) AGAINST ('{$query}' IN BOOLEAN MODE)
  4. ";
и
Код PHP:
  1. if ($this->date_interval != 'all'){
  2.  
  3. switch ($this->date_interval){
  4. case 'w':
  5. $sql .= "AND DATEDIFF(NOW(), date_pub) <= 7 \n";
  6. break;
  7. case 'm':
  8. $sql .= "AND DATE_SUB(NOW(), INTERVAL 1 MONTH) < date_pub \n";
  9. break;
  10. case 'y':
  11. $sql .= "AND DATE_SUB(NOW(), INTERVAL 1 YEAR) < date_pub \n";
  12. break;
  13. }
  14.  
  15. }
к полям is_pub и date_pub. Их у меня нет. is_pub можно создать. Но тогда не понятно, зачем задавать $default_fields.

Тапками прошу не кидаться, я может не совсем понял назначение методов в модели поиска.
Виджеты, поля и компоненты для instantcms 2 http://www.zau4man.ru/
InstantCMS Team
small user social cms
МедальАвторитет форумаКубок зрительских симпатий
Сообщений: 4569
Zau4man:
Как компонент поиска что-то найдет, если в getSearchSQL идет две жесткие привязки в запросах
дело в том, что системный поиск использует поле даты. В поисковой форме есть выбор интервала. Соответственно поле date_pub должно быть и у вас.
По полю is_pub согласен, уберу его, сделаю более универсально.
Zau4man:
зачем задавать $default_fields
Они для выборки
Видео каталог для InstantCMS | Аудио каталог для InstantCMS | Мы Вконтакте | Предложение для спонсоров
Посетитель
small user social cms
МедальПочетный донор проектаАвторитет форумаКубок зрительских симпатийПочетный донор проекта
Сообщений: 2636
Fuze:
date_pub должно быть и у вас.
не. я о том, что у меня, в частности, поле называется просто date. Можно ли в системном поиске проверять, заполнены ли $default_fields и, если заполнены, искать по их названиям, а не по date_pub?
Так, я понял. А может добавить универсальности с возможностью указать свое название поля даты?

И еще. Что-то надо делать с выводом результатов в шаблон. Там кругом нужен ctype_name.
В итоге получаем ошибку

Код PHP:
  1. Warning: Invalid argument supplied for foreach() in Z:\home\instant2test2\www\templates\default\controllers\search\index.tpl.php on line 67
так как результаты поиска вроде бы есть, но они отсекаются при переборе.

А так все здорово конечно. Переименовал столбцы в базе. И вардампом вижу, что все ищется, до шаблона доходит.
Редактировалось: 2 раз (Последний: 15 декабря 2015 в 22:34)
Виджеты, поля и компоненты для instantcms 2 http://www.zau4man.ru/
В начало страницы
Предыдущая темаСледующая тема Перейти на форум:
Быстрый ответ
Чтобы писать на форуме, зарегистрируйтесь или авторизуйтесь.