Filtrer/Parser les données

Il est possible de revenir sur les valeurs des variables passés à une vue avant que celle-ci ne soit rendu.

Cela permet de pouvoir revenir sur le fonctionnement de chaque vue. Un exemple d’utilisation est lorsqu’il y a beaucoup de traitements de données à faire, ce traitement peut alors être fait en dehors de la vue afin que celle-ci se concentre sur l’affichage final.

Les parser se trouvent dans le dossier « parser » des thèmes, et est organisé de façon similaire aux vues.
Il ne peut y avoir qu’un parser par vue. si il y a deux déclarations, la plus récente efface l’ancienne.

Vous trouverez tous les parser en place ici : https://git.fas-bfct.fr/theme/tree/master/fas-theme/parser/

 

Exemple : La vue global d’une page recette

  • La vue : https://git.fas-bfct.fr/theme/blob/master/fas-theme/views/single/recette/type1.php
  • Le parser : https://git.fas-bfct.fr/theme/blob/master/fas-theme/parser/single/recette.php

Ici, les metas données sont affichés dans un format différent que celui renseigné dans le back office. Plutôt que de retravailler la donnée dans la vue, on vient la retravailler dans le parser.

PHP
<?php
add_parser('single/recette/type1','parserSingleRecette');
add_parser('single/recette/type2','parserSingleRecette');
add_parser('single/recette/type3','parserSingleRecette');

function parserSingleRecette($vars){

$metasList = array('prep_time','cook_time','count');
$vars['metas'] = array();
$vars['has_metas'] = false;
$vars['metas_parsed'] = array();

foreach($metasList as $metaName){
$vars['metas'][$metaName] = get_field('recette_'.$metaName);
if($vars['metas'][$metaName]){
$vars['has_metas'] = true;
}
}

if($vars['metas']['prep_time']){
if($vars['metas']['prep_time'] > 60){
$vars['metas_parsed']['prep_time'] = floor($vars['metas']['prep_time']/60).'h'.($vars['metas']['prep_time']%60);
}else{
$vars['metas_parsed']['prep_time'] = $vars['metas']['prep_time'].' min';
}
}
if($vars['metas']['cook_time']){
if($vars['metas']['cook_time'] > 60){
$vars['metas_parsed']['cook_time'] = floor($vars['metas']['cook_time']/60).'h'.($vars['metas']['cook_time']%60);
}else{
$vars['metas_parsed']['cook_time'] = $vars['metas']['cook_time'].' min';
}
}


return $vars;
}

Ajouter un parser

Il suffit de créer un fichier dans le dossier parser du theme, et d’y ajouter l’execution de « add_parser », en mentionnant la vue, et une fonction de filtre à executer tel que ci-dessus.

ATTENTION : Cela va revenir sur les traitements fait dans le thème de base.
Il est conseiller de reprendre le code du parser original, et l’adapté au besoin.