Pregunta

Estoy tratando de personalizar el texto que se muestra en el cuadro de búsqueda de mi sitio de SharePoint.El valor predeterminado es "Buscar en este sitio ...".

Encontré una serie de artículos que explican cómo hacerlo (anulando el control del delegado con un número de secuencia más bajo) y funciona bien.

MI XML se ve así:

<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>

Esto funciona bien, el cuadro de búsqueda muestra "¡Haz una búsqueda!"como se esperaba.Sin embargo, quiero esta cadena localizada.Cuando hago

<Property Name="QueryPromptString">$Resources:MyResourceFile,CustomText;</Property>

El cuadro de búsqueda muestra $ Recursos: MyResourceFile, CustometeText;literalmente en lugar de evaluarlo.

¿Cómo pongo cadenas localizadas allí?

¡Gracias!

¿Fue útil?

Solución

La línea <Property Name="QueryPromptString">$Resources:MyResourceFile,ResourceKey</Property> wokrs bien para mí. Creo que debe revisar su archivo de recursos.Este archivo debe contener un teclado de recursos que intenta usar en esta propiedad.

Si usa el archivo de recursos y la clave correctos, el control de búsqueda muestra el texto depende del idioma del sitio.Si desea cambiar este texto dinámicamente como se ve en la imagen de abajo, debe hacer algunos pasos más complejos.

ingrese la descripción de la imagen aquí

pasos:

  1. Crea tu clase personalizada y heredarlo de SearxboxEx
  2. Crear una nueva propiedad de QueryPromptTring
  3. Definir el control seguro
  4. Crear control delegado

    Código para pasos:

    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>
    

Licenciado bajo: CC-BY-SA con atribución
scroll top