fulltext_search — HOOK позволяющий подключить поиск к своему компоненту.
Поиск ведется по указанной таблице БД и указанным полям.
А как провести поиск по нескольким таблицам сразу?
Так если данные компонента размещены в трех таблицах то и поиск выводить в трех разделах поиска по каждой таблице? Как можно объединить?
InstantCMS 2.X
#1
6 марта 2017 в 18:19
#2
6 марта 2017 в 18:45
Join?
#3
6 марта 2017 в 18:48
С хуком работали? Там не запросы в БД присутствуют, а указываются таблицы и столбцы, который в последующем обрабатываются компонентом searchJoin?
Сегодня в 04:52
#4
6 марта 2017 в 19:03
Kreator, в моей версии форума есть пример по поиску в двух таблицах. Как добавить третью таблицу, думаю сообразите.
#5
6 марта 2017 в 19:34
поправьте плиз. это выходит если на сайте у вас что-то попытаться поискатьв моей версии форума есть пример по поиску в двух таблицах
#6
6 марта 2017 в 19:40
Kreator,
Вот содержимое хука из форума от Loadырь
Вот содержимое хука из форума от Loadырь
<?php class onForumFulltextSearch extends cmsAction { public function run(){ 'threads' => LANG_FORUM_THREADS_ON_FORUM, 'posts' => LANG_FORUM_POSTS_ON_FORUM ); 'threads' => 'forum_threads', 'posts' => 'forum_posts' ); ); ); ); $forum_model = $this->model; 'name' => $this->name, 'sources' => $sources, 'table_names' => $table_names, 'match_fields' => $match_fields, 'select_fields' => $select_fields, 'filters' => $filters, 'item_callback' => function($item, $model, $sources_name, $match_fields, $select_fields) use ($forum_model){ if ($sources_name == 'threads'){ 'title' => $item['title'], 'date_pub' => $item['date_pub'], 'image' => '' )); } else { $thread = $forum_model->getThread($item['thread_id']); // скрытый текст $hidetext = cmsCore::isControllerExists('hidetext') ? cmsCore::getController('hidetext') : false; $item['content_html'] = $hidetext->parseHide($item['content_html']); } } 'title' => $thread['title'], 'date_pub' => $item['date_pub'], 'image' => '' )); } } ); } }
#7
6 марта 2017 в 19:46
Да, такой поиск уже давно работает в моем форуме. Но при таком раскладе в результатах поиска появляются 2 вкладки отдельно: темы форума и сообщения форума. А вот хочу чтобы это было одним списком. Не реально?пример по поиску в двух таблицах
#8
6 марта 2017 в 19:49
А если всё это выводить одной пачкой? Нет thread_id — значит item — тема и выводим сам item. Нет контента — выводим дескрипшн.
else {$thread = $item;} // скрытый текст $hidetext = cmsCore::isControllerExists('hidetext') ? cmsCore::getController('hidetext') : false; $item['content_html'] = $hidetext->parseHide($item['content_html']); } } 'title' => $thread['title'], 'date_pub' => $item['date_pub'], 'image' => '' ));