Como criar um campo de pesquisa relacionado à web na lista de ‘páginas’?
-
10-12-2019 - |
Pergunta
Eu tenho o conjunto de sites do SharePoint 'http://microsoft.com/' com poucos sites filhos, por exemplo:http://microsoft.com/news/
Quero criar um campo de pesquisa na lista 'Páginas'.Em cada campo de pesquisa da web filho deve apontar para a lista de 'Páginas' da web atual.
Atualmente todos os meus campos criados estão relacionados à biblioteca 'Páginas' no site raiz.
Eu tenho a definição do campo:
<Field Name="LookupToPages"
ID="{3B5B07A0-68DB-4BF6-AAAE-87B77CE430C6}"
Type="LookupMulti"
DisplayName="Related News"
Group="Intranet.ContentTypes"
Mult="TRUE"
Overwrite="TRUE"
SourceID="http://schemas.microsoft.com/sharepoint/v3"
List="Pages"
ShowField="Title"/>
Este campo foi adicionado ao meu tipo de conteúdo usado na biblioteca Pages:
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
<ContentType ID="0000"
Name="News"
Group="my froup"
Description="Page layout for intranet news."
Inherits="TRUE"
Version="0">
<FieldRefs>
<FieldRef ID="{3B5B07A0-68DB-4BF6-AAAE-87B77CE430C6}" Name="LookupToPages" />
</FieldRefs>
</ContentType>
</Elements>
Tentei adicionar definição de campo ao recurso com escopo 'Site' e 'Web'.Ambos têm os mesmos resultados.Eu só tenho uma coluna de pesquisa que aponta para o site raiz.
Como tornar esse campo relacionado à web?
Solução
Eugênio,
Se esta for uma pesquisa na própria lista (ou seja,você deseja selecionar elementos da mesma lista, como artigos de notícias relacionados), você pode definir a propriedade da lista como "self".
<Field Name="LookupToPages"
ID="{3B5B07A0-68DB-4BF6-AAAE-87B77CE430C6}"
Type="LookupMulti"
DisplayName="Related News"
Group="Intranet.ContentTypes"
Mult="TRUE"
Overwrite="TRUE"
SourceID="http://schemas.microsoft.com/sharepoint/v3"
List="Self"
ShowField="Title"/>
Veja aqui para mais informações:
Outras dicas
Eugênio,
Recomendo que você utilize um receptor de eventos se estiver provisionando a lista ou o tipo de conteúdo por meio de um recurso.
Resumindo, o que você precisa fazer é criar a coluna de pesquisa na lista, obter um link de campo para a nova coluna e, em seguida, adicionar o link de campo ao tipo de conteúdo anexado à lista.
Algo assim deve funcionar, desde que você já tenha os objetos myList, myListCT e pageList:
string fieldName = myList.Fields.AddLookup("Page Column Display Name", pageList.ID, true);
SPField field = myList.Fields.GetFieldByInternalName(fieldName);
SPFieldLink fieldLink = new SPFieldLink(invoiceField);
myListCT.FieldLinks.Add(invoiceFieldLink);
myListCT.Update();
.b
No SP2013, você pode criar uma coluna de pesquisa.No campo "Obter informações de", escolha Páginas do site.
Eu recomendo que você use JSOM porque ele também pode ser usado facilmente no O 365.Você pode usar o método:fieldCollection.addFieldAsXml(fieldSchema, true, SP.AddFieldOptions.addToDefaultContentType);
Veja para mais informações:http://josharepoint.com/2015/12/02/create-a-new-lookup-field-using-jsom-in-sharepoint-2013-office-365/