eZ Find: filtrer par date

eZ Find: filtrer par date

eZ Find est certainement le seul moyen simple de faire des recherches complexes avec le schéma de données d’eZ Publish.

Faire un filtre entre 2 dates est plus complexe qu’il n’y parait, le format de date utilisé dans le stockage est différents de celui attendu par eZFind. Explications.

La date est stocké sous forme de timestamp dans le data_map. Par contre, Solr attend une date aux format ISO 8601.

Par défaut, il n’existe pas d’opérateur capable de convertir un timestamp en ce format de dates spécifiques. La création d’un petit opérateur de template très simple va résoudre notre problème :

<?php
private function php_date($format, $timestamp) { 
    return date($format, $timestamp); 
} 

Le format c permet de faire la correspondance entre ces 2 format de dates. Ainsi, pour obtenir par exemple l’ensemble des articles publiés depuis le début de l’année, on aura un code du genre

{def $dateBegin = php_date('c', makedate(1, 1 , 2009))} 
{def $filter = concat('article/date_publication: [', $dateBegin, 'Z TO *]')}
{def $articles = fetch(ezfind, search, hash( query, '...', filter, $filter )}
{foreach $articles as $article} 
    ... 
{/foreach} 
comments powered by Disqus
A la une
  • Rencontre du numérique 2019 - Nîmes
  • référencement naturel d'un hôtel
  • Développeur eZ Platform
  • Tech lead Symfony
  • Expert Qualité Web

Copyright - Sylvain FIX

2009 - 2019