Custom OssSearchResults.aspx с вариациями в SharePoint 2010
-
16-10-2019 - |
Вопрос
У меня есть издательский сайт SharePoint 2010 с двумя вариантными этикетками.
На уровне сбора сайтов, в соответствии с настройками поиска, поиск настроен следующим образом:
- Поисковый центр коллекции сайтов: Не используйте пользовательские области
- Поиск по поиску сайтов выпадает в режим: Не показывайте выпадающие прицелы и по умолчанию в контекстуальную область
- Страница результатов поиска сайтов: /_layouts/osssearchresults.aspx
Когда я выполняю поиск, страница результатов поиска - at/;variation/_layouts/osssearchresults.aspx. Все хорошо до сих пор.
Я добавил копию Osssearchresults.aspx к моему решению и переименован в его Myosssearchresults.aspx а затем изменил Страница результатов поиска сайтов Настройка на /_layouts/myosssearchresults.aspx.
Теперь, когда я выполняю поиск, результаты отображаются по адресу /_Layouts/myosssearchresults.aspx - на уровне сбора сайтов, выше моих вариантов.
Что мне нужно сделать, чтобы убедиться, что моя пользовательская версия osssearchresults.aspx показала результаты поиска на уровне вариации?
Благодарю вас!
Решение
Я понимаю, что это не идеальный подход для реализации поиска на публичном веб -сайте SharePoint, но я хотел разместить его на случай, если другие люди столкнутся с тем же вопросом.
Я создал копию osssearchresults.aspx и сделал для нее необходимые конфигурации стиля и веб -части. Мне пришлось сделать еще несколько вещей, чтобы заставить это правильно работать в рамках структуры вариаций и на анонимном сайте:
1. Установите страницу результатов поиска в коллекции сайтов на ../layouts/search.aspx
Обратите внимание на «..», это гарантирует, что моя страница результатов поиска по -прежнему появляется в моем варианте, например, если я ищу из http://www.domain.com/en/subsite, результаты в http://www.domain.com/en/subsite/_layouts/search.aspx.
Если вы не добавите «..» в конфигурацию, URL будет http://www.domain.com/en/subsite/pages/_layouts/search.aspx, что, очевидно, не сработает.
2. Измените код, стоящий за классом для search.aspx, чтобы унаследовать от UnsecuredLayoutsPageBase
и установить его AllowAnonymousAccess
собственность к истинному.
public partial class Search : UnsecuredLayoutsPageBase
{
protected override bool AllowAnonymousAccess
{
get
{
return true;
}
}
}
Без этого анонимные пользователи не смогут получить доступ к странице результатов поиска.
3. Изменить поиск и настройки доступности в автономном режиме
Убедитесь, что «всегда индексируйте все веб -части на этом сайте», в противном случае анонимные пользователи не видят результатов.