Таким образом возникает задача поиска искомых выражений в метаданных объекта пользователя.
На форуме сообщества ELGG, в большинстве случаев, предлагают переопределять функцию стандартного поиска на свою, и туда уже добавлять дополнительные условия для поиска пользователей. Такое решение будет достаточно простым и не трудоемким, но переопределение стандартных функций может привести к конфликту при работи с другими модулями и плагинами. Поэтому и возник вопрос не о замене функционала поиска, а об его надстройке.
Поразбиравшись со средствами ядра, разобравшись с принципом работы хуков и триггеров, выяснилось, что ELGG обладает достаточно удобными средствами для надстройки процедуры поиска.
В системе уже зарегистрирован хук для поиска по метаданными, которые относятся к стандартным полям профиля (функция search_tags_hook).
Регистрируем новый хук:
register_plugin_hook('search', 'tags',
'mp_search_metadata_hook');По-умолчанию, название доступных для поиска метаданных находяться в массиве $CONFIG->registered_tag_metadata_names, поэтому нам достаточно занести в этот массив имена полей метаданных, по которым необходимо совершать поиск.
Функция поиска по метаданным будет иметь следующий вид:
/**
* Return default results for searches on metadata.
*
* @param unknown_type $hook
* @param unknown_type $type
* @param unknown_type $value
* @param unknown_type $params
* @return unknown_type
*/
function mp_search_metadata_hook($hook, $type, $value, $params) {
global $CONFIG;
$CONFIG->registered_tag_metadata_names = array("поле1","поле2",*...*);
}
Комментариев нет:
Отправить комментарий