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!

Était-ce utile?

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.

enter image description here

pas:

  1. Créez votre classe personnalisée et héritez-en de SearchBoxEx
  2. Créer une nouvelle propriété QueryPromptString
  3. Définir un contrôle sécurisé
  4. 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>
Licencié sous: CC-BY-SA avec attribution
Non affilié à sharepoint.stackexchange
scroll top