Pergunta

Vamos dizer que eu tenho sub-sites em meu "site principal" (o que não é raiz do conjunto de sites), como a Casa de sub-site, Sobre, entre em Contato.O "site principal" é, na verdade, a linguagem variação de outro site.Em outra palavras, eu tenho estrutura como esta

 - http://mysite -> this is root SPWeb
 - http://mysite/de-de -> this is "root variation"
 - http://mysite/de-de/Lists/myList -> list I'd like to get
 - http://mysite/de-de/Home/History -> sub-site in de-de variation from where I'd like to get "myList"

O que eu gostaria de fazer é algo como o seguinte

var rootOfVarSPWeb = SP.ClientContext.get_current().get_web().get_rootOfVariation()

//get the list
//do other stuff in root of variation

EDITAR:A pergunta é para o SharePoint 2013.

Foi útil?

Solução

Ele, na verdade, depende de qual versão do SharePoint é usado.

Como recuperar Rótulos de Variação através de CSOM?

Desde variações rótulos são armazenados em uma Lista Oculta (MOSS 2007, SPS 2010/2013) podemos recuperá-lo através de CSOM (ECMAScript), como demonstrado abaixo:

function getVaritationLabels(OnSuccess,OnError){
    var ctx = SP.ClientContext.get_current();
    var rootWeb = ctx.get_site().get_rootWeb();
    var webProperties = rootWeb.get_allProperties(); 
    ctx.load(rootWeb); 
    ctx.load(webProperties);
    ctx.executeQueryAsync(
      function() {
         var varLabelsListId = webProperties.get_item('_VarLabelsListId');

         var labelsList = rootWeb.get_lists().getById(varLabelsListId);
         var labelItems = labelsList.getItems(SP.CamlQuery.createAllItemsQuery());

         ctx.load(labelItems);
         ctx.executeQueryAsync(
            function() { 
               var variationLabels = [];

                var e = labelItems.getEnumerator();
                while (e.moveNext()) {
                    var labelItem = e.get_current();
                    variationLabels.push({
                        'IsSource': labelItem.get_item('Is_x0020_Source'),
                        'Language': labelItem.get_item('Language'),
                        'Locale': labelItem.get_item('Locale'),
                        'Title': labelItem.get_item('Title'),
                        'TopWebUrl': labelItem.get_item('Top_x0020_Web_x0020_URL')
                    });  
                }

               OnSuccess(variationLabels);
            },
            OnError
         );

      },
      OnError
    );
}

A função retorna uma matriz de Rótulo de Variação de entradas:

IsSource - Determina se o Rótulo de Variação é definida como a fonte do rótulo

Language - Retorna a Linguagem da Variação Labe

Locale - Retorna a Localidade do Rótulo de Variação

Title - Retorna o título do Rótulo de Variação, que é o único identificador de seqüência de caracteres da etiqueta

TopWebUrl - Retorna a URL do topo de Publicação na Web da hierarquia de variação deste rótulo.

Exemplo:Como determinar a Variação de Casa?

Suponha os seguintes rótulos de variação tiverem sido configuradas

enter image description here

onde

en-us Rótulo de variação corresponde a Variação Casa (Is Source parâmetro é definido para True)

em seguida, a seguinte função irá retornar o Url da hierarquia de variação:

function getVariationLabelSourceUrl()
{
    var sourceUrl = '';
    getVaritationLabels(
      function(variationLabels){
          for(var j = 0; j < variationLabels.length;j++){
              var variationLabel = variationLabels[j];
              if(variationLabel.IsSource){
                  sourceUrl = variationLabel.TopWebUrl.get_url();
                  break;
              }
          }
          console.log('Variation Label Source Url: ' + sourceUrl);
      },
      function(sender,args) {
        console.log('An error occurred: ' + args.get_message());
      }
    );
}

P. S.O demonstrado exemplos de código foi testado com o SharePoint 2013

Licenciado em: CC-BY-SA com atribuição
Não afiliado a sharepoint.stackexchange
scroll top