Personnalisation du texte par défaut de SmallSearchInputBox
-
09-12-2019 - |
Question
J'essaie de personnaliser le texte affiché dans le champ de recherche de mon site SharePoint.La valeur par défaut est "Rechercher sur ce site...".
J'ai trouvé un certain nombre d'articles qui expliquent comment procéder (en remplaçant le contrôle délégué par un numéro de séquence inférieur) et cela fonctionne bien.
Mon XML ressemble à ceci :
<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>
Cela fonctionne bien, la zone de recherche affiche "Faites une recherche!" comme prévu.Cependant, je veux que cette chaîne soit localisée.Quand je fais
<Property Name="QueryPromptString">$Resources:MyResourceFile,CustomText;</Property>
La zone de recherche affiche $Resources:MyResourceFile,CustomeText ;littéralement au lieu de l'évaluer.
Comment y mettre des chaînes localisées ?
Merci!
La solution
La ligne <Property Name="QueryPromptString">$Resources:MyResourceFile,ResourceKey</Property>
ça marche bien pour moi.Je pense que vous devriez vérifier votre fichier de ressources.Ce fichier doit contenir ResourceKey que vous essayez d'utiliser dans cette propriété.
Si vous utilisez le fichier de ressources et la clé corrects, le contrôle de recherche affiche le texte en fonction de la langue du site.Si vous souhaitez modifier ce texte de manière dynamique comme vous le voyez dans l'image ci-dessous, vous devez suivre des étapes plus complexes.
pas:
- Créez votre classe personnalisée et héritez-en de SearchBoxEx
- Créer une nouvelle propriété QueryPromptString
- Définir un contrôle sécurisé
- Créer un contrôle délégué
code pour les étapes :
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>