Опубликовано: 5 июня 201213 г Есть раздел форума, в нём сообщения. Задача - как скрыть сообщения и темы в этом разделе в результатах поиска? Тобишь при заходе в раздел видны эти сообщения, но в результатах поиска - нет.
Опубликовано: 5 июня 201213 г Во первых, сообщения из закрытых разделов для этого пользователя не будут участвовать в поиске, во вторых - при поиске можно выбрать форумы по которым производится поиск.
Опубликовано: 5 июня 201213 г Плюс в "системных настройках > поиск" есть поле "исключить следующие форумы" для списка новых сообщений.
Опубликовано: 5 июня 201213 г Автор Во первых сообщения из закрытых разделов для этого пользователя не будут участвовать в поиске, во вторых при поиске можно выбрать форумы по которым производится поиск.Вы не так поняли меня. Скажем есть раздел и юзер который пишет в нём. Затем он скажем хочет найти свои сообщения через поиск - но в поиске не должно быть результатов с этого раздела. Вот как например есть настройка поиска:Просмотр новых публикаций: игнорирование разделовВыберите разделы, публикации из которых не будут отображаться в результатах "просмотра новых публикаций". Зажав клавишу Ctrl можно выбрать несколько разделов.Такое же хотелось реализовать и по всем структурам поиска.
Опубликовано: 5 июня 201213 г А если мне нужен поиск по этому форуму? А вот если он мне не понадобится, я его просто исключу в опциях поиска. Имхо, бессмысленная какая-то затея. Либо человек не умеет пользоваться поиском.Наверное без хука такого не сделать. Хотя я с настройками поиска не очень знаком, может быть что-то такое и есть.
Опубликовано: 5 июня 201213 г Автор А если мне нужен поиск по этому форуму? А вот если он мне не понадобится, я его просто исключу в опциях поиска. Имхо, бессмысленная какая-то затея. Либо человек не умеет пользоваться поиском.Долго объяснять зачем это мне нужно. Просто запускаю один проект. Нужно чтоб чтоб пользователь не смог находить посредством поиска ни свои ни чужие сообщения определённого раздела, хотя в этом разделе может писать. Наверное без хука такого не сделать. Хотя я с настройками поиска не особо знаком, может быть что-то такое и есть.Не находил.
Опубликовано: 5 июня 201213 г не смог находить посредством поиска ни свои ни чужие сообщения определённого разделаДля этого придется полностью отключить поиск по этому разделу. Если в настройках ничего нет, то только хуком.
Опубликовано: 5 июня 201213 г Автор Для этого придется полностью отключить поиск по этому разделу. Если в настройках ничего нет, то только хуком.В том то и дело что нельзя нигде раздел выключить из поиска полностью.
Опубликовано: 5 июня 201213 г Пароль на раздел поставьте. Поиск на запароленных разделах не работает :)
Опубликовано: 5 июня 201213 г Автор Пароль на раздел поставьте. Поиск на запароленных разделах не работает :) О точно. Сейчас попробую :)
Опубликовано: 5 июня 201213 г Вообще вот как определяется список форумов, где работает поиск: /** * Fetch forum IDs safe to use when searching, etc * * @param int Optional member ID, if no member ID is passed, it'll use current member * @param array Array of ids to skip * @return array Array of "good" IDs */ public function fetchSearchableForumIds( $memberId=null, $skipIds=array() ) { $forumIdsOk = array(); $member = ( $memberId === null || $memberId == $this->_memberData['member_id'] ) ? $this->_memberData : IPSMember::load( $memberId, 'core' ); $posts = intval( $member['posts'] ); /* Ensure this has been set up */ if ( ! is_array( $this->forum_by_id ) OR ! count( $this->forum_by_id ) ) { $this->strip_invisible = 1; $this->forumsInit(); } /* Get list of good forum IDs */ foreach( $this->forum_by_id as $id => $data ) { /* Тут проверяется маска доступа пользователя - может ли он вообще смотреть форум */ if ( ! $this->registry->permissions->check( 'read', $data ) OR ! $this->registry->permissions->check( 'view', $data ) ) { continue; //пропуск номера } /* Тут проверяется, не стоит ли на форуме пароль на доступ */ if ( ! $this->forumsCheckAccess( $id, 0, 'forum', array(), true ) ) { continue; //пропуск номера } /* Тут проверяется, может ли группа пользователя писать посты или видеть чужие посты в этом разделе, при этом не являясь супермодером или модером раздела */ if ( ( ! $data['sub_can_post'] OR ! $data['can_view_others'] ) AND !$this->memberData['g_is_supmod'] AND !isset( $this->memberData['forumsModeratorData'][ $id ] ) ) { continue; } /* Тут проверяется, набрал ли пользователь минимально необходимое количество постов для просмотра раздела */ if ( $data['min_posts_view'] > $posts AND !$member['g_is_supmod'] ) { continue; } /* Тут выкидываются форумы, которые пользователь исключил сам в расширенных условиях поиска */ if ( is_array( $skipIds ) AND count( $skipIds ) ) { if ( in_array( $id, $skipIds ) ) { continue; } } $forumIdsOk[] = $id; } return $forumIdsOk; } Теоретически можно попробовать перегрузить этот метод хуком, но с хуками, модифицирующими классы приложений, все всегда крайне ненадежно и смутно. Ну или просто вхардкодить подмешивание к $skipIds массива нужных вам id-шников - /admin/applications/forums/sources/classes/forums/class_forums.php. Хотя, если пароль на разделе устраивает - это самый простой вариант :) UPD. Расписал выше в посте в комментариях к коду подробнее, что к чему.
Опубликовано: 5 июня 201213 г Автор Хотя, если пароль на разделе устраивает - это самый простой вариант :)С паролем тоже никак. После ввода пароля через поиск находишь сообщения кто писал в разделе. Теоретически можно попробовать перегрузить этот метод хуком, но с хуками, модифицирующими классы приложений, все всегда крайне ненадежно и смутно. Ну или просто вхардкодить подмешивание к $skipIds массива нужных вам id-шников - /admin/applications/forums/sources/classes/forums/class_forums.phpЭтого я не знаю как сделать. А если посредством if-а в шаблоне поиска?
Опубликовано: 5 июня 201213 г А если посредством if-а в шаблоне поиска? Испортится постраничная разбивка. Пустые, неполные страницы результатов поиска нужны? :) Могу попробовать написать хук.
Опубликовано: 5 июня 201213 г Автор Испортится постраничная разбивка. Пустые, неполные страницы результатов поиска нужны? :)Не критично :) Могу попробовать написать хук.Было бы хорошо. Тем более это будет первый хук в таком роде.
Опубликовано: 5 июня 201213 г Все оказалось на удивление просто: ri_sforums.xml Установите хук, в системных настройках в разделе "Hooks" появится группа настроек "Searchable forums". Там в единственном поле через запятую укажете id форумов, которые нужно исключить из поиска. Отпишитесь, как оно.
Опубликовано: 5 июня 201213 г Автор Установил. При заходе на страницу поиска выдаёт вот такое:Strict Standards: Declaration of class_forums_searchable::fetchSearchableForumIds() should be compatible with that of class_forums::fetchSearchableForumIds() in /var/www/imtw.ru/hooks/class_forums_searchable_b86902c278a35533dbad16b7b57f5eee.php on line 17
Есть раздел форума, в нём сообщения. Задача - как скрыть сообщения и темы в этом разделе в результатах поиска? Тобишь при заходе в раздел видны эти сообщения, но в результатах поиска - нет.