2 réponses
le 23 mars 2016

Recherche restreinte à un site

Bonjour,

Comment configurer une restriction des résultats de recherche aux seules données de ce site ?
A relier à une propriété type case à cocher dans l’usine à site.
Possibilité de choix des sites distants remontants au niveau de chaque site ?

Recherche restreinte à un site

Camille LEBUGLEle 31 mars 2016 par Camille LEBUGLE

Bonjour,

Il est possible de restreindre une recherche aux données d'un site (ou multi-diffusées dans un site) en ajoutant à la requête la liste des codes rubriques du site voulu.
Ci dessous un exemple :

//Récupération des codes rubriques enfant du site courant.
//Cette liste est utilisée pour filtrer les fiches lors des différentes recherches.
ServiceRubrique serviceRubrique = ServiceManager.getServiceForBean(RubriqueBean.class);
List<RubriqueBean> listeRubriqueEnfant = serviceRubrique.getAllChilds(_ctx.getInfosSite().getCodeRubrique());
List<String> listeCodeRubriquePublication = new ArrayList<>();
listeCodeRubriquePublication.add(_ctx.getInfosSite().getCodeRubrique());
for(RubriqueBean rubriqueBean:listeRubriqueEnfant){
listeCodeRubriquePublication.add(rubriqueBean.getCode());
}

Si vous voulez filtrer sur un autre site, il faut alors rechercher les rubriques enfants à partir de la rubrique de tête du site souhaité.
Cette liste de rubrique peut ensuite être passée à la requête de recherche en filtrant à deux niveaux :
  • sur le code rubrique de la fiche
  • sur la table RUBRIQUEPUBLICATION dans le cas où les données sont multi-publiées
select * from Fiche T1  
LEFT JOIN RUBRIQUEPUBLICATION T2 ON T1.CODE = T2.CODE_FICHE_ORIG
WHERE ( T1.CODE_RUBRIQUE IN ( listeCodeRubrique ) OR ( T2.RUBRIQUE_DEST IN ( listeCodeRubrique ) AND T2.LANGUE_FICHE_ORIG = langue ) ) AND T1.ETAT_OBJET = '0003'

Cordialement,

Camille

Recherche restreinte à un site

Camille LEBUGLEle 05 avril 2016 par Camille LEBUGLE

Bonjour,

il est de plus possible de restreindre la recherche front-office en surchargeant la JSP recherche_simple.jsp.
Dans cette JSP deux champs permettent d'exécuter la recherche en ne remontant que les données d'un site passé en paramètre :
Tout d'abord il faut passer au paramètre CODE_RUBRIQUE le code rubrique du site souhaité :

<input type="hidden" name="CODE_RUBRIQUE" value="<%=rubriqueSite.getCode()%>"

Puis passer "true" au paramètre SEARCH_SOUSRUBRIQUES pour chercher sur toutes les sous-rubriques du site.

<input type="hidden" name="SEARCH_SOUSRUBRIQUES" value="true" />

Cordialement,

Camille Lebugle

Valider Annuler