Créer une facette

Pour créer une nouvelle facette, cela se fait en 3 étapes.

1 – Déclarer la facette

Pour cela, on vient ajouter une facette dans la methode getFacettes de la class TourinsoftFacettes en la surchargeant.
Si vous avez plusieurs facettes à ajouter, il faut les placer en un seul et même endroit.
Afin d’armoniser les différents sites, je conseille de créer un fichier nommé TourinsoftFacetteTheme.php dans le dossier inc du thème.

Voici un exemple :

php
<?php

class TourinsoftFacettesTheme extends TourinsoftFacettes {

public static function getFacettes(){

$facettes = parent::getFacettes();

// "zonegeo" est la clef de la facette (doit être unique)
$facettes['zonegeo'] = array(
'name' => pll__('Zone géographique'), // Nom de la facette au niveau du back office (et front, mais peut être re écrit côté gestion de contenu)
'type' => 'dropdown', // Type de facette à afficher (dropdown, select, checkbox_solo, slider)
'key' => 'zonegeo', // Clef de la facette (doit être unique)
'groupkey' => null,
'method' => 'getZonesGeographiques', // la méthode a utiliser pour récupérer la donnée
);


return $facettes;
}
}

2 – Créer la méthode de récupération des données

Pendant la synchronisation des flux, les données vont être récupéré et stocké afin d’être mis en facette.

Pour cela, on vient ajouter une méthode dans la class TourinsoftObjectParser en la surchargeant.
Vous pouvez ajouter autant de méthode que nécessaires.
Afin d’armoniser les différents sites, je conseille de créer un fichier nommé TourinsoftObjectParserTheme.php dans le dossier inc du thème.

Voici un exemple :

Ici, on regarde si le json de la fiche contient « ZONESGEOGRAPHIQUESs », puis on extrait la valeur ZoneLibelle, en la triant sur l’ordre. Puis on retourne un tableau des différentes valeurs. Seule la valeur est stockée, la clef dans le tableau n’est pas retenu. Il est possible de retravailler la donnée si on le souhaite avant de la retourner. Black listage de valeurs par exemple.

PHP
<?php

class TourinSoftObjectParserTheme extends TourinSoftObjectParser{

public function getZonesGeographiques(){

$result = array();

if ( isset( $this->src['ZONESGEOGRAPHIQUESs'] ) && ! empty( $this->src['ZONESGEOGRAPHIQUESs'] ) && is_array( $this->src['ZONESGEOGRAPHIQUESs'] ) ) {
$zones = $this->src['ZONESGEOGRAPHIQUESs'];
foreach($zones as $zone){
$result[$zone['Ordre']] = $zone['ZoneLibelle'];
}
}

ksort($result);

return $result;
}

}

3 – La mise à jour de la donnée

Afin que ces nouvelles données soient prisent en compte, il faut mettre à jour la donnée.

Pour cela, on ouvre les selections concernés par la facette, on coche la case Forcer la mise à jour de toutes les données et on enregistre.
Cette case à pour effet :

  • De recharger la donnée en base de donnée, même si la fiche n’a pas été mise à jour
  • De vider le cache des facettes en place (journalier)

Attention, cette action n’est prise en compte que toutes les 5 minutes et peut durer plusieurs minutes.