Настройка текста SmallSearchInputBox по умолчанию
-
09-12-2019 - |
Вопрос
Я пытаюсь настроить текст, отображаемый в поле поиска моего сайта SharePoint.Значение по умолчанию - "Поиск по этому сайту...".
Я нашел несколько статей, в которых объясняется, как это сделать (путем переопределения элемента управления делегатом с меньшим порядковым номером), и это работает нормально.
Мой XML выглядит следующим образом :
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
<Control
Id="SmallSearchInputBox"
Sequence="10"
ControlClass="Microsoft.SharePoint.Portal.WebControls.SearchBoxEx" ControlAssembly="Microsoft.Office.Server.Search, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c">
<Property Name="GoImageUrl">/_layouts/images/gosearch15.png</Property>
<Property Name="GoImageUrlRTL">/_layouts/images/gosearchrtl15.png</Property>
<Property Name="GoImageActiveUrl">/_layouts/images/gosearchhover15.png</Property>
<Property Name="GoImageActiveUrlRTL">/_layouts/images/gosearchrtlhover15.png</Property>
<Property Name="DropDownMode">ShowDD</Property>
<Property Name="SearchResultPageURL">/_layouts/osssearchresults.aspx</Property>
<Property Name="ScopeDisplayGroupName"></Property>
<Property Name="FrameType">None</Property>
<Property Name="QueryPromptString">DO A SEARCH!</Property>
</Control>
</Elements>
Это работает нормально, в окне поиска отображается "ВЫПОЛНИТЬ ПОИСК!", как и ожидалось.Однако я хочу, чтобы эта строка была локализована.Когда я это делаю
<Property Name="QueryPromptString">$Resources:MyResourceFile,CustomText;</Property>
В окне поиска отображается $Resources:MyResourceFile,CustomeText;буквально, вместо того чтобы оценивать это.
Как мне поместить туда локализованные строки?
Спасибо!
Решение
Линия <Property Name="QueryPromptString">$Resources:MyResourceFile,ResourceKey</Property>
для меня это прекрасно.Я думаю, что вам следует проверить свой файл ресурсов.Этот файл должен содержать ResourceKey, который вы пытаетесь использовать в этом свойстве.
Если вы используете правильный файл ресурсов и ключ, элемент управления поиском отображает текст в зависимости от языка сайта.Если вы хотите динамически изменять этот текст, как вы видите на рисунке ниже, вам следует выполнить несколько более сложных шагов.
шаги:
- Создайте свой пользовательский класс и унаследуйте его от SearchBoxEx
- Создайте новое свойство QueryPromptString
- Определите безопасный контроль
- Создать делегированный элемент управления
код для шагов:
public class SearchBox : SearchBoxEx
{
[Browsable(false)]
public new string QueryPromptString
{
get
{
return base.QueryPromptString;
}
set
{
string fullKey = string.Format("$Resources:{0}", value);
base.QueryPromptString = SPUtility.GetLocalizedString(fullKey, null, (uint)Thread.CurrentThread.CurrentUICulture.LCID);
}
}
}
<Control Id="SmallSearchInputBox"
Sequence="10"
ControlClass="LocalizedSearch.SearchBox"
ControlAssembly="LocalizedSearch, Version=1.0.0.0, Culture=neutral, PublicKeyToken=71df3f77c17b7c69">
<Property Name="GoImageUrl">/_layouts/images/gosearch15.png</Property>
<Property Name="GoImageUrlRTL">/_layouts/images/gosearchrtl15.png</Property>
<Property Name="GoImageActiveUrl">/_layouts/images/gosearchhover15.png</Property>
<Property Name="GoImageActiveUrlRTL">/_layouts/images/gosearchrtlhover15.png</Property>
<Property Name="DropDownMode">ShowDD</Property>
<Property Name="SearchResultPageURL">/_layouts/osssearchresults.aspx</Property>
<Property Name="ScopeDisplayGroupName"></Property>
<Property Name="FrameType">None</Property>
<Property Name="QueryPromptString">filename,key</Property>
</Control>