Текст из записей на стене пользователя не участвует в поиске

#1 30 октября 2022 в 17:53

Здравствуйте!

Можно ли сделать как-то, чтобы поиск по сайту искал текст во всех записях профиля пользователя?

И вообще возможно ли это?

#2 30 октября 2022 в 19:37

Здравствуйте!

Можно ли сделать как-то, чтобы поиск по сайту искал текст во всех записях профиля пользователя?

И вообще возможно ли это?

bratok191

добавить индекс в таблицу базы, используя допустим phpmyadmin sql запросом:

  1. ALTER TABLE `cms_wall_entries` ADD FULLTEXT( `content`);
  2.  

в /system/controllers/wall/hooks/fulltext_search.php создать файл fulltext_search.php с содержимым:

  1. <?php
  2.  
  3. class onWallFulltextSearch extends cmsAction {
  4.  
  5. public function run($search_controller) {
  6.  
  7. $name = 'wall';
  8. $sources[$name] = 'Запись на стене';
  9. $match_fields[$name] = array('content');
  10. $select_fields[$name] = array('id', 'content', 'user_id', 'date_pub');
  11. $filters[$name] = array();
  12. $table_names[$name] = 'wall_entries';
  13.  
  14. return [
  15. 'name' => $name,
  16. 'sources' => $sources,
  17. 'table_names' => $table_names,
  18. 'match_fields' => $match_fields,
  19. 'select_fields' => $select_fields,
  20. 'filters' => $filters,
  21. 'item_callback' => function ($item, $model, $sources_name, $match_fields, $select_fields) {
  22.  
  23. $fields = [];
  24.  
  25. foreach ($match_fields as $match_field) {
  26. if ($match_field === 'title') {
  27. continue;
  28. }
  29. $fields[$match_field] = $item[$match_field];
  30. }
  31.  
  32. return array_merge($item, [
  33. 'url' => href_to('users', $item['user_id']).'?wid='.$item['id'],
  34. 'title' => 'Запись со стены',
  35. 'fields' => $fields,
  36. 'date_pub' => $item['date_pub'],
  37. 'image' => ''
  38. ]);
  39. }
  40. ];
  41.  
  42. }
  43.  
  44. }

в панели обновить список событий компонентов:

админка > компоненты > события ( /admin/controllers/events) 

Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.