Afficher les annonces à partir d’une autre collection de sites

C’est toujours un enjeu de vouloir afficher des données de liste ou de bibliothèque provenant d’une autre collection de sites. Pourtant c’est une fonction tellement demandée.

Alors quelles sont les options dans SharePoint 2013?

  • Le WebPart de requêtes de contenu (CQWP) n’est pas une option car il ne fonctionne que dans la même collection
  • Le flux RSS – je dois explorer ceci dans le futur…
  • Le WebPart de recherche de contenu (CSWP) – seulement disponible dans SharePoint Server Enterprise 2013
  • Le WebPart Résultat de la recherche – c’est ce que je vais expérimenter dans cet article

J’aimerais afficher seulement les annonces non expirées dans un format tout simple: titre, corps, date de modification, personne qui a modifiée. J’ai rencontrée plusieurs embuches.

Voici la liste d’annonces (WebPart montrant l’affichage Synthèse) dans l’autre collection de sites:

annonces-synthese

1) Dans une page, ajoutez le WebPart Résultat de la recherche.

2) Modifiez le WebPart et inscrivez la requête suivante:

(path:http://webapp/sites/site/Lists/annonces/) AND contentclass:sts_listitem NOT ExpirationTime:1900-01-01..{Today}

Explication:

contentclass:sts_listitem > pour ne pas trouver les affichages

* Je n’ai pas trouvé immédiatement la propriété ExpirationTime car le champs se nomme Expire.

* Je n’ai pas trouvé comment ajouter la requête ExpirationTime>={Today} OR ExpirationTime est vide. http://www.itunity.com/article/filter-empty-values-search-693

* Pour qu’une annonce n’apparaisse plus dans l’affichage Synthèse, il faut y inscrire une date d’expiration de la veille. Sinon on aurait pu écrire {Today-1}.

3) Si vous essayez de trier par la requête cela ne fonctionnera pas 😦

Merci http://habaneroconsulting.com/insights/why-are-my-sort-orders-not-working-in-my-sharepoint-2013-search-results-web-part

Donc j’ai changé l’ordre avec JSON en mettant le tri par date avant le tri par pertinence.

sort-json

Voici le résultat jusqu’à présent:WebPartRechercheRequete

4) Changez les paramètres du WebPart Résultat de la recherche comme ceci:

SearchWP-parametres

5) Et maintenant, c’est le moment de jouer avec les modèles d’affichage de recherche (display template). Modèle d’affichage d’élément = Result type for item

À ce propos, lisez Propriétés gérées dans le modèle d’affichage du résultat de la recherche.

J’ai fait une copie de Item_Default.html (Élément par défaut). Où j’ai ajouté ‘DiscussionPost’:’DiscussionPost’

* Pourquoi DiscussionPost et non Body?

J’ai remplacé _#=ctx.RenderBody(ctx)=#_ par les quatre lignes suivantes:

<div><b>_#= ctx.CurrentItem.Title =#_ </b></div>
<div>_#= ctx.CurrentItem.DiscussionPost =#_ </div>
<div>_#= ctx.CurrentItem.LastModifiedTime =#_ </div>
<div>_#= ctx.CurrentItem.DisplayAuthor =#_ </div>

Et voici ce que cela donne:

Search-display-annonce

6) De mieux en mieux. Et voilà pour arranger le format de la date:

<div> _#= new Date(ctx.CurrentItem.LastModifiedTime).format(« yyyy-MM-dd HH:mm ») =#_ </div>

search5

7) Que se passe-t-il lorsque toutes les annonces sont expirées?

aucun-recherche

Il faudrait éliminer ou modifier ce message.

Voici le message sur la page avec le WP d’annonces:

aucune-annonce

J’ai fait une copie de Control_SearchResults.html (Résultat par défaut) parmi les modèles d’affichage de la recherche. Modèle d’affichage de contrôle des résultats = Results Control Display Template.

Dans la section if(ctx.ClientControl.get_shouldShowNoResultMessage()){, j’ai mis en commentaire plusieurs lignes.

<!– <div class= »ms-textLarge ms-srch-result-noResultsTitle »>_#=$htmlEncode(Srch.Res.rs_NoResultsTitle) =#_</div>
<div>_#= $htmlEncode(Srch.Res.rs_NoResultsSuggestions) =#_</div> –>

<div class= »ms-textLarge ms-srch-result-noResultsTitle »>Aucune annonce.</div>

<!–  <li>_#= $htmlEncode(Srch.Res.rs_NoResultsSpelling) =#_</li>
<li>_#= $htmlEncode(Srch.Res.rs_NoResultsDifferentTerms) =#_</li>
<li>_#= $htmlEncode(Srch.Res.rs_NoResultsGeneralTerms) =#_</li>
<li>_#= $htmlEncode(Srch.Res.rs_NoResultsFewerTerms) =#_</li> –>

<!– <li>_#= $htmlEncode(Srch.Res.rs_NoResultsRefiners) =#_</li> –>

Le message ‘Aucune annonce.’ s’affiche lorsqu’il n’y a pas de résultat.

https://prasadpathak.wordpress.com/2013/07/03/sharepoint-2013-remove-nothing-here-matches-your-search-from-search-results-web-part/

Conclusion:

Finalement, le plus difficile est de trouver les bonnes propriétés.

Délai de 15 min pour voir les annonces apparaître.

Advertisements

Laisser un commentaire

Entrer les renseignements ci-dessous ou cliquer sur une icône pour ouvrir une session :

Logo WordPress.com

Vous commentez à l’aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l’aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l’aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l’aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s